/* =============================================================================================================
Curso de Arduino WR Kits
Aula 218
Menu em formato de lista horizontal
Compilador: Arduino IDE 1.8.4
Autor: Eng. Wagner Rambo
Data: Abril de 2019
www.wrkits.com.br
============================================================================================================= */
// =============================================================================================================
// --- Bibliotecas Auxiliares ---
#include <LiquidCrystal.h>
// =============================================================================================================
// --- Mapeamento de Hardware ---
#define bt_l 17 //botão esquerda
#define bt_r 16 //botão direita
#define bt_e 15 //botão enter
#define bt_b 14 //botão voltar
// =============================================================================================================
// --- Constantes e Objetos ---
#define menu_max 4 //número máximo de menus existentes
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2;
LiquidCrystal lcd(rs, en, d4, d5, d6, d7);
// =============================================================================================================
// --- Protótipo das Funções ---
void keyboard();
void menu1();
void menu2();
void menu3();
void menu4();
// =============================================================================================================
// --- Variáveis Globais ---
int menu_num = 1, sub_menu = 1;
// =============================================================================================================
// --- Configurações Iniciais ---
void setup()
{
pinMode(bt_r, INPUT_PULLUP);
pinMode(bt_l, INPUT_PULLUP);
pinMode(bt_e, INPUT_PULLUP);
pinMode(bt_b, INPUT_PULLUP);
lcd.begin(16, 2);
} //end setup
// =============================================================================================================
// --- Configurações Iniciais ---
void loop()
{
keyboard();
switch(menu_num)
{
case 1: menu1(); break;
case 2: menu2(); break;
case 3: menu3(); break;
case 4: menu4(); break;
} //end switch
} //end loop
// =============================================================================================================
// --- Desenvolvimento das Funções ---
void keyboard()
{
if(!digitalRead(bt_r) && sub_menu == 1)
{
delay(150);
if(menu_num <= menu_max) menu_num += 1;
} //end bt_r
if(!digitalRead(bt_l) && sub_menu == 1)
{
delay(150);
if(menu_num > 0) menu_num -= 1;
} //end bt_l
if(!digitalRead(bt_e))
{
delay(150);
if(sub_menu <= 2) sub_menu += 1;
} //end bt_e
if(!digitalRead(bt_b))
{
delay(150);
if(sub_menu > 0) sub_menu -= 1;
} //end bt_b
} //end keyboard
void menu1()
{
switch(sub_menu)
{
case 1:
lcd.setCursor(0,0);
lcd.print(" Voltimetro >");
lcd.setCursor(0,1);
lcd.print(" ");
break;
case 2:
lcd.setCursor(0,0);
lcd.print(" Voltimetro ");
lcd.setCursor(0,1);
lcd.print(" 10.0 Volts ");
break;
}
} //end menu1
void menu2()
{
switch(sub_menu)
{
case 1:
lcd.setCursor(0,0);
lcd.print("< Amperimetro >");
lcd.setCursor(0,1);
lcd.print(" ");
break;
case 2:
lcd.setCursor(0,0);
lcd.print(" Amperimetro ");
lcd.setCursor(0,1);
lcd.print(" 1.5 Amps ");
break;
}
} //end menu2
void menu3()
{
switch(sub_menu)
{
case 1:
lcd.setCursor(0,0);
lcd.print("< Ohmimetro >");
lcd.setCursor(0,1);
lcd.print(" ");
break;
case 2:
lcd.setCursor(0,0);
lcd.print(" Ohmimetro ");
lcd.setCursor(0,1);
lcd.print(" 100 Ohms ");
break;
}
} //end menu3
void menu4()
{
switch(sub_menu)
{
case 1:
lcd.setCursor(0,0);
lcd.print("< Wattimetro ");
lcd.setCursor(0,1);
lcd.print(" ");
break;
case 2:
lcd.setCursor(0,0);
lcd.print(" Wattimetro ");
lcd.setCursor(0,1);
lcd.print(" 55 Watts ");
break;
}
} //end menu4