Paso 1: Un Arduino hace un pobre reloj - simulando un reloj en Software
Cuando afronto un proyecto complejo, me gusta romper en pasos discretos, basados en la funcionalidad y el cableado. Entonces, cuando algo sale mal, yo puedo siempre recurrir al estado anterior "bien conocido" para ayudar a averiguar lo que salió mal.
Empezaremos a escribir algún código simple para segundos, minutos y horas utilizando el contador interno de Arduino que rastrea el tiempo, en milisegundos, ya que la junta fue encendido o reset.
Aquí está nuestro bosquejo inicial, bibliotecas ni cableado. Tiempo se muestra simplemente utilizando la consola serial:
// time variables<br> long lastMillis; int hours = 0; int minutes = 0; int seconds = 0; void setup() { Serial.begin(9600); // Open channel to serial console Serial.println("Arduino Clock Step 1"); } void loop() { long curMillis = millis(); // get current counter in milliseconds if (curMillis > (lastMillis + 1000)){ // If one second has passed: lastMillis = lastMillis + 1000; seconds = seconds + 1; // increment seconds if (seconds > 59){ seconds = 0; minutes = minutes + 1; // increment minutes if (minutes > 59){ minutes = 0; hours = hours + 1; // increment hours if (hours > 23){ hours = 0; } } } // Display time on serial console Serial.print(hours); Serial.print(":"); Serial.print(minutes); Serial.print(":"); Serial.println(seconds); } }
Puede establecer las variables de tiempo antes de cargar el sketch y Arduino mantendrá plazo de tiempo razonable (dentro de un minuto por día) hasta un reset o se produce el ciclo de alimentación.
Tiempo para explorar:
- ¿Se puede arreglar la salida por lo que si se menos de 10 horas o minutos, se muestra un "0" inicial?
- ¿Qué tan preciso es tu Arduino? ¿Podría calibrar a ejecutar con mayor precisión?
- ¿Podría utilizar el Pin 13 LED Digital para indicar el paso de segundos?