Advertisement
Ruyter

Menu

Jul 28th, 2021
373
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.51 KB | None | 0 0
  1. /* MENÚ PARA APLICAÇÕES
  2. * - Menu de execução
  3. * - Menu de exibição no display LCD
  4. * - Trabalham em sincronismo
  5. */
  6.  
  7. #include <Wire.h>
  8. #include <LiquidCrystal_I2C.h>
  9. LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);
  10.  
  11. #define BotaoMenuAvanca 44
  12. #define BotaoMenuRetorna 43 // Não usar as portas I2C se tiver usando algum componente que use-a
  13. #define BotaoMenuAvancaCheck 92
  14. #define BotaoMenuRetornaCheck 93
  15. char menu = 1;
  16.  
  17. boolean vBtMenuAvanca, vBtMenuRetorna; //Variaveis que grava o ultimo valor lidos nos botões.
  18. // Utilizado pela função Checkbutton p/ identificar quando há uma alteração no estado do pino dos botões
  19.  
  20. void setup() {
  21. lcd.begin(20, 4);
  22.  
  23. pinMode(BotaoMenuAvanca, INPUT);
  24. pinMode(BotaoMenuRetorna, INPUT);
  25. digitalWrite(BotaoMenuAvanca, HIGH);
  26. digitalWrite(BotaoMenuRetorna, HIGH);
  27. }
  28.  
  29. void loop() {
  30.  
  31. // ========= EXECUÇÃO DO SISTEMA DE MENU
  32. switch (menu) { // Define checa qual tela atual
  33.  
  34. case 1: // executado quando na TELA 1
  35. switch (CheckButton()) {
  36. case BotaoMenuRetorna:
  37. lcd.clear(); Set_menu(6);
  38. break;
  39. case BotaoMenuAvanca:
  40. lcd.clear(); Set_menu(2);
  41. break;
  42. default: // Caso nenhum botão tenha sido apertado, ela executa a set_menu
  43. Set_menu(1); // mesmo assim para atualizar o display.
  44. }
  45. break;
  46.  
  47. case 2: // executado quando na TELA 2
  48. switch (CheckButton()) {
  49. case BotaoMenuRetorna:
  50. lcd.clear(); Set_menu(1);
  51. break;
  52. //case lerBotaoPosicao:
  53. case BotaoMenuAvanca:
  54. lcd.clear(); Set_menu(3);
  55. break;
  56. default: // Caso nenhum botão tenha sido apertado, ela executa a set_menu
  57. Set_menu(2); // mesmo assim para atualizar o display.
  58. }
  59. break;
  60.  
  61. case 3: // executado quando na TELA 3
  62. switch (CheckButton()) {
  63. case BotaoMenuRetorna:
  64. lcd.clear(); Set_menu(2);
  65. break;
  66. case BotaoMenuAvanca:
  67. lcd.clear(); Set_menu(4);
  68. break;
  69. default:
  70. Set_menu(3);
  71. }
  72. break;
  73.  
  74. case 4: // executado quando na TELA 4
  75. switch (CheckButton()) {
  76. case BotaoMenuRetorna:
  77. lcd.clear(); Set_menu(3);
  78. break;
  79. case BotaoMenuAvanca:
  80. lcd.clear(); Set_menu(5);
  81. break;
  82. default:
  83. Set_menu(4);
  84. }
  85. break;
  86.  
  87. case 5: // executado quando na TELA 5
  88. switch (CheckButton()) {
  89. case BotaoMenuRetorna:
  90. lcd.clear(); Set_menu(4);
  91. break;
  92. case BotaoMenuAvanca:
  93. lcd.clear(); Set_menu(6);
  94. break;
  95. default:
  96. Set_menu(5);
  97. }
  98. break;
  99.  
  100. case 6: // executado quando na TELA 6
  101. switch (CheckButton()) {
  102. case BotaoMenuRetorna:
  103. lcd.clear(); Set_menu(5);
  104. break;
  105. case BotaoMenuAvanca:
  106. lcd.clear(); Set_menu(1);
  107. break;
  108. default:
  109. Set_menu(6);
  110. }
  111. break;
  112. default: ;
  113. }
  114. }
  115. //================== CheckButton
  116. char CheckButton() {
  117. if (vBtMenuAvanca != digitalRead(BotaoMenuAvanca)) {
  118. vBtMenuAvanca = !vBtMenuAvanca;
  119. if (vBtMenuAvanca) return BotaoMenuAvancaCheck; else return BotaoMenuAvanca;
  120. } else if (vBtMenuRetorna != digitalRead(BotaoMenuRetorna)) {
  121. vBtMenuRetorna = !vBtMenuRetorna;
  122. if (vBtMenuRetorna) return BotaoMenuRetornaCheck; else return BotaoMenuRetorna;
  123. } else
  124. return 0;
  125. }
  126.  
  127. // ========= EXIBIÇÃO DO SISTEMA DE MENU
  128. void Set_menu(char index) {
  129. menu = index; // Atualiza a variável menu para a nova tela
  130. switch (menu) { // verifica qual a tela atual e exibe o conteúdo correspondente
  131. case 1: //==================== menu 1
  132. lcd.setCursor(0, 0);
  133. lcd.print(" TELA INICIAL ");
  134. break;
  135.  
  136. case 2: //==================== menu 2
  137. lcd.setCursor(0, 0);
  138. lcd.print(" TELA 2 ");
  139. break;
  140.  
  141. case 3: //==================== menu 3
  142. lcd.setCursor(0, 0);
  143. lcd.print(" TELA 3 ");
  144. break;
  145.  
  146. case 4: //==================== menu 4
  147. lcd.setCursor(0, 0);
  148. lcd.print(" TELA 4 ");
  149. break;
  150.  
  151. case 5: //==================== menu 5
  152. lcd.setCursor(0, 0);
  153. lcd.print(" TELA 5 ");
  154. break;
  155.  
  156. case 6: //==================== menu 6
  157. lcd.setCursor(0, 0);
  158. lcd.print(" TELA 6 ");
  159. break;
  160. default: ;
  161. }
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement