Paso 3: Cómo funciona
El principio fundamental de este proyecto os Número binario.
Para cada número de horas, minutos y segundos necesita convertir de base 10 (decimal) a base 2 (binaria) y a código en segmentos de "A la G" de la pantalla.
Pero que es muy fácil usando la programación de Arduino.
Todos los números enteros dentro del rango de horas (00 a 23), minutos y segundos (00 a 59) son inferiores a 64 y así puede arreglar en 7 segmentos.
Echa un vistazo a esto:
// A// ------ // | | // F | | B // | G | // ------ // | | // E | | C // | D | // ------// 0 // ------ // | | // 16 | | 1 // | 32 | // ------ // | | // 8 | | 2 // | 4 | // ------
Puedes ver la corresponce perfecto entre: segmentos--> >--binario (Base 2)
G=32 / F=16 / E=8 / D=4 / C=2 / B=1 / A=0 32 16 8 4 2 1 0 G F E D C B A
Pero bueno!!! Hay un truco aquí!
Recuerde que Base 2 comienza desde 1 (potencia 2 0) y no cero!!
Cero en este caso significa que el segmento correspondiente de la pantalla se pondrá en Off y deseo que el primer segmento debe establecerse en el.
¿Cómo podemos hacerlo?
Echa un vistazo tras declaraciones de programación:
if (mm == 0) { shiftOut(dataPin, clockPin, MSBFIRST, 1); } else { shiftOut(dataPin, clockPin, MSBFIRST, mm << 1); }
Primero verifico si la variablle mm (minutos) es cero. En caso afirmativo, fuerza el LED a establecerse en el.
Para todos los números mayores que cero, cambio de posición de una izquierda del número binario corresponde al segmento correcto que necesito con el comando hh << 1.
Ejemplo:
Minutos = 0 entonces es binario 00000000 y se establecerá en 00000001
Minutos = 5 entonces es binario 00000101 y será cambio izquierda una posición a 00001010