Advertisement
Guest User

Untitled

a guest
Jun 21st, 2022
21
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #define Def_tempo 5000 // Define o tempo de espera, após pressionar o botão
  2. #define Def_NumBotao 10 // Define o numero do GPIO, para receber o sinal do botão
  3. #define Def_NumBotao_2 11 // Número do pino do botão ETAPA 3
  4. #define Def_NumBotao_3 12 // Número do pino do botão ETAPA 3
  5.  
  6. unsigned long botao_millis; // armazenar o millis() no insante.
  7. bool chave_menu; // Variável responsável por (des)ativar o menu
  8. bool chave_menu_old; // Armazena o valor de "chave_menu"
  9. int Variavel_de_dados;
  10.  
  11. void setup() { // Função de inicialização
  12. Serial.begin(115200); // Inicializa o monitor serial, a 115200
  13. pinMode(Def_NumBotao, INPUT); // Define "Def_NumBotao" como "entrada" (input)
  14. pinMode(Def_NumBotao_2, INPUT); // Define o pino como entrada
  15. pinMode(Def_NumBotao_3, INPUT); // Define o pino como entrada
  16. }
  17.  
  18. void loop() {
  19. // ===============================
  20. // (des)ativa a função menu_ativo
  21. // ===============================
  22. if (chave_menu == 1) {
  23. menu_ativo();
  24. }
  25.  
  26. // =======================================================================
  27. // Gerencia o botão (5 segundos) para habilitar a variável "chave_menu"
  28. // =======================================================================
  29. if (digitalRead(Def_NumBotao) == HIGH) { // Verifica se o botão ESTÁ pressionado
  30. if (millis() - botao_millis >= Def_tempo) { // Verifica se o valor atual do tempo, menos o tempo salvo, é igual a "def_tempo"
  31. // Serial.println("Botão Pressionado por 5 segundos ou mais"); // Em caso positivo, imprime.
  32. // =================================================
  33. // início da área onde a mágica irá acontecer
  34. // =================================================
  35. if (chave_menu == chave_menu_old) { // Se chave_menu for igual a chave_menu_old, habilita a mudança de "chave_menu"
  36. if (chave_menu == 0) { // Se chave_menu for igual a 0
  37. chave_menu = 1; // chave_menu será igual a 1
  38. } // fecha o "if"
  39. else if (chave_menu == 1) { // Se chave_menu for igual a 1
  40. chave_menu = 0; // chave_menu será igual a 0
  41. } // fecha o "else if"
  42. Serial.print("chave_menu ="); // imprime o TEXTO "chave_menu ="
  43. Serial.println(chave_menu); // IMPRIME, o valor da VARIÁVEL "chave_menu"
  44. // ============================================
  45. // Fim da área, onde a mágica acontece.
  46. // ============================================
  47. }
  48. }
  49. }
  50. else { // Caso o botão NÃO ESTEJA PRESSIONADO //
  51. botao_millis = millis(); // Salva o valor atual do tempo
  52. chave_menu_old = chave_menu; // Iguala o valor de chave_menu_old ao chave_menu
  53. }
  54. }
  55.  
  56. void menu_ativo() {
  57. if (digitalRead(Def_NumBotao_2) == HIGH) { // se o "Def_NumBotao_2" foi pressionado
  58. Variavel_de_dados = Variavel_de_dados + 1;
  59. }
  60. else if (digitalRead(Def_NumBotao_3) == HIGH) { // se o "Def_NumBotao_3" foi pressionado
  61. Variavel_de_dados = Variavel_de_dados - 1;
  62. }
  63. Serial.print("MENU ATIVO ---- ");
  64. Serial.print("Variavel_de_dados = ");
  65. Serial.println(Variavel_de_dados);
  66. }
Advertisement
RAW Paste Data Copied
Advertisement