Advertisement
RuiViana

Controle_Litros

Aug 12th, 2016
231
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 9.90 KB | None | 0 0
  1. //#include <LiquidCrystal_I2C.h>                                        // Biblioteca LCD I2C
  2. //LiquidCrystal_I2C lcd(0x38,  2, 1, 0, 7, 6, 5, 4, 3, POSITIVE);       // Set the LCD I2C
  3.  
  4. #include <LiquidCrystal_I2C.h>                                                      // Biblioteca LiquidCrystal
  5. LiquidCrystal_I2C lcd(0x27, 16, 2);                                                 // Inicializa o LCD 4Bits
  6.  
  7. float     vazao;                                                                   //Variável para armazenar o valor em L/min
  8. float     media               = 0;                                                 //Variável para fazer a média
  9. int       contaPulso;                                                              //Variável para a quantidade de pulsos
  10. float     Litros              = 0;                                                 //Variável para Quantidade de agua
  11. float     MiliLitros          = 0;                                                 //Variavel para Conversão
  12.  
  13. const int BTNMAIS               = 4;                                               // Pino  4 e entrada do botao MAIS
  14. const int BTNMENOS              = 6;                                               // Pino  6 e entrada do botao MENOS
  15. const int BTNSTART              = 8;                                               // Pino  8 e entrada do botao START
  16. const int BTNRESET              = 10;                                              // Pino 10 e entrada do botao RESET
  17. int       VALVULA               = 13;                                              // Pino 13 é saida para a valvula(RELE da VALVULA)
  18. int       STAGEBUTTONMAIS       = 0;                                               // Variavel que armazenara o estado do botao POSITIVO
  19. int       STAGEBUTTONMENOS      = 0;                                               // Variavel que armazenara o estado do botao NEGATIVO
  20. int       STAGEBUTTONSTART      = 0;                                               // Variavel que armazenara o estado do botao START
  21. int       STAGEBUTTONRESET      = 0;                                               // Variavel que armazenara o estado do botao RESET
  22. int       VALORARMAZENADOBTN    = 0;                                               // Variavel que armazenara o valor setado pelos botoes POSITIVO e NEGATIVO
  23.  
  24. float     ComparaLitros         = 0;
  25. //-----------------------------------------
  26. void setup()
  27. {
  28.   Serial.begin(9600);
  29.   pinMode      (2,        INPUT);                                                   // Seta o pino 2 como entrada do sensor de fluxo de agua
  30.   pinMode      (BTNMAIS,  INPUT);                                                   // Seta o pino do BTNMAIS  como entrada
  31.   pinMode      (BTNMENOS, INPUT);                                                   // Seta o pino do BTNMENOS como entrada
  32.   pinMode      (BTNSTART, INPUT);                                                   // Seta o pino do BTNSTART como entrada
  33.   pinMode      (BTNRESET, INPUT);                                                   // Seta o pino do BOTRESET como entrada
  34.   pinMode      (VALVULA, OUTPUT);
  35.   digitalWrite (BTNMAIS,   HIGH);                                                   // Coloca resitor PULLUP no BTNMAIS
  36.   digitalWrite (BTNMENOS,  HIGH);                                                   // Coloca resitor PULLUP no BTNMENOS
  37.   digitalWrite (BTNSTART,  HIGH);                                                   // Coloca resitor PULLUP no BTNSTART
  38.   digitalWrite (BTNRESET,  HIGH);                                                   // Coloca resitor PULLUP no BTNRESET
  39.  
  40.   attachInterrupt(0, incpulso, RISING);                                             //Configura o pino 2(Interrupção 0) interrupção
  41.  
  42.     lcd.init();                                                                       // Inicializa o LCD
  43.     lcd.backlight();                                                                  // Aciona o luz de fundo do LCD
  44.   lcd.begin(16, 2);                                                                 // Inicializa o LCD 16x2
  45.   lcd.setCursor( 0, 0);                                                             // Posiciona o cursor do LCD
  46.   lcd.print("Sensoriamento de");                                                    // Escreve o texto entre " "
  47.   lcd.setCursor( 0, 1);                                                             // Posiciona o cursor do LCD
  48.   lcd.print(" fluxo de Agua ");                                                     // Escreve o texto entre " "
  49.   delay(1000);                                                                      // Delay de 1 Segundo
  50.   lcd.clear();                                                                      // Apaga a Escrita
  51.  
  52.  
  53.   digitalWrite (VALVULA, HIGH);
  54.   contaPulso = 0;
  55. }
  56. //-----------------------------------------
  57. void loop ()                                                                       // Starta o LOOP do sistema
  58. {
  59.   sei();                                                                            //Habilita interrupção
  60.   delay (200);                                                                     //Aguarda 1 segundo
  61.   //cli();                                                                          //Desabilita interrupção
  62.  
  63.   vazao = contaPulso / 5.5;                                                         //Converte para L/min
  64.   media = media + vazao;                                                            //Soma a vazão para o calculo da media
  65.  
  66.   lcd.setCursor(0, 0);                                                              // Posiciona o cursor do LCD
  67.   lcd.print("TLS:");                                                                // Escreve o texto entre " "
  68.   lcd.setCursor(0, 1);                                                              // Posiciona o cursor do LCD
  69.   lcd.print("TLA: ");                                                               // Escreve o texto entre " "
  70.     MiliLitros = vazao / 60;                                                          // Tira a media por hora.
  71.   Litros = vazao / 60;
  72.   lcd.setCursor(11, 1);                                                             // Posiciona o cursor do LCD
  73.   lcd.print(Litros);                                                                // Escreve o texto da variavel Litros
  74.   lcd.print("L");                                                                   // Escreve o texte L depois da variavel
  75.   lcd.setCursor(12, 0);                                                             // Posiciona o cursor no LCD
  76.   lcd.print("   ");                                                                 // Escreve o texto entre " " para limpar sujeira da variavel antiga
  77.   lcd.setCursor(12, 0);                                                             // Posiciona o cursor no LCD
  78.   lcd.print(VALORARMAZENADOBTN);                                                    // Escreve o valor da variavel VALORARMAZENADOBTN
  79.  
  80.   STAGEBUTTONMAIS    = digitalRead(BTNMAIS);                                        // STAGEBUTTONMAIS  monitora o estado do botao BTNMAIS
  81.   STAGEBUTTONMENOS   = digitalRead(BTNMENOS);                                       // STAGEBUTTONMENOS monitora o estado do botao BTNMENOS
  82.   STAGEBUTTONRESET   = digitalRead(BTNRESET);                                       // STAGEBUTTONRESET monitora o estado do botao BTNRESET
  83.   STAGEBUTTONSTART   = digitalRead(BTNSTART);                                       // STAGEBUTTONSTART monitora o estado do botao BTNSTART
  84.  
  85.   if (STAGEBUTTONMAIS != 1)
  86.   {
  87.     FuncaoMAISBTN();
  88.   }
  89.   if (STAGEBUTTONMENOS != 1)
  90.   {
  91.     FuncaoMENOSBTN();
  92.   }
  93.   if (STAGEBUTTONRESET != 1)
  94.   {
  95.     FuncaoRESETBTN();
  96.   }
  97.   else if (STAGEBUTTONSTART != 1)
  98.   {
  99.     FuncaoESTADOVALVULA();
  100.   }
  101.   if (Litros >= VALORARMAZENADOBTN)
  102.   {
  103.     digitalWrite (VALVULA, HIGH);
  104.     contaPulso = 0;
  105.   }
  106. }
  107. //-----------------------------------------
  108. void incpulso ()                                                                   // Funcao incpulso
  109. {
  110.   contaPulso++;                                                                     //Incrementa a variável de pulsos
  111. }
  112. //-----------------------------------------
  113. void FuncaoMAISBTN()                                                               // Função FuncaoMAISBTN
  114. {
  115.   lcd.setCursor(12, 0);                                                           // Posiciona o cursor no LCD
  116.   lcd.print("   ");                                                               // Escreve o texto entre " " para limpar sujeira da variavel antiga
  117.   lcd.setCursor(12, 0);                                                           // Posiciona o cursor no LCD
  118.   VALORARMAZENADOBTN = VALORARMAZENADOBTN + 1;                                    // A variavel VALORARMAZENADOBTN recebe o valor da variavel mais 1
  119.   lcd.print(VALORARMAZENADOBTN);                                                  // Escreve o valor da variavel VALORARMAZENADOBTN
  120. }
  121. //-----------------------------------------
  122. void FuncaoMENOSBTN()                                                              // Função FuncaoMENOSBTN
  123. {
  124.   lcd.setCursor(12, 0);                                                           // Posiciona o Cursor no LCD
  125.   lcd.print("   ");                                                               // Escreve o texto entre " " para limpar sujeira da variavel antiga
  126.   lcd.setCursor(12, 0);                                                           // Posiciona o Cursor no LCD
  127.   VALORARMAZENADOBTN = VALORARMAZENADOBTN - 1;                                    // A variavel VALORARMAZENADOBTN recebe o valor da variavel menos 1
  128.   lcd.print(VALORARMAZENADOBTN);                                                  // Escreve o valor da variavel VALORARMAZENADOBTN
  129. }
  130. //-----------------------------------------
  131. void FuncaoRESETBTN()
  132. {
  133.   VALORARMAZENADOBTN = 0;
  134.   Litros = 0;
  135. }
  136. //-----------------------------------------
  137. void FuncaoESTADOVALVULA()
  138. {
  139.   if (Litros <= VALORARMAZENADOBTN)
  140.   {
  141.     digitalWrite (VALVULA, LOW);
  142.   }
  143. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement