Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //#include <LiquidCrystal_I2C.h> // Biblioteca LCD I2C
- //LiquidCrystal_I2C lcd(0x38, 2, 1, 0, 7, 6, 5, 4, 3, POSITIVE); // Set the LCD I2C
- #include <LiquidCrystal_I2C.h> // Biblioteca LiquidCrystal
- LiquidCrystal_I2C lcd(0x27, 16, 2); // Inicializa o LCD 4Bits
- float vazao; //Variável para armazenar o valor em L/min
- float media = 0; //Variável para fazer a média
- int contaPulso; //Variável para a quantidade de pulsos
- float Litros = 0; //Variável para Quantidade de agua
- float MiliLitros = 0; //Variavel para Conversão
- const int BTNMAIS = 4; // Pino 4 e entrada do botao MAIS
- const int BTNMENOS = 6; // Pino 6 e entrada do botao MENOS
- const int BTNSTART = 8; // Pino 8 e entrada do botao START
- const int BTNRESET = 10; // Pino 10 e entrada do botao RESET
- int VALVULA = 13; // Pino 13 é saida para a valvula(RELE da VALVULA)
- int STAGEBUTTONMAIS = 0; // Variavel que armazenara o estado do botao POSITIVO
- int STAGEBUTTONMENOS = 0; // Variavel que armazenara o estado do botao NEGATIVO
- int STAGEBUTTONSTART = 0; // Variavel que armazenara o estado do botao START
- int STAGEBUTTONRESET = 0; // Variavel que armazenara o estado do botao RESET
- int VALORARMAZENADOBTN = 0; // Variavel que armazenara o valor setado pelos botoes POSITIVO e NEGATIVO
- float ComparaLitros = 0;
- //-----------------------------------------
- void setup()
- {
- Serial.begin(9600);
- pinMode (2, INPUT); // Seta o pino 2 como entrada do sensor de fluxo de agua
- pinMode (BTNMAIS, INPUT); // Seta o pino do BTNMAIS como entrada
- pinMode (BTNMENOS, INPUT); // Seta o pino do BTNMENOS como entrada
- pinMode (BTNSTART, INPUT); // Seta o pino do BTNSTART como entrada
- pinMode (BTNRESET, INPUT); // Seta o pino do BOTRESET como entrada
- pinMode (VALVULA, OUTPUT);
- digitalWrite (BTNMAIS, HIGH); // Coloca resitor PULLUP no BTNMAIS
- digitalWrite (BTNMENOS, HIGH); // Coloca resitor PULLUP no BTNMENOS
- digitalWrite (BTNSTART, HIGH); // Coloca resitor PULLUP no BTNSTART
- digitalWrite (BTNRESET, HIGH); // Coloca resitor PULLUP no BTNRESET
- attachInterrupt(0, incpulso, RISING); //Configura o pino 2(Interrupção 0) interrupção
- lcd.init(); // Inicializa o LCD
- lcd.backlight(); // Aciona o luz de fundo do LCD
- lcd.begin(16, 2); // Inicializa o LCD 16x2
- lcd.setCursor( 0, 0); // Posiciona o cursor do LCD
- lcd.print("Sensoriamento de"); // Escreve o texto entre " "
- lcd.setCursor( 0, 1); // Posiciona o cursor do LCD
- lcd.print(" fluxo de Agua "); // Escreve o texto entre " "
- delay(1000); // Delay de 1 Segundo
- lcd.clear(); // Apaga a Escrita
- digitalWrite (VALVULA, HIGH);
- contaPulso = 0;
- }
- //-----------------------------------------
- void loop () // Starta o LOOP do sistema
- {
- sei(); //Habilita interrupção
- delay (200); //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
- lcd.setCursor(0, 0); // Posiciona o cursor do LCD
- lcd.print("TLS:"); // Escreve o texto entre " "
- lcd.setCursor(0, 1); // Posiciona o cursor do LCD
- lcd.print("TLA: "); // Escreve o texto entre " "
- MiliLitros = vazao / 60; // Tira a media por hora.
- Litros = vazao / 60;
- lcd.setCursor(11, 1); // Posiciona o cursor do LCD
- lcd.print(Litros); // Escreve o texto da variavel Litros
- lcd.print("L"); // Escreve o texte L depois da variavel
- lcd.setCursor(12, 0); // Posiciona o cursor no LCD
- lcd.print(" "); // Escreve o texto entre " " para limpar sujeira da variavel antiga
- lcd.setCursor(12, 0); // Posiciona o cursor no LCD
- lcd.print(VALORARMAZENADOBTN); // Escreve o valor da variavel VALORARMAZENADOBTN
- STAGEBUTTONMAIS = digitalRead(BTNMAIS); // STAGEBUTTONMAIS monitora o estado do botao BTNMAIS
- STAGEBUTTONMENOS = digitalRead(BTNMENOS); // STAGEBUTTONMENOS monitora o estado do botao BTNMENOS
- STAGEBUTTONRESET = digitalRead(BTNRESET); // STAGEBUTTONRESET monitora o estado do botao BTNRESET
- STAGEBUTTONSTART = digitalRead(BTNSTART); // STAGEBUTTONSTART monitora o estado do botao BTNSTART
- if (STAGEBUTTONMAIS != 1)
- {
- FuncaoMAISBTN();
- }
- if (STAGEBUTTONMENOS != 1)
- {
- FuncaoMENOSBTN();
- }
- if (STAGEBUTTONRESET != 1)
- {
- FuncaoRESETBTN();
- }
- else if (STAGEBUTTONSTART != 1)
- {
- FuncaoESTADOVALVULA();
- }
- if (Litros >= VALORARMAZENADOBTN)
- {
- digitalWrite (VALVULA, HIGH);
- contaPulso = 0;
- }
- }
- //-----------------------------------------
- void incpulso () // Funcao incpulso
- {
- contaPulso++; //Incrementa a variável de pulsos
- }
- //-----------------------------------------
- void FuncaoMAISBTN() // Função FuncaoMAISBTN
- {
- lcd.setCursor(12, 0); // Posiciona o cursor no LCD
- lcd.print(" "); // Escreve o texto entre " " para limpar sujeira da variavel antiga
- lcd.setCursor(12, 0); // Posiciona o cursor no LCD
- VALORARMAZENADOBTN = VALORARMAZENADOBTN + 1; // A variavel VALORARMAZENADOBTN recebe o valor da variavel mais 1
- lcd.print(VALORARMAZENADOBTN); // Escreve o valor da variavel VALORARMAZENADOBTN
- }
- //-----------------------------------------
- void FuncaoMENOSBTN() // Função FuncaoMENOSBTN
- {
- lcd.setCursor(12, 0); // Posiciona o Cursor no LCD
- lcd.print(" "); // Escreve o texto entre " " para limpar sujeira da variavel antiga
- lcd.setCursor(12, 0); // Posiciona o Cursor no LCD
- VALORARMAZENADOBTN = VALORARMAZENADOBTN - 1; // A variavel VALORARMAZENADOBTN recebe o valor da variavel menos 1
- lcd.print(VALORARMAZENADOBTN); // Escreve o valor da variavel VALORARMAZENADOBTN
- }
- //-----------------------------------------
- void FuncaoRESETBTN()
- {
- VALORARMAZENADOBTN = 0;
- Litros = 0;
- }
- //-----------------------------------------
- void FuncaoESTADOVALVULA()
- {
- if (Litros <= VALORARMAZENADOBTN)
- {
- digitalWrite (VALVULA, LOW);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement