Paso 5: El LED reloj bosquejo
/ * Este esbozo corre un reloj con cinco matrices de LED basados en el chipset MAX72xx.
Se muestra un ejemplo que muestra la escritura y texto se desplaza a través de matrices de LED 4 en
Este esbozo utiliza el LedControlMS.h (de Makerspace) desde la página arriba, modificarion de la biblioteca de LEDControl.h.
Este esbozo utiliza las bibliotecas de Arduino tiempo y alambre y la DS3131RTC (biblioteca DS3232RCTC)
Dibujo asume el siguiente cableado para las matrices de LED MAX72xx-
pin 12 está conectado a la causar
PIN 11 está conectado a la CLK
PIN 10 está conectado a la carga
Correrá (pin de salida media) está encadenada a la causar de la siguiente LED para cada matriz excepto la última.
Cableado para el DS3231RTC
VCC y tierra están conectados a + 5VDC y Gnd, respectivamente
Reloj SDA--> analógico 4
SCL -> analógica 5
*/
#include < DS3232RTC.h > / / Biblioteca DS3232RTC reloj que también se encarga de DS3231RTC
#include < Time.h > //Used para reloj
#include < Wire.h > //Used para reloj
#include "LedControlMS.h" / / Nota que esto no es biblioteca LEDControl
int h1, h2, m1, m2; Cada matriz de LED mostrará un número: horas minutos 1 & 2, 1 y 2. Estas variables mantener el solo dígito
int s1 = 2; LED que cuenta los segundos
ad12 int; Utilizado para 12 horas
noMatrix int = 5; Número de matrices. La biblioteca ocupa hasta 8.
Boolean am = true; Para marcar am o PM inicializar como soy
LedControl lc=LedControl(12,11,10,noMatrix); Asignaciones de PIN y el número de matrices (5)
void setup() {}
En primer lugar, establecer la hora del sistema en una código de fecha y tiempo y luego establece el RTC de la hora del sistema.
La función setTime() es parte de la biblioteca de tiempo.
Horas Min seg dd mm aaaa
setTime (18, 18, 30, 25, 11, 2014); Configurar manualmente el reloj de Arduino
RTC.set(now()); conjunto de la RTC de la hora del sistema
Inicializar el MAX72XXs (en modo de ahorro de energía en el arranque--llamada de activación.
para (int i = 0; i < noMatrix; i ++) {//For de las matrices...
LC.Shutdown(i,false);
lc.setIntensity(i,1); Configurar el brillo a un valor bajo
lc.clearDisplay(i); Borrar la pantalla
}
Delay(100); Esperar entre actualizaciones de la pantalla
lc.clearAll();
}
void loop() {}
Ajustar am o pm booleano (soy fue inicializado como verdadero)
Si (hour() > 12)
{soy = false;
ad12 = (horas)-12;
}
/ * Aislar a horas y minutos, un dígito para cada matriz de LED.
Creo que queda mejor con un primer dígito en blanco a un solo dígito horas.
*/
Colocar cada dígito de la hora en su propia variable, h1 y h2
Si (ad12 < 10)
{
/*
En blanco 1 matriz de LED si < 10 hrs. (62 es un carácter en blanco).
También se puede insertar un cero, como con minutos.
*/
H1 = 151;
H2 = ad12; exhibiciones de LED 2 º dígito de la hora
}
otra cosa
{
Haber, sólo uso los dos dígitos de la hora en h1 y h2.
H1 = ad12/10; División entera por 10 devuelve el primer dígito de la hora.
H2 = ad12% 10; Modulo división por 10 devuelve el dígito 2.
}
Minutos aparecen por m1 y m2
Si (minute() < 10)
{
M1 = 0; Primer minuto LED d1splays cero
m2=minute(); 2 º dígito de minutos
}
otra cosa
{
M1 = (minutos) / 10;
m2=minute() % 10;
}
/*
Pantalla de horas y minutos, usando la función displayChar. Utiliza dos argumentos enteros:
el número de matriz de LED (0-7) y el carácter que aparecerá. Los números se muestran simplemente
pasando el número sí mismo como el 2 º argumento: es decir, lc.displayChar(0,h1)
*/
lc.displayChar(0,h1); Horas LED 1 dígito a la izquierda (#0).
lc.displayChar(1,h2); Dígitos de horas 2 LED # 1
lc.displayChar(3,m1); Minutos 1 dígito LED # 3. (Recordemos que el #2 se usa para marcar los segundos).
lc.displayChar(4,m2); Dígito de minutos 1 a #4
/ * Esta rutina determina que solo llevó a la luz para contar los segundos.
El LED del medio cuenta los segundos mediante la iluminación de un solo LED a la vez
a través de cada una de las 8 filas. Cuenta 8 LEDs en las vueltas impares y 7 impares.
Por lo tanto, dos filas contar 15 segundos.
*/
para (int r = 7; r > -1; i--) {//For de 8 hileras, a partir de la parte superior (#7)...
para (int c = 0; c < 8; c ++) {//For cada uno de los 8 leds en una fila (0 izquierda)...
/*
Encenderá el punto actual columna y fila. Éstos se parecen ser intercambiados en mi hardware.
Por lo tanto pasa los argumentos de la función de setLed() a continuación.
Correctamente, se trata como ser (int led #, int fila, int col, boolean).
Variable s1 contiene el número de LED (contar desde 0) de la matriz de LED utilizado para esto.
*/
Si (i %2 == 0 & & c == 7) //Even fila y col 7
{}
otra cosa
lc.setLed(s1,c,r,true); Encender LED dirigida por 3/4 seg
Delay(750);
lc.setLed(s1,c,r,false); Apague durante 1/4 seg
Delay(250);
}
}
}
}