Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /* MENÚ PARA APLICAÇÕES
- * - Menu de execução
- * - Menu de exibição no display LCD
- * - Trabalham em sincronismo
- */
- #include <Wire.h>
- #include <LiquidCrystal_I2C.h>
- LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
- #define BotaoMenuAvanca 44
- #define BotaoMenuRetorna 43 // Não usar as portas I2C se tiver usando algum componente que use-a
- #define BotaoMenuAvancaCheck 92
- #define BotaoMenuRetornaCheck 93
- char menu = 1;
- boolean vBtMenuAvanca, vBtMenuRetorna; //Variaveis que grava o ultimo valor lidos nos botões.
- // Utilizado pela função Checkbutton p/ identificar quando há uma alteração no estado do pino dos botões
- void setup() {
- lcd.begin(20, 4);
- pinMode(BotaoMenuAvanca, INPUT);
- pinMode(BotaoMenuRetorna, INPUT);
- digitalWrite(BotaoMenuAvanca, HIGH);
- digitalWrite(BotaoMenuRetorna, HIGH);
- }
- void loop() {
- // ========= EXECUÇÃO DO SISTEMA DE MENU
- switch (menu) { // Define checa qual tela atual
- case 1: // executado quando na TELA 1
- switch (CheckButton()) {
- case BotaoMenuRetorna:
- lcd.clear(); Set_menu(6);
- break;
- case BotaoMenuAvanca:
- lcd.clear(); Set_menu(2);
- break;
- default: // Caso nenhum botão tenha sido apertado, ela executa a set_menu
- Set_menu(1); // mesmo assim para atualizar o display.
- }
- break;
- case 2: // executado quando na TELA 2
- switch (CheckButton()) {
- case BotaoMenuRetorna:
- lcd.clear(); Set_menu(1);
- break;
- //case lerBotaoPosicao:
- case BotaoMenuAvanca:
- lcd.clear(); Set_menu(3);
- break;
- default: // Caso nenhum botão tenha sido apertado, ela executa a set_menu
- Set_menu(2); // mesmo assim para atualizar o display.
- }
- break;
- case 3: // executado quando na TELA 3
- switch (CheckButton()) {
- case BotaoMenuRetorna:
- lcd.clear(); Set_menu(2);
- break;
- case BotaoMenuAvanca:
- lcd.clear(); Set_menu(4);
- break;
- default:
- Set_menu(3);
- }
- break;
- case 4: // executado quando na TELA 4
- switch (CheckButton()) {
- case BotaoMenuRetorna:
- lcd.clear(); Set_menu(3);
- break;
- case BotaoMenuAvanca:
- lcd.clear(); Set_menu(5);
- break;
- default:
- Set_menu(4);
- }
- break;
- case 5: // executado quando na TELA 5
- switch (CheckButton()) {
- case BotaoMenuRetorna:
- lcd.clear(); Set_menu(4);
- break;
- case BotaoMenuAvanca:
- lcd.clear(); Set_menu(6);
- break;
- default:
- Set_menu(5);
- }
- break;
- case 6: // executado quando na TELA 6
- switch (CheckButton()) {
- case BotaoMenuRetorna:
- lcd.clear(); Set_menu(5);
- break;
- case BotaoMenuAvanca:
- lcd.clear(); Set_menu(1);
- break;
- default:
- Set_menu(6);
- }
- break;
- default: ;
- }
- }
- //================== CheckButton
- char CheckButton() {
- if (vBtMenuAvanca != digitalRead(BotaoMenuAvanca)) {
- vBtMenuAvanca = !vBtMenuAvanca;
- if (vBtMenuAvanca) return BotaoMenuAvancaCheck; else return BotaoMenuAvanca;
- } else if (vBtMenuRetorna != digitalRead(BotaoMenuRetorna)) {
- vBtMenuRetorna = !vBtMenuRetorna;
- if (vBtMenuRetorna) return BotaoMenuRetornaCheck; else return BotaoMenuRetorna;
- } else
- return 0;
- }
- // ========= EXIBIÇÃO DO SISTEMA DE MENU
- void Set_menu(char index) {
- menu = index; // Atualiza a variável menu para a nova tela
- switch (menu) { // verifica qual a tela atual e exibe o conteúdo correspondente
- case 1: //==================== menu 1
- lcd.setCursor(0, 0);
- lcd.print(" TELA INICIAL ");
- break;
- case 2: //==================== menu 2
- lcd.setCursor(0, 0);
- lcd.print(" TELA 2 ");
- break;
- case 3: //==================== menu 3
- lcd.setCursor(0, 0);
- lcd.print(" TELA 3 ");
- break;
- case 4: //==================== menu 4
- lcd.setCursor(0, 0);
- lcd.print(" TELA 4 ");
- break;
- case 5: //==================== menu 5
- lcd.setCursor(0, 0);
- lcd.print(" TELA 5 ");
- break;
- case 6: //==================== menu 6
- lcd.setCursor(0, 0);
- lcd.print(" TELA 6 ");
- break;
- default: ;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement