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

Usted tendrá que ejecutar un bucle principal para 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. Escuchar para una clave.

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

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

  4. Introducirla en la memoria intermedia 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.

    Video: Curso Arduino #13 - Teclado

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

Video: Arduino Proyecto 4 - Lectura de Puertos de Entrada Digitales

El valor del carbón de leña 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 personaje. El carácter de “cero-ésima” es la primera pulsación de tecla detectado. Asi que codeBuffer [0] contiene la primera tecla pulsada en el teclado, codeBuffer [1] contiene la segunda tecla pulsada, y así sucesivamente.

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

sendCommand (keypressCount + 1, key) -

los sendCommand tiene dos parámetros: número de módulo que de siete segmentos para cambiar, y qué hay que cambiar a. Tu usas keypressCount no sólo para realizar un seguimiento del número de teclas veces se han presionado hasta ahora, sino también para decir qué dígitos de siete segmentos para que se ilumine.

Video: Sistema Arduino de acceso por contraseña para puerta

Sin embargo, keypressCount comienza en cero debido a que el código[] el buffer[] arrays 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 utilizar keypressCount para iluminar la correcta dígitos de siete segmentos, hay que añadir una (+1) A su valor.

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

A continuación, se incrementará el keypressCount por uno y luego probar para ver si se han pulsado cuatro dígitos. Si es así, comienza el espectáculo. los retardo (500) declaración le da un 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 idioma nativo de C:

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

La función memcmp () compara dos artículos en la memoria y toma como parámetros los dos artículos y sus longitudes esperadas. 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 está buscando en la sentencia condicional. Si son el mismo (y DEPURAR es verdad), "¡PARTIDO!" se imprime en un puerto serie y el desbloquear() se ejecuta la función. Si la comparación falla la memoria, la función no devuelve un “0”, es decir se ha introducido un código incorrecto.

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

memset (codeBuffer, 0, 4) -

Esto limpia la codeBuffer explícitamente configurando 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, ya que esta era la cuarta pulsación de tecla y sólo hay cuatro dígitos para evaluar la keypressCount Hay que resetear a cero para que esté listo para la siguiente iteración.

Artículos Relacionados