Advertisement
Guest User

Monitoramento Osmose Reversa

a guest
Nov 26th, 2018
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.25 KB | None | 0 0
  1. #include <LiquidCrystal.h>
  2.  
  3. float vazao;          //Variável para armazenar o valor em L/min
  4. float media = 0;      //Variável para fazer a média
  5. float Litros = 0;     //Variável para Quantidade de agua
  6. float MiliLitros = 0; //Variavel para Conversão
  7. int contaPulso;       //Variável para a quantidade de pulsos
  8. int Min = 00;         //Variável para minutos
  9. int i = 0;            //Variável para segundos
  10. #define SinalBombaOR 9 // Entrada de sinal do disjuntor da bomba OR
  11. #define SinalBombaPressOR 10 // Entrada de sinal do disjuntor da bomba de pressurização OR
  12. #define SinalBombaPressCME 11 // Entrada de sinal do disjuntor da bomba de pressurização CME
  13. #define SinalBoiaInferior 12 // Entrada de sinal da boia inferior
  14. #define SinalBoiaSuperior 13 // Entrada de sinal da boia superior
  15. #define Sirene A0 // Saída de sinal para acionar a sirene quando houver falha
  16. int comando = 0; // Comando a ser executado
  17.  
  18.  
  19. LiquidCrystal lcd(3, 4, 5, 6, 7, 8);
  20.  
  21.  
  22. void setup()
  23. {
  24.   Serial.begin(9600);
  25.   pinMode(SinalBombaOR, INPUT);
  26.   pinMode(SinalBombaPressOR, INPUT);
  27.   pinMode(SinalBombaPressCME, INPUT);
  28.   pinMode(SinalBoiaInferior, INPUT);
  29.   pinMode(SinalBoiaSuperior, INPUT);
  30.   pinMode(2, INPUT);
  31.   attachInterrupt(0, incpulso, RISING); //Configura o pino 2(Interrupção 0) interrupção
  32.   analogReference(DEFAULT);
  33.   pinMode(Sirene, OUTPUT);
  34. }
  35.  
  36.  
  37. void tela_vazao ()
  38. {
  39.   contaPulso = 0;//Zera a variável
  40.   sei();         //Habilita interrupção
  41.   delay (1000);  //Aguarda 1 segundo
  42.   cli();         //Desabilita interrupção
  43.  
  44.   vazao = contaPulso / 5.5; //Converte para L/min
  45.   media = media + vazao;    //Soma a vazão para o calculo da media
  46.   i++;
  47.   lcd.setCursor(4, 0);
  48.   lcd.print("Vazao OR");
  49.   lcd.setCursor(3, 1);
  50.   lcd.print(vazao);        //Escreve no display o valor da vazão
  51.   lcd.print(" L/min ");    //Escreve L/min
  52.   delay(3000);
  53.  
  54. }
  55. void loop()
  56.  {
  57.  int leitura1 = digitalRead(SinalBombaOR);       // VARIAVEL PARA ARMAZENAMENTO DE ESTADO
  58.  int leitura2 = digitalRead(SinalBombaPressOR);  // VARIAVEL PARA ARMAZENAMENTO DE ESTADO
  59.  int leitura3 = digitalRead(SinalBombaPressCME); // VARIAVEL PARA ARMAZENAMENTO DE ESTADO
  60.  int leitura4 = digitalRead(SinalBoiaInferior);  // VARIAVEL PARA ARMAZENAMENTO DE ESTADO
  61.  int leitura5 = digitalRead(SinalBoiaSuperior);  // VARIAVEL PARA ARMAZENAMENTO DE ESTADO
  62.  
  63.  
  64.  
  65.  if (leitura1 == LOW && leitura2 == HIGH && leitura3 == HIGH && leitura4 == HIGH && leitura5 == HIGH) // SE O SINAL DA BOMBA OR ESTIVER 0VCC
  66.  {
  67.  comando = 0; // EXECUTA O CASO 0
  68.  }
  69.  else if (leitura1 == HIGH && leitura2 == LOW && leitura3 == HIGH && leitura4 == HIGH && leitura5 == HIGH) // SE O SINAL DA BOMBA DE PRESSURIZAÇÃO OR ESTIVER 0VVC
  70.  {
  71.  comando = 1; // EXECUTA O CASO 1
  72.  }
  73.  else if (leitura1 == HIGH && leitura2 == HIGH && leitura3 == LOW && leitura4 == HIGH && leitura5 == HIGH) // SE O SINAL DA BOMBA DE PRESSURIZAÇÃO CME ESTIVER 0VCC
  74.  {
  75.  comando = 2; // EXECUTA O CASO 2
  76.  }
  77.  else if (leitura1 == HIGH && leitura2 == HIGH && leitura3 == HIGH && leitura4 == LOW && leitura5 == LOW) // SE O SINAL DA BOIA INFERIOR E SUPERIOR ESTIVEREM BAIXO
  78.  {
  79.  comando = 3; // EXECUTA O CASO 3
  80.  }
  81.  else if (leitura1 == HIGH && leitura2 == HIGH && leitura3 == HIGH && leitura4 == HIGH && leitura5 == LOW) // SE O SINAL DA BOIA SUPERIOR ESTIVER BAIXO
  82.  {
  83.  comando = 4; // EXECUTA O CASO 4
  84.  }
  85.  else if (leitura1 == HIGH && leitura2 == HIGH && leitura3 == HIGH && leitura4 == HIGH && leitura5 == HIGH) // SE O SINAL DA BOIA INFERIOR E SUPERIOR ESTIIVEREM ALTO
  86.  {
  87.  comando = 5; // EXECUTA O CASO 5
  88.  }
  89.  switch (comando) // Switch Case
  90.  {
  91.    case 0:
  92.  
  93.    comando = 0;//comando=0
  94.    
  95.  analogWrite(Sirene, HIGH); //Sirene alarma informando que há problema no sistema
  96.  lcd.clear();
  97.  lcd.setCursor (2, 0);
  98.  lcd.print ("Defeito na");
  99.  lcd.setCursor (4,1);
  100.  lcd.print ("Bomba OR");
  101.  delay (1000);
  102.  break;
  103.  
  104.  case 1:
  105.  
  106.  comando = 1;//comando=1
  107.  analogWrite(Sirene, HIGH); //Sirene alarma informando que há problema no sistema
  108.  lcd.clear();
  109.  lcd.setCursor (2, 0);
  110.  lcd.print ("Defeito na");
  111.  lcd.setCursor (1, 1);
  112.  lcd.print ("Bomba Press OR");
  113.  delay (1000);
  114.  break;
  115.  
  116.  case 2:
  117.  
  118.  comando = 2;//comando=2
  119.  analogWrite(Sirene, HIGH); //Sirene alarma informando que há problema no sistema
  120.  lcd.clear();
  121.  lcd.setCursor (2, 0);
  122.  lcd.print ("Defeito na");
  123.  lcd.setCursor (0, 1);
  124.  lcd.print ("Bomba Press CME");
  125.  delay (1000);
  126.  
  127.  break;
  128.  
  129.  case 3:
  130.  
  131.  comando = 4;//comando=3
  132.  analogWrite(Sirene, LOW); //Sirene alarma informando que há problema no sistema
  133.  lcd.clear();
  134.  lcd.setCursor (4, 0);
  135.  lcd.print ("ATENCAO");
  136.  lcd.setCursor (2, 1);
  137.  lcd.print ("TANQUE VAZIO");
  138.  delay (1000);
  139.  
  140.  break;
  141.  case 4:
  142.    
  143.  analogWrite(Sirene, LOW); //Sirene no estado baixo, informando que não há problemas no sistema
  144.  lcd.clear();
  145.  lcd.setCursor (4, 0);
  146.  lcd.print ("ATENCAO");
  147.  lcd.setCursor (0, 1);
  148.  lcd.print ("TANQUE ENCHENDO");
  149.  delay (1000);
  150.  break;
  151.  
  152.  case 5:
  153.  
  154.  analogWrite(Sirene, LOW); //Sirene no estado baixo, informando que não há problemas no sistema
  155.  lcd.clear();
  156.  lcd.setCursor (4, 0);
  157.  lcd.print ("ATENCAO");
  158.  lcd.setCursor (2, 1);
  159.  lcd.print ("TANQUE CHEIO");
  160.  delay (1000);
  161.  break;
  162.  
  163.   }
  164. delay(1000);
  165.  }
  166.  
  167.  
  168. void incpulso ()
  169. {
  170.   contaPulso++; //Incrementa a variável de pulsos
  171. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement