#include LiquidCrystal lcd(1,3,4,5,6,7); int botM = 8; int botSel = 10; int botSubM = 9; char Lamp1 = A0; //Saída para lâmpada 1 no A0 (será usado como digital) char lcd_brilho = A1; void changeMenu(); //Função para modificar o menu atual void dispMenu(); //Função para mostrar o menu atual void data_hora(); //Função do menu1, data e hora void lights(); //Função do menu2, acionamento de lampadas void select(); //Função para ativar, ligar/desligar // --- Variáveis Globais --- int menu = 1; //Variável para selecionar o menu int set1 = 0; int set2 = 0; bool t_botM, t_botSubM, t_botSel; //Flags para armazenar o estado dos botões void setup() { lcd.begin(16,2); //Identificar tipo de lcs(16x2) pinMode(botM, INPUT_PULLUP); //Push Button pinMode(botSel, INPUT_PULLUP); //Push Button pinMode(botSubM, INPUT_PULLUP); //Push Button pinMode(Lamp1, OUTPUT); //Configura saída para lâmpada 1 pinMode(lcd_brilho, OUTPUT); //Configura brilho do lcd t_botM = 0; t_botSubM = 0; t_botSel = 0; //digitalWrite(Lamp1, LOW); digitalWrite(lcd_brilho, HIGH); } void loop() { changeMenu(); dispMenu(); //select(); } void changeMenu() { if(!digitalRead(botM)) t_botM = 1; //Botão Up pressionado? Seta flag if(digitalRead(botM) && t_botM) //Botão Up solto e flag setada? { t_botM = 0; lcd.clear(); menu++; if(menu > 3) menu = 1; } } void dispMenu() //Mostra o menu atual { switch(menu) { case 1: data_hora(); break; case 2: lights(); break; case 3: settings(); } } void data_hora() { lcd.setCursor(0,0); //Coluna 1 Linha 1 lcd.print("Data e Hora"); lcd.setCursor(0,1); //Coluna 1 Linha 2 //desenvolver função de data e hora... lcd.print("ilustrativo"); } void lights() { lcd.setCursor(0,0); lcd.print("Lampadas"); if(!digitalRead(botSubM)) t_botSubM = 1; if(digitalRead(botSubM) && t_botSubM) { t_botSubM = 0; set1++; if(set1 > 2) set1 = 1; switch(set1) { case 1: lcd.clear(); lcd.setCursor(0,1); lcd.print("Lampada"); select(); break; case 2: lcd.clear(); lcd.setCursor(0,1); lcd.print("Led"); //comando fita led... break; } }//fecha sub menu }//fecha void lights void select() { if(!digitalRead(botSel)) t_botSel = 1; if(digitalRead(botSel) && t_botSel) { t_botSel = 0; set2++; if(set2 > 2) set2 = 1; switch(set2) { case 1: lcd.clear(); lcd.setCursor(8,1); lcd.print("ON"); digitalWrite(Lamp1, HIGH); break; case 2: lcd.clear(); lcd.setCursor(8,1); lcd.print("OFF"); digitalWrite(Lamp1, LOW); break; } }//fecha selecao } void settings() { lcd.setCursor(0,0); lcd.print("Settings"); if(!digitalRead(botSubM)) t_botSubM = 1; if(digitalRead(botSubM) && t_botSubM) { t_botSubM = 0; set1++; if(set1 > 2) set1 = 1; switch(set1) { case 1: lcd.clear(); lcd.setCursor(0,1); lcd.print("Brilho"); //comando brilho... break; case 2: lcd.clear(); lcd.setCursor(0,1); lcd.print("ok"); //comando fita led... break; } }//fecha sub menu }