Ir ao conteúdo
  • Cadastre-se

Leonardo C. Lima

Membro Júnior
  • Posts

    4
  • Cadastrado em

  • Última visita

posts postados por Leonardo C. Lima

  1. Boa tarde pessoal,

     

    Fiz o teste desse sistema no proteus e parece ter funcionado, mas ao montar, o relé permanece ligando a bomba, será problema no código ou nessa montagem de circuito?

     

    5b12ba172e0dd_WhatsAppImage2018-05-27at23_52_07.thumb.jpeg.7f40d4bbcf41456f59a4fcfa356e196a.jpeg

     

    #include <LiquidCrystal.h>
    #include <SPI.h>

    int BOMBA = 3; 
    int BUZZER = 4; 
    int LedVerde = 5;
    int LedAmarelo = 6; 
    int LedVermelho = 7; 
    int SENSOR_CAIXA1 = A0; int SENSOR_CAIXA2 = A1; 
    int SENSOR_RESERVATORIO1 = A2; int SENSOR_RESERVATORIO2 = A3;  
    double cont = 0;
    LiquidCrystal lcd(8,9,10,11,12,13); 

    void setup() {

      pinMode(LedVermelho,OUTPUT);
      pinMode(LedAmarelo,OUTPUT);
      pinMode(SENSOR_CAIXA1,INPUT);
      pinMode(SENSOR_CAIXA2,INPUT);
      pinMode(SENSOR_RESERVATORIO1,INPUT);
      pinMode(SENSOR_RESERVATORIO2,INPUT);
      pinMode(BOMBA,OUTPUT);
      pinMode(LedVerde,OUTPUT);
      pinMode(BUZZER,OUTPUT);
      lcd.begin(16, 2);
      delay(100);
      
    }

    void EscreverLCD() { // Escrever na primeira linha do LCD.

        lcd.clear();
        lcd.setCursor(0,0);
    }

    void ModuloALOFF() { // Módulo de alerta desligado.

      digitalWrite(LedVerde,LOW);
      digitalWrite(LedAmarelo,LOW);
      digitalWrite(LedVermelho,LOW);
      digitalWrite(BUZZER,LOW);
      
    }

    void ModuloALVERDE(){ // Módulo de alerta com bomba com apenas o LED verde on.

      digitalWrite(LedVerde,HIGH);
      digitalWrite(LedAmarelo,LOW);
      digitalWrite(LedVermelho,LOW);
      digitalWrite(BUZZER,LOW);
      digitalWrite(BOMBA,LOW);
    }
    void ModuloALVER(){ // Módulo de alerta com bomba com apenas o LED vermelho on.

      digitalWrite(LedVerde,LOW);
      digitalWrite(LedAmarelo,LOW);
      digitalWrite(LedVermelho,HIGH);
      digitalWrite(BUZZER,LOW);
      digitalWrite(BOMBA,LOW);
    }

    void CaixaCheia() { // Caixa cheia.

      if (digitalRead(SENSOR_CAIXA2)==HIGH) { // Condição para ativamento do LED VERDE e caixa de texto no display LCD: "Caixa cheia".
        ModuloALVERDE();
        EscreverLCD();
        lcd.print("Caixa cheia");
        delay(2000);
      }
    }

    void CaixaVazia(){ // Caixa vazia

      if( digitalRead(SENSOR_CAIXA2)==LOW && digitalRead(SENSOR_CAIXA1)==LOW ){ 
        EscreverLCD();
        lcd.print("Caixa vazia");
      }
    }

    void TempoReabastecido(){ // Indica o tempo final de reabastecimento da caixa completa.

      for(;;) {
        delay(1000);
        cont = cont +1;
        if( digitalRead(SENSOR_CAIXA2)==HIGH && digitalRead(SENSOR_CAIXA1)==HIGH ){ // Condição que indica o tempo da caixa reabastecida completamente.
          ModuloALVERDE();
          cont = cont/60;
          EscreverLCD();
          lcd.print("C. Reabastecida");
          lcd.setCursor(0,1);
          lcd.print("tempo: ");
          lcd.print(cont);
          lcd.print(" min");
          delay(1000);
          break;
        }
        if( digitalRead(SENSOR_RESERVATORIO1)==LOW) { // Condição que para o reabastecimento.
          ModuloALVER();
          EscreverLCD();
          lcd.print("Reserva Vazia");
          delay(1000);
          break;
        }
      }
    }

    void Reabastecer() { // Ativa a bomba para reabastecer

      EscreverLCD();
      lcd.print("Reabastecendo...");
      digitalWrite(LedAmarelo,HIGH);
      digitalWrite(BOMBA,HIGH);
      digitalWrite(BUZZER,HIGH);
      digitalWrite(LedVerde,LOW);
      digitalWrite(LedVermelho,LOW);
    }

    void AbastecerCaixa(){ // Liga a bomba para abastecer a caixa.

      cont = 0;
        if( digitalRead(SENSOR_RESERVATORIO2)==HIGH){
          Reabastecer();
          TempoReabastecido();
      }
    }

    void VerificarNivel() { // Verifica o nivel do reservatorio e da caixa informando no display LCD. 

      CaixaCheia();
      CaixaVazia();
      if (digitalRead(SENSOR_RESERVATORIO2)==HIGH) { // Condição para caixa de texto no display LCD: "Reservatorio Max". 
        EscreverLCD();
        lcd.print("Reservatorio Max");
      }
      else if ((digitalRead(SENSOR_RESERVATORIO2)==LOW) && digitalRead(SENSOR_RESERVATORIO1)==HIGH) { // Condição para caixa de texto no display LCD: "Reservatorio Min".
        EscreverLCD();
        lcd.print("Reservatorio Min");
      }
      delay(1000);
    }

    void VerificaSensores() { // Verifica todos os sensores e se é necessário reabastecer.

      VerificarNivel();
      if( digitalRead(SENSOR_RESERVATORIO1)==LOW){ // Condição que indica que a reserva está vazia.
        ModuloALVER();
        EscreverLCD();
        lcd.print("Reserva Vazia");
        delay(2000);
      }
      else
      {
        if( digitalRead(SENSOR_CAIXA2)==LOW && digitalRead(SENSOR_CAIXA1)==LOW ){ // Condição que leva a outra função para o abastecimento caso a caixa esteja vazia.
          ModuloALOFF();
          EscreverLCD();
          lcd.print("Caixa vazia");
          AbastecerCaixa();
        }
        else if (digitalRead(SENSOR_CAIXA2)==HIGH  && digitalRead(SENSOR_RESERVATORIO2)==HIGH) { // Condição que verifica os sensores máximos da caixa e do reservatório e se estiverem em nível alto, sistema estará estável
          ModuloALVERDE();
          EscreverLCD();
          lcd.print("Sistema Estavel");
        }
        else if (digitalRead(SENSOR_CAIXA2)==LOW) { // Condição para verificar se a caixa está cheia e se é póssivel reabastecer.
          cont = 0;
          Reabastecer();
          TempoReabastecido();
        }
        delay(3000);
      }
    }

    void loop() { // Faz o loop do programa  verificando sempre pela função verificaSensores.

      VerificaSensores();
      delay(100);
    }

  2. Boa tarde pessoal,

     

    Fiz o teste desse sistema no proteus e parece ter funcionado, mas ao montar, o relé permanece ligando a bomba, será problema no código ou nessa montagem de circuito?

     

    5b12baea26021_WhatsAppImage2018-05-27at23_52_07.thumb.jpeg.99748bdaa9d49dbd347c12710bfb1db6.jpeg

     

    #include <LiquidCrystal.h>
    #include <SPI.h>

    int BOMBA = 3; 
    int BUZZER = 4; 
    int LedVerde = 5;
    int LedAmarelo = 6; 
    int LedVermelho = 7; 
    int SENSOR_CAIXA1 = A0; int SENSOR_CAIXA2 = A1; 
    int SENSOR_RESERVATORIO1 = A2; int SENSOR_RESERVATORIO2 = A3;  
    double cont = 0;
    LiquidCrystal lcd(8,9,10,11,12,13); 

    void setup() {

      pinMode(LedVermelho,OUTPUT);
      pinMode(LedAmarelo,OUTPUT);
      pinMode(SENSOR_CAIXA1,INPUT);
      pinMode(SENSOR_CAIXA2,INPUT);
      pinMode(SENSOR_RESERVATORIO1,INPUT);
      pinMode(SENSOR_RESERVATORIO2,INPUT);
      pinMode(BOMBA,OUTPUT);
      pinMode(LedVerde,OUTPUT);
      pinMode(BUZZER,OUTPUT);
      lcd.begin(16, 2);
      delay(100);
      
    }

    void EscreverLCD() { // Escrever na primeira linha do LCD.

        lcd.clear();
        lcd.setCursor(0,0);
    }

    void ModuloALOFF() { // Módulo de alerta desligado.

      digitalWrite(LedVerde,LOW);
      digitalWrite(LedAmarelo,LOW);
      digitalWrite(LedVermelho,LOW);
      digitalWrite(BUZZER,LOW);
      
    }

    void ModuloALVERDE(){ // Módulo de alerta com bomba com apenas o LED verde on.

      digitalWrite(LedVerde,HIGH);
      digitalWrite(LedAmarelo,LOW);
      digitalWrite(LedVermelho,LOW);
      digitalWrite(BUZZER,LOW);
      digitalWrite(BOMBA,LOW);
    }
    void ModuloALVER(){ // Módulo de alerta com bomba com apenas o LED vermelho on.

      digitalWrite(LedVerde,LOW);
      digitalWrite(LedAmarelo,LOW);
      digitalWrite(LedVermelho,HIGH);
      digitalWrite(BUZZER,LOW);
      digitalWrite(BOMBA,LOW);
    }

    void CaixaCheia() { // Caixa cheia.

      if (digitalRead(SENSOR_CAIXA2)==HIGH) { // Condição para ativamento do LED VERDE e caixa de texto no display LCD: "Caixa cheia".
        ModuloALVERDE();
        EscreverLCD();
        lcd.print("Caixa cheia");
        delay(2000);
      }
    }

    void CaixaVazia(){ // Caixa vazia

      if( digitalRead(SENSOR_CAIXA2)==LOW && digitalRead(SENSOR_CAIXA1)==LOW ){ 
        EscreverLCD();
        lcd.print("Caixa vazia");
      }
    }

    void TempoReabastecido(){ // Indica o tempo final de reabastecimento da caixa completa.

      for(;;) {
        delay(1000);
        cont = cont +1;
        if( digitalRead(SENSOR_CAIXA2)==HIGH && digitalRead(SENSOR_CAIXA1)==HIGH ){ // Condição que indica o tempo da caixa reabastecida completamente.
          ModuloALVERDE();
          cont = cont/60;
          EscreverLCD();
          lcd.print("C. Reabastecida");
          lcd.setCursor(0,1);
          lcd.print("tempo: ");
          lcd.print(cont);
          lcd.print(" min");
          delay(1000);
          break;
        }
        if( digitalRead(SENSOR_RESERVATORIO1)==LOW) { // Condição que para o reabastecimento.
          ModuloALVER();
          EscreverLCD();
          lcd.print("Reserva Vazia");
          delay(1000);
          break;
        }
      }
    }

    void Reabastecer() { // Ativa a bomba para reabastecer

      EscreverLCD();
      lcd.print("Reabastecendo...");
      digitalWrite(LedAmarelo,HIGH);
      digitalWrite(BOMBA,HIGH);
      digitalWrite(BUZZER,HIGH);
      digitalWrite(LedVerde,LOW);
      digitalWrite(LedVermelho,LOW);
    }

    void AbastecerCaixa(){ // Liga a bomba para abastecer a caixa.

      cont = 0;
        if( digitalRead(SENSOR_RESERVATORIO2)==HIGH){
          Reabastecer();
          TempoReabastecido();
      }
    }

    void VerificarNivel() { // Verifica o nivel do reservatorio e da caixa informando no display LCD. 

      CaixaCheia();
      CaixaVazia();
      if (digitalRead(SENSOR_RESERVATORIO2)==HIGH) { // Condição para caixa de texto no display LCD: "Reservatorio Max". 
        EscreverLCD();
        lcd.print("Reservatorio Max");
      }
      else if ((digitalRead(SENSOR_RESERVATORIO2)==LOW) && digitalRead(SENSOR_RESERVATORIO1)==HIGH) { // Condição para caixa de texto no display LCD: "Reservatorio Min".
        EscreverLCD();
        lcd.print("Reservatorio Min");
      }
      delay(1000);
    }

    void VerificaSensores() { // Verifica todos os sensores e se é necessário reabastecer.

      VerificarNivel();
      if( digitalRead(SENSOR_RESERVATORIO1)==LOW){ // Condição que indica que a reserva está vazia.
        ModuloALVER();
        EscreverLCD();
        lcd.print("Reserva Vazia");
        delay(2000);
      }
      else
      {
        if( digitalRead(SENSOR_CAIXA2)==LOW && digitalRead(SENSOR_CAIXA1)==LOW ){ // Condição que leva a outra função para o abastecimento caso a caixa esteja vazia.
          ModuloALOFF();
          EscreverLCD();
          lcd.print("Caixa vazia");
          AbastecerCaixa();
        }
        else if (digitalRead(SENSOR_CAIXA2)==HIGH  && digitalRead(SENSOR_RESERVATORIO2)==HIGH) { // Condição que verifica os sensores máximos da caixa e do reservatório e se estiverem em nível alto, sistema estará estável
          ModuloALVERDE();
          EscreverLCD();
          lcd.print("Sistema Estavel");
        }
        else if (digitalRead(SENSOR_CAIXA2)==LOW) { // Condição para verificar se a caixa está cheia e se é póssivel reabastecer.
          cont = 0;
          Reabastecer();
          TempoReabastecido();
        }
        delay(3000);
      }
    }

    void loop() { // Faz o loop do programa  verificando sempre pela função verificaSensores.

      VerificaSensores();
      delay(100);
    }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!