Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <LiquidCrystal.h>
- #define RED 8
- #define GREEN 9
- #define BLUE 10
- LiquidCrystal lcd(12, 11, 7, 6, 5, 4); // Pinos LCD 12-RS 11-EN 7-D4 6-D5 5-D6 4-D7
- float volume; //Variável para armazenar o valor em ml
- int contaPulso; //Variável para a quantidade de pulsos
- int contapulso2; //variável para trocar a cor do LED
- int i = 0; //Variável para contagem
- float mediatotal = 0; //Média Acumulada
- float media = 0; //Média
- float R = 255 //variável para mudar a cor RED
- float G = 255 //variável para mudar a cor GREEN
- float B = 255 //variável para mudar a cor BLUE
- //------------------------------------
- void setup()
- {
- Serial.begin(9600); //Inicia a serial com um baud rate de 9600
- lcd.begin(16, 2);
- pinMode(2, INPUT);
- pinMode(3, INPUT);
- pinMode(RED, OUTPUT);
- pinMode(GREEN, OUTPUT);
- pinMode(BLUE, OUTPUT);
- attachInterrupt(0, incpulso, RISING); //Configura o pino 2(Interrupção 0) para trabalhar como interrupção
- attachInterrupt(1, incpulso, RISING); //Configura o pino 3(Interrupção 1) para trabalhar como interrupção
- Serial.println("\n\nInicio\n\n"); //Imprime Inicio na serial
- lcd.setCursor(3, 0);
- lcd.print("iniciando...");
- analogWrite (RED, 255);
- delay (500);
- analogWrite (RED, 0);
- delay (500);
- analogWrite (GREEN, 255);
- delay (500);
- analogWrite (GREEN, 0);
- delay (500);
- analogWrite (BLUE, 255);
- delay (500);
- analogWrite (BLUE, 0);
- }
- //------------------------------------
- void loop ()
- {
- contaPulso = 0; //Zera a variável para contar os giros por segundos
- sei(); //Habilita interrupção
- delay (1000); //Aguarda 1 segundo
- cli(); //Desabilita interrupção
- volume = contaPulso * 2.25; //Converte para ml
- media = media + volume; //Soma a volume para o calculo da media
- mediatotal = media + volume;
- i++;
- Serial.print(volume); //Imprime na serial o valor da vazão
- Serial.print(" ml "); //Imprime ml
- Serial.print(i); //Imprime a contagem i (segundos)
- Serial.println("s"); //Imprime s indicando que está em segundos
- lcd.setCursor(0, 1);
- lcd.print(volume); //Imprime na serial o valor da vazão
- lcd.print(" ml "); //Imprime ml
- lcd.print(i); //Imprime a contagem i (segundos)
- lcd.print("s"); //Imprime s indicando que está em segundos
- if (i == 10)
- {
- Serial.print("\nPulsos = ");
- Serial.print(contaPulso);
- Serial.print("\nVolume Total = "); // Imprime a frase Volume Total =
- Serial.print(mediatotal); //Imprime o valor da media acumulada
- Serial.println(" ml - "); //Imprime ml
- lcd.setCursor(8, 1);
- lcd.print("\nPulsos = ");
- lcd.print(contaPulso);
- lcd.print("\nVolume Total = "); // Imprime a frase Volume Total =
- lcd.print(mediatotal); //Imprime o valor da media acumulada
- lcd.print(" ml - "); //Imprime ml
- i = 0;
- mediatotal = mediatotal;
- }
- if (mediatotal<=30000)
- {
- analogWrite (GREEN, 255);
- analogWrite (BLUE, 255);
- analogWrite (RED, 255);
- }
- }
- if (mediatotal>30000&&<=60000)
- {
- for (contapulso2=0; contapulso2=117; G=G-1)
- {
- contapulso2 == 0;
- analogWrite (GREEN, G);
- }
- }
- if (mediatotal>60000&&<=90000)
- {
- for (contapulso2=0; contapulso2=117; B=B-1)
- {
- contapulso2 == 0;
- analogWrite (BLUE, B);
- }
- }
- if (mediatotal>90000)
- {
- analogWrite (RED, 255);
- delay (2000);
- analogWrite (RED, 0);
- analogWrite (RED, 255);
- delay (2000);
- analogWrite (RED, 0);
- analogWrite (RED, 255);
- delay (2000);
- analogWrite (RED, 0);
- analogWrite (RED, 255);
- }
- }
- //-----------------------------
- void incpulso ()
- {
- contaPulso++; //Incrementa a variável de contagem dos pulsos
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement