Paso 3: Programación de botones para las tareas
Esta pantalla LCD tiene 6 botones, que sólo 4 de los cuales estoy usando en mi programa. Hay un botón select, arriba, abajo, izquierda, derecha y puesta a cero. El reset es duro conectado en el reset Arduino Uno así que no hay nada que podamos hacer con él. El botón de selección quedo fuera de mi programa y solo usar el botón derecho en su lugar. Por alguna razón tiene el botón de selección ser hasta ahora a la izquierda de arriba y abajo fieltro antinatural desplazamiento por los menús.
La función que determina que tecla acaba se llama evaluateButton(). Justo antes de llamar a la función que usted necesita leer la señal analógica de la A0 de la entrada en la ONU y guardarlo en la variable readKey. Cuando se llama a la función evaluateButton() hacen evaluateButton(readKey). Esto enviará a que función de la señal de A0 y la función de determinar qué botón asociado a y devuelve el número de botón en forma de número entero.
Aquí está un ejemplo de llamar a un control de botón:
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 función de evaluateButton() tiene este aspecto:
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 manera más fácil y más limpia para utilizar esa variable botón es con un switch/case. Una función de interruptor/caso esencialmente mira esa variable botón y partidos a "caso". La programación en este caso se ejecuta si coincide con el botón presionado. Por ejemplo:
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; }
Idealmente se anida la llamada evaluación de botón y el interruptor/caso dentro de un / mientras o bucle que se ejecute hasta que se pulsa un botón.