Paso 3: codificación
El código es bastante sencillo: un temporizador cuenta continuamente hacia arriba por un segundo cada segundo (sorpresa, sorpresa). Cuando el temporizador llega a 61 segundos, expira y se convierte en 1 minuto y 1 segundo. Cuando el temporizador llega a 60 minutos, expira y se convierte en 1 hora, 0 minutos y 1 segundo. Y, del mismo modo, cuando el contador de hora 13, desliza una última vez, convirtiéndose en 1 hora, 0 minutos, 1 segundo. Es un reloj digital normal!
Arduino también comprueba distancia cada segundo, lo que significa que el Arduino compara la distancia previamente medida a la actual medida de distancia. Si estas dos medidas difieren en más de una cantidad fija (a 15 cm en este código), una alarma suena (sentido figurado), y el Arduino lo considera ser movimiento (¡ Hurra!). Este será el detonante para el resto del código.
Ahora para las cosas buenas. Lamentablemente, si el Arduino se desconectada o si reinicia o si la batería se agota, no hay forma para que el tablero de donde la mano de reloj se coloca. Esto tiene una solución simple: cada vez que botas de Arduino, (sí, usted) tendrá que colocar manualmente la mano reloj para reflejar la hora. Después de este una ajuste Arduino estará listo para hacer un seguimiento de la hora correcta en el futuro previsible.
Ahora para el movimiento de la mano!
El Arduino "mapas" de la posición de la mano con respecto a una posición de la 1:00. La 1:00 corresponde al paso número 172, y la 12:00 corresponde al paso número 2060. El resto de las horas se asignan por consiguiente.
Cuando se detecta movimiento, el Arduino comprueba el temporizador y Compruebe la última vez que se movió. Si la posición actual del Arduino es inferior a la posición correspondiente a la época actual, simplemente resta los valores de posición y se mueve el motor paso a paso ese número de pasos correspondiente.
Por ejemplo, si el Arduino último movido en 1, su "posición actual", la posición de la mano, sería a paso 172. Si entonces detecta movimiento en el 5:00, la hora que corresponde al paso número 860, sería simplemente restar los números de paso para obtener una diferencia de 688 pasos. La Junta entonces movería 688 pasos a la posición de 5:00.
Si la posición actual del Arduino es más que la posición correspondiente a la época actual, la Junta hace un cálculo diferente: 2060 - posición + posición de tiempo actual.
Por ejemplo: Si la hora actual es 1:00 (posición 172) y la posición actual es 5:00 (posición 860), funcionaría el cálculo: 2060-172 + 860 = 2748. Esto irá un circuito completo alrededor de la cara del reloj y del final en la posición de la 1:00.