RuiViana

Medidor_Fluxo_LCD

Oct 13th, 2016
169
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <LiquidCrystal.h>
  2. LiquidCrystal lcd(12, 11, 7, 6, 5, 4);  // Pinos LCD 12-RS 11-EN 7-D4 6-D5 5-D6 4-D7
  3. float volume;                           //Variável para armazenar o valor em ml
  4. int contaPulso;                         //Variável para a quantidade de pulsos
  5. int i = 0;                              //Variável para contagem
  6. float mediatotal = 0;                   //Média Acumulada
  7. float media = 0;                        //Média
  8. //------------------------------------
  9. void setup()
  10. {
  11.   Serial.begin(9600);                   //Inicia a serial com um baud rate de 9600
  12.   lcd.begin(16, 2);
  13.   pinMode(2, INPUT);
  14.   attachInterrupt(0, incpulso, RISING); //Configura o pino 2(Interrupção 0) para trabalhar como interrupção
  15.   Serial.println("\n\nInicio\n\n");     //Imprime Inicio na serial
  16.   lcd.setCursor(3, 0);
  17.   lcd.print("iniciando...");
  18.   delay(500);
  19. }
  20. //------------------------------------
  21. void loop ()
  22. {
  23.   contaPulso = 0;                       //Zera a variável para contar os giros por segundos
  24.   sei();                                //Habilita interrupção
  25.   delay (1000);                         //Aguarda 1 segundo
  26.   cli();                                //Desabilita interrupção
  27.  
  28.   volume = contaPulso * 2.25;           //Converte para ml
  29.   media = media + volume;               //Soma a volume para o calculo da media
  30.   mediatotal = media + volume;
  31.   i++;
  32.  
  33.   Serial.print(volume);                 //Imprime na serial o valor da vazão
  34.   Serial.print(" ml ");                 //Imprime ml
  35.   Serial.print(i);                      //Imprime a contagem i (segundos)
  36.   Serial.println("s");                  //Imprime s indicando que está em segundos
  37.  
  38.   lcd.setCursor(0, 1);
  39.   lcd.print(volume);                    //Imprime na serial o valor da vazão
  40.   lcd.print(" ml ");                    //Imprime ml
  41.   lcd.print(i);                         //Imprime a contagem i (segundos)
  42.   lcd.print("s");                       //Imprime s indicando que está em segundos
  43.   if (i == 10)
  44.   {
  45.     Serial.print("\nPulsos = ");
  46.     Serial.print(contaPulso);
  47.     Serial.print("\nVolume Total = ");  // Imprime a frase Volume Total =
  48.     Serial.print(mediatotal);           //Imprime o valor da media acumulada
  49.     Serial.println(" ml - ");           //Imprime ml
  50.  
  51.     lcd.setCursor(8, 1);
  52.     lcd.print("\nPulsos = ");
  53.     lcd.print(contaPulso);
  54.     lcd.print("\nVolume Total = ");     // Imprime a frase Volume Total =
  55.     lcd.print(mediatotal);              //Imprime o valor da media acumulada
  56.     lcd.print(" ml - ");                //Imprime ml
  57.    
  58.     i = 0;
  59.     mediatotal = mediatotal;
  60.   }
  61. }
  62. //-----------------------------
  63. void incpulso ()
  64. {
  65.   contaPulso++;                           //Incrementa a variável de contagem dos pulsos
  66. }
RAW Paste Data