Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // inclui a biblioteca:
- #include <LiquidCrystal.h>
- #include <Keypad.h>
- #include <MsTimer2.h>
- // define os pinos de conexão entre o Arduino e o Display LCD
- LiquidCrystal lcd (0, 1, 2, 3, 4, 5); // (RS,E,D4,D5,D6,D7)
- volatile char centesimos, segundos, minutos;
- volatile boolean mudouCrono = true;
- volatile boolean cronoLigado = false;
- // variáveis do programa
- const int pinoSensor = A0;
- const int pinoValvula = 13;
- const int limiarSeco = 74;
- const int tempoRega = 3; // Tempo de rega em segundos
- int entrada;
- int umidadeSolo = 0;
- int botMenu = 8;
- int estadobotMenu;
- int TM;//timer manual(definido pelo operador)
- int menu = 1;
- //Teclado Matricial
- const int C1 = 10;
- const int C2 = 11;
- const int C3 = 12;
- const int L1 = A2;
- const int L2 = A3;
- const int L3 = A4;
- const int L4 = A5;
- byte pinosLinhas [] = {L1, L2, L3, L4};
- byte pinosColunas [] = {C1, C2, C3};
- char teclas[4][3] = { {'1', '2', '3'},
- {'4', '5', '6'},
- {'7', '8', '9'},
- {'*', '0', '#'}
- };
- int count = 0;
- char pass [4] = {'0', '0', '0', '0'}; // senha padrão
- char tempo[3] = {'0', '0', '0'}; //tempo em min, max 999 ou 16 horas aprox
- char tecla_pressionada;
- Keypad teclado1 = Keypad(makeKeymap (teclas), pinosLinhas, pinosColunas, 4, 3); //'keypad' como se fosse um tipo de variavel;'teclado1 =' variavelmakekeymap (teclas): mapeia as variaveis char dentro de "teclas"
- void setup() {/////////////////////////////////////////////////////////////////////////
- lcd.begin(16, 2);// define o tamanho do Display LCD
- pinMode(botMenu, INPUT_PULLUP);
- pinMode(pinoValvula, OUTPUT);
- digitalWrite(pinoValvula, HIGH); // Desliga a válvula
- pinMode(8, OUTPUT);
- minutos = segundos = centesimos = 0;
- lcd.begin(16, 2);
- lcd.noCursor();
- lcd.print ("Contador");
- MsTimer2::set (10, ajustaCronometro);
- lcd.clear();
- lcd.setCursor(2, 0);
- lcd.print ("Auto. Irriga");
- lcd.setCursor(3, 1);
- lcd.print ("Version 1.8");
- delay (1000);
- lcd.clear();
- }
- void ajustaCronometro () {
- centesimos++;
- if (centesimos == 100) {
- centesimos = 0;
- segundos++;
- if (segundos == 60) {
- segundos = 0;
- minutos ++;
- }
- }
- mudouCrono = true;
- }
- void loop () {
- lcd.setCursor(1, 0);
- lcd.print("Temporizador");
- delay(3000);
- lcd.clear();
- lcd.setCursor(2, 0);
- lcd.print("Digite o tempo");
- while (count < 3 ) { // enquanto não entrou os 4 números necessários para a senha
- char tecla_pressionada = teclado1.getKey(); // obtém informação do teclado
- if (tecla_pressionada != NO_KEY) { // se foi teclado algo
- entrada += 1; // aumenta contrador de entradas
- tempo[count] = tecla_pressionada; // aramazena o novo dígito
- count += 1;
- lcd.print(tecla_pressionada);
- TM = atoi(tempo);
- if (count == 3) {
- if ((tecla_pressionada == "#") //inicia/confirma
- && (cronoLigado == false) )
- {
- cronoLigado = true;
- MsTimer2::start();
- }
- else if ((tecla_pressionada == "#")//para a contagem depois de iniciada
- && (cronoLigado == true) )
- {
- cronoLigado = false;
- MsTimer2::stop();
- }
- if (tecla_pressionada == "#") {
- lcd.clear();
- lcd.setCursor (0, 1);
- lcd.print (minutos, DEC); lcd.print (" min : ");
- lcd.print (segundos, DEC); lcd.print (" seg");
- mudouCrono = false;
- }
- if (minutos == TM ) {
- digitalWrite(8, 1);
- }
- if (minutos != TM ) {
- digitalWrite(8, 0);
- segundos == 0;
- }
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement