Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal.h>
- float vazao; //Variável para armazenar o valor em L/min
- float media = 0; //Variável para fazer a média
- float Litros = 0; //Variável para Quantidade de agua
- float MiliLitros = 0; //Variavel para Conversão
- int contaPulso; //Variável para a quantidade de pulsos
- int Min = 00; //Variável para minutos
- int i = 0; //Variável para segundos
- #define SinalBombaOR 9 // Entrada de sinal do disjuntor da bomba OR
- #define SinalBombaPressOR 10 // Entrada de sinal do disjuntor da bomba de pressurização OR
- #define SinalBombaPressCME 11 // Entrada de sinal do disjuntor da bomba de pressurização CME
- #define SinalBoiaInferior 12 // Entrada de sinal da boia inferior
- #define SinalBoiaSuperior 13 // Entrada de sinal da boia superior
- #define Sirene A0 // Saída de sinal para acionar a sirene quando houver falha
- int comando = 0; // Comando a ser executado
- LiquidCrystal lcd(3, 4, 5, 6, 7, 8);
- void setup()
- {
- Serial.begin(9600);
- pinMode(SinalBombaOR, INPUT);
- pinMode(SinalBombaPressOR, INPUT);
- pinMode(SinalBombaPressCME, INPUT);
- pinMode(SinalBoiaInferior, INPUT);
- pinMode(SinalBoiaSuperior, INPUT);
- pinMode(2, INPUT);
- attachInterrupt(0, incpulso, RISING); //Configura o pino 2(Interrupção 0) interrupção
- analogReference(DEFAULT);
- pinMode(Sirene, OUTPUT);
- }
- void loop()
- {
- int leitura1 = digitalRead(SinalBombaOR); // VARIAVEL PARA ARMAZENAMENTO DE ESTADO
- int leitura2 = digitalRead(SinalBombaPressOR); // VARIAVEL PARA ARMAZENAMENTO DE ESTADO
- int leitura3 = digitalRead(SinalBombaPressCME); // VARIAVEL PARA ARMAZENAMENTO DE ESTADO
- int leitura4 = digitalRead(SinalBoiaInferior); // VARIAVEL PARA ARMAZENAMENTO DE ESTADO
- int leitura5 = digitalRead(SinalBoiaSuperior); // VARIAVEL PARA ARMAZENAMENTO DE ESTADO
- if (leitura1 == LOW && leitura2 == HIGH && leitura3 == HIGH && leitura4 == HIGH && leitura5 == HIGH) // SE O SINAL DA BOMBA OR ESTIVER 0VCC
- {
- comando = 0; // EXECUTA O CASO 0
- }
- else if (leitura1 == HIGH && leitura2 == LOW && leitura3 == HIGH && leitura4 == HIGH && leitura5 == HIGH) // SE O SINAL DA BOMBA DE PRESSURIZAÇÃO OR ESTIVER 0VVC
- {
- comando = 1; // EXECUTA O CASO 1
- }
- else if (leitura1 == HIGH && leitura2 == HIGH && leitura3 == LOW && leitura4 == HIGH && leitura5 == HIGH) // SE O SINAL DA BOMBA DE PRESSURIZAÇÃO CME ESTIVER 0VCC
- {
- comando = 2; // EXECUTA O CASO 2
- }
- else if (leitura1 == HIGH && leitura2 == HIGH && leitura3 == HIGH && leitura4 == LOW && leitura5 == LOW) // SE O SINAL DA BOIA INFERIOR E SUPERIOR ESTIVEREM BAIXO
- {
- comando = 3; // EXECUTA O CASO 3
- }
- else if (leitura1 == HIGH && leitura2 == HIGH && leitura3 == HIGH && leitura4 == HIGH && leitura5 == LOW) // SE O SINAL DA BOIA SUPERIOR ESTIVER BAIXO
- {
- comando = 4; // EXECUTA O CASO 4
- }
- else if (leitura1 == HIGH && leitura2 == HIGH && leitura3 == HIGH && leitura4 == HIGH && leitura5 == HIGH) // SE O SINAL DA BOIA INFERIOR E SUPERIOR ESTIIVEREM ALTO
- {
- comando = 5; // EXECUTA O CASO 5
- }
- switch (comando) // Switch Case
- {
- case 0:
- comando = 0;//comando=0
- analogWrite(Sirene, HIGH); //Sirene alarma informando que há problema no sistema
- lcd.clear();
- lcd.setCursor (2, 0);
- lcd.print ("Defeito na");
- lcd.setCursor (4,1);
- lcd.print ("Bomba OR");
- delay (1000);
- break;
- case 1:
- comando = 1;//comando=1
- analogWrite(Sirene, HIGH); //Sirene alarma informando que há problema no sistema
- lcd.clear();
- lcd.setCursor (2, 0);
- lcd.print ("Defeito na");
- lcd.setCursor (1, 1);
- lcd.print ("Bomba Press OR");
- delay (1000);
- break;
- case 2:
- comando = 2;//comando=2
- analogWrite(Sirene, HIGH); //Sirene alarma informando que há problema no sistema
- lcd.clear();
- lcd.setCursor (2, 0);
- lcd.print ("Defeito na");
- lcd.setCursor (0, 1);
- lcd.print ("Bomba Press CME");
- delay (1000);
- break;
- case 3:
- comando = 3;//comando=3
- analogWrite(Sirene, HIGH); //Sirene alarma informando que há problema no sistema
- lcd.clear();
- lcd.setCursor (4, 0);
- lcd.print ("ATENCAO");
- lcd.setCursor (2, 1);
- lcd.print ("TANQUE VAZIO");
- delay (1000);
- break;
- case 4:
- comando = 4;//comando = 4
- analogWrite(Sirene, LOW); //Sirene no estado baixo, informando que não há problemas no sistema
- lcd.clear();
- lcd.setCursor (4, 0);
- lcd.print ("ATENCAO");
- lcd.setCursor (0, 1);
- lcd.print ("TANQUE ENCHENDO");
- delay (1000);
- break;
- case 5:
- comando = 5;//comando = 5
- analogWrite(Sirene, LOW); //Sirene no estado baixo, informando que não há problemas no sistema
- contaPulso = 0;//Zera a variável
- sei(); //Habilita interrupção
- delay (1000); //Aguarda 1 segundo
- cli(); //Desabilita interrupção
- vazao = contaPulso / 5.5; //Converte para L/min
- media = media + vazao; //Soma a vazão para o calculo da media
- i++;
- lcd.setCursor(4, 0);
- lcd.print("Vazao OR");
- lcd.setCursor(3, 1);
- lcd.print(vazao); //Escreve no display o valor da vazão
- lcd.print(" L/min "); //Escreve L/min
- delay(3000);
- lcd.clear();
- lcd.setCursor (0, 0);
- lcd.print ("OSMOSE OPERANDO");
- lcd.setCursor (2, 1);
- lcd.print ("TANQUE CHEIO");
- delay (1000);
- break;
- }
- delay(1000);
- }
- void incpulso ()
- {
- contaPulso++; //Incrementa a variável de pulsos
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement