Paso 3: La electrónica y el programa explicado
Como se explica que estoy utilizando un Arduino Nano (o clon) a cambio de coche 3 * 595 registros y un RTC conectado al I2C para guardar tiempo. En este punto lo probar y explicar las partes más difíciles del código, ya que no es una obvia al trabajo, (aunque es fácil una vez que usted trabaja hacia fuera).
El tiempo es suministrado por el reloj de tiempo Real segundos 0-59, minutos 0-59 y horas 0 a 23. Porque el reloj se basa en 5 que necesita dividir los minutos (y horas) por 5 primero esto te dará la fila de "5 minutos" (en segundo lugar
uno para arriba) si usted entonces calcular el módulo de cálculo y luego que te da el resto que es el 0-4 minutos (conclusión).
es decir, minutos = 48
48/5 = 9 (almacenar como minFives)
48 %5 = 3 (almacenar como minUnits)
9 luces en la segunda fila por 45 minutos luego 3 luces en la fila inferior para 3 minutos añadir los dos juntos le da 48.
sólo quedarse con los minutos que el siguiente problema es el cambio 595 registro contiene los bits 8 y necesito usar uno completamente y 3 "trozos" de otro registro.
Así que para hacer este look en minFives (0-11) y si el número es mayor que 7 entonces dividir el valor en dos valores.
es decir, si (minFives > 7)
La próxima edición es mostrar todas las luces y no sólo el número real, así que en el ejemplo anterior (48) tiene 3 Bombillas en la fila inferior y 9 luces en la segunda fila. Para corregir esto para la fila inferior que necesita para convertir en luz 1 y luz 2 y luz 3, lo que significa un número de 7 (total 1 + 2 + 4) debe enviar el registro serial. Estoy seguro que hay más de una forma de hacer esto pero escogí a ejecutar un bucle para el número dado y para cada bucle doble el número de índice para el archivo. (véase abajo para la función pow() como alternativa)
es decir
Esperamos que usted puede trabajar esto hacia fuera, pero básicamente se obtendrá el número correcto de LED iluminada para un número dado de entrada.
es decir, 1 = 1, 2 = 3, 3 = 7, 4 = 15, 5 = 31
Me di cuenta después de que escribí esto que podría utilizar la función pow() así que probarlo y ver si su más eficiente. ejemplo, entrada 6 (pow(2,6)) -1 = 63
(Lo probé y no hay mucha diferencia en el tiempo, ambos son realmente rápidos. Supongo que el pow() parece más ordenado pero me quedé con la función anterior)