Étape 3: Programmation des boutons pour les tâches
Cet écran LCD dispose de 6 boutons, que seulement 4 dont j’utilise dans mon programme. Il y a un bouton select, haut, bas, gauche, droite et remise à zéro. La réinitialisation est dure branché sur la réinitialisation de l’Arduino Uno, donc il n’y a rien que nous pouvons faire avec elle. La touche select est laissée hors de mon programme et je viens d’utiliser le bouton de droite à la place. Pour une raison quelconque ayant la touche select à avoir jusqu'à présent à gauche de haut en bas, se sentait contre nature pour la navigation.
La fonction qui détermine laquelle vous venez d’appuyer sur le bouton s’appelle evaluateButton(). Juste avant d’appeler cette fonction, vous devez lire le signal analogique de la A0 d’entrée sur l’ONU et l’enregistrer sur la variable readKey. Lorsque vous appelez la fonction evaluateButton() en font evaluateButton(readKey). Ceci enverra que fonction du signal d’A0 et la fonction vont déterminer quel bouton associé et retourner le nombre de bouton sous forme d’entier.
Voici un exemple d’appel pour un contrôle de bouton :
int button; // Declares a fresh button variablereadKey = analogRead(0); // Reads the analog signal from A0 and saves it to readKey if (readKey < 790) { // If the signal drops below 790 that means a button was // pressed. The if statement delays the program for 100 microseconds // to debounce the button press and let voltage stabilize delay(100); readKey = analogRead(0); // Once the voltage has stabilized read the signal again } button = evaluateButton(readKey); // Call the evaluateButton function and send it the readKey data // Whatever integer comes back save it to the button variable
La fonction evaluateButton() ressemble à ceci :
int evaluateButton(int x) { int result = 0; if (x < 50) { result = 1; // right } else if (x < 195) { result = 2; // up } else if (x < 380) { result = 3; // down } else if (x < 790) { result = 4; // left } return result; }
La façon plus simple et la plus propre d’utiliser cette variable de bouton est avec un switch/case. Une fonction switch/case essentiellement examine cette variable de bouton et elle correspond à « l’affaire ». La programmation à l’intérieur de cette affaire est exécutée si elle correspond à la touche enfoncée. Par exemple :
switch (button) { case 0: // When button returns as 0 break; case 1: // When button returns as 1 lcd.clear(); lcd.print("Forward Button"); break; case 2: // When button returns as 2 lcd.clear(); lcd.print("Up Button"); break; case 3: // When button returns as 3 lcd.clear(); lcd.print("Down Button"); break; }
Idéalement vous niche l’appel d’évaluation de bouton et le commutateur/carton à l’intérieur d’un / en ou en boucle qui continuera à exécuter jusqu'à ce qu’une touche est pressée.