Paso 2: El dibujo
Seguramente, el primer paso es conectar los pulsadores para hacer un teclado. Su conexión es bastante fácil y lo único que necesita tener una mirada en el esquema de Fritzing adjunta.
Nota: Recuerde que los botones deben colocarse entre las dos secciones de medianas de la placa para evitar cortocircuitos. Por lo tanto, no podremos colocar nuestros botones como un teclado real en forma rectangular sino como una forma de línea.
Algo realmente útil es escribir los nombres de teclado en un pedazo de papel.
Vincular botones con números y teclas de control
El teclado tiene 12 botones: 10 se necesitan para representar números de 0 a 9 y dos de control el flujo de operación. Gracias a algunos #define somos capaces de enlazar cada botón con un conector específico.
Botones están normalmente abiertos. Eso significa que su estado predeterminado se establece en baja. Empujándolas a hacer su estado llegan a ser altos. Sólo cuando su estado se establece en alta
El acto de cambiar el estado de un botón de bajo a alto determina la inserción de un dígito (si se presiona un tecla de número) o un "evento" (si se presiona uno de los dos botones). Hemos implementado en la función readKey () .
Los dos Estados susodichos son causados por la solución circuital utilizada para este esquema. Gracias a las resistencias de pull-down conectadas a la tierra, el nivel de salida es 0 cuando los botones son liberado (interruptor abierto) y 1 (5 voltios) al pulsar (interruptor cerrado).
El teclado es la herramienta que permite dar comandos al Arduino, es por eso que pines pulsador se fijan como entrada en la función void setup () .
Como es sabido, las dos funciones esenciales de un sketch de Arduino son void loop () y void setup (). La primera función se ejecuta sólo una vez y básicamente hace algunos controles o inicializa pernos y componentes. En el segundo es el código que se ejecuta repetidamente. Por lo tanto, detener indefinidamente la ejecución del código que hicimos la función wait() . Cuando Arduino ejecuta esta función entra en una especie de "estado de espera"; de hecho, este mientras que lazo es vacío y verdadero hasta que no se pulse ningún botón. Cualquier tecla pulsada hace Arduino salir de este bucle y ejecutar la siguiente instrucción.
La función insertNumb)
La parte más compleja del código es la que se incluye en la función void insertNumb () . Excepto de un montón de sentencias condicionales, la idea principal detrás de esta función son los dos bucles para . El primer lazo analiza las cifras del primer número mientras que el segundo analiza cifras de segundos.
Como dicho anteriormente, la función se ve muy compleja debido a muchos condicionales. Estas declaraciones son necesarios para gestionar la captura de flujo de datos.
Básicamente, fuerza la función interrumpir a sí mismo si el usuario presiona DEL o ir encendido si presiona OK.
Por ejemplo, si uno presiona OK mientras está funcionando el primer bucle, una instrucción condicional aumenta el valor de "i" variable x 5. Por lo tanto, la instrucción if que precede el siguiente bucle para llega a ser verdad lo que permite la captura de datos de los dígitos del número segundo.
Leyendo el código fuente es posible ver una gran cantidad de retraso, aparentemente se separó en forma aleatoria. Realmente son muy importantes porque sincronizar las operaciones de teclado. Por ejemplo, la primera demora en el void insertNumb () es necesario para evitar la interpretación de las teclas de selección como el primer dígito del primer número.
void loop)
El código en esta función podría ser un poco complejo a simple vista, pero lo que pasa es realmente muy simple.
La variable principal se llama operación. Sólo asume cuatro valores: 0, 1, 2 y 3 correspondientes a los cálculos básicos anteriormente nombrados.
Una vez elegida una operación, gracias a algunas sentencias condicionales el algoritmo va a la parte derecha del código y hace el cálculo seleccionado por el usuario. Puesto que el máximo permitido es de valor 99999, esas declaraciones condicionales también comprobar si este número es superado.