Cómo ejecutar el bucle principal para su entrada de proyecto Arduino sistema de teclado

Usted tendrá que ejecutar un bucle principal de su sistema de entrada de teclado proyecto Arduino. Sólo hay un par de cosas que hace el código para hacer funcionar el sistema de entrada. El bucle principal funciona como sigue:

  1. Escuche una tecla.

  2. Si se ha pulsado una tecla, enviarlo a la pantalla LED.

  3. Incrementar el número de pulsaciones de teclas a uno.

  4. Introduzca en el búfer de código en la siguiente posición disponible.

  5. Determinar si se han introducido cuatro dígitos.

    Si es así, comprobar si el código es válido.

  6. Si el código es válido, abrir la puerta y restablecer todo para la próxima vez.

Lo principal que hay que hacer es comprobar si una tecla ha sido presionada. La primera sentencia crea un local de Char variable llamada llave para almacenar el carácter que se envía de vuelta de una función llamada getKey (). Recuerde que la mapa de teclado? Ahí es donde este número viene en última instancia de.

El valor del carbón llave También se asigna a la codeBuffer [] matriz, que se utiliza para comprobar si el código es válido. Se añade a la posición almacenada por keypressCount, que se incrementa hacia arriba cada vez que se detecta un nuevo carácter. los " cero th " personaje es la primera pulsación detectada. Así codeBuffer [0] contiene la primera tecla pulsada en el teclado, codeBuffer [1] contiene la segunda tecla pulsada, y así sucesivamente.

El siguiente condicional si sentencia se ejecuta sólo cuando una tecla se ha pulsado, momento en el que los pasos 2 a 6 de la lista anterior se procesan. Si no se ha pulsado una tecla, el programa sólo espera para que eso suceda. Cuando lo hace, el sendCommand función ejecuta:

sendCommand (keypressCount + 1, clave) -

los sendCommand toma dos parámetros: número de módulo que siete segmentos para cambiar, y lo que le cambiárselo. Tu usas keypressCount no sólo para mantener un registro del número de veces que las teclas se han pulsado hasta ahora, sino también para decir que siete segmentos dígitos para iluminar.

Sin embargo, keypressCount comienza en cero porque el código [] el amortiguador[] arreglos de char comienzan su numeración en cero, y que desea almacenar esos valores en el lugar correcto. Pero el chip Max comienza dígitos de numeración de 1. Por lo tanto, para usar keypressCount para iluminar el dígito de siete segmentos correcta, hay que añadir una (+1) A su valor.

La siguiente sentencia implementa esa característica de depuración útil. Si ha establecido la DEBUG boolean a cierto, el código imprimirá todas las variables para el puerto serie.

A continuación, incrementar el keypressCount por uno y luego probar para ver si se han presionado cuatro dígitos. Si es así, es hora del show. los delay (500) declaración le da medio segundo para ver el código del último acceso dígito introducido debido a que la pantalla cambiará dependiendo de si se ha introducido el código de acceso correcto. Esta prueba se realiza con un poco de código de lenguaje C orígenes:

si (memcmp (codeBuffer, código, 4) == 0) {if (DEBUG) {Serial.println ("PARTIDO!") -} de desbloqueo () -}

La funcion memcmp () compara dos artículos en la memoria y toma como parámetros los dos artículos y sus longitudes esperados. En este caso, usted está comparando el codeBuffer matriz y el código almacenado en el comienzo del programa. Ambos tienen una longitud de cuatro bytes.

Si son exactamente lo mismo, el memcmp () función devuelve un cero y eso es exactamente lo que usted está buscando en la sentencia condicional. Si son los mismos (y DEBUG es cierto), " PARTIDO "! se imprime al puerto serie y la desbloquear() función se ejecuta. Si la comparación la memoria falla, entonces la función no devuelve un " 0, " es decir, el código incorrecto se ingresó.

En cualquier caso, usted quiere borrar la pantalla, listo para la próxima vez. Así se llama a la clearDisplay () función. Otra enseñanza del idioma nativo de C hace un poco de limpieza de la memoria:

memset (codeBuffer, 0, 4) -

Esto borra el codeBuffer explícitamente por ajustarlo a 0. Su longitud es de 4, que es el segundo parámetro. Algunos podrían argumentar que esta instrucción no es necesario, pero es una buena práctica para gestionar de forma explícita la memoria en lugar de dejar las cosas al azar.

Por último, porque esta era la cuarta pulsación de tecla y sólo hay cuatro dígitos para evaluar el keypressCount Hay que resetear a cero para que esté listo para la próxima iteración.




» » » » Cómo ejecutar el bucle principal para su entrada de proyecto Arduino sistema de teclado