Paso 2: El código (del http://www.multiwingspan.co.uk de M Atkinson)
código orignal por M Atkinson, compruebe por favor su sitio web http://www.multiwingspan.co.ukalgunas pequeñas modificaciones hechas por cronos_80
#include < Wire.h >
#include "RTClib.h"
RTC_DS1307 RTC;
int datapin = 2;
clockpin int = 3;
int latchpin = 4;
int datapin2 = 8;
int clockpin2 = 9;
int latchpin2 = 10;
void setup()
{
Serial.Begin(57600);
Wire.Begin();
RTC.begin();
if (!. {RTC.isrunning())}
Serial.println ("RTC no corre!");
línea establece el RTC en la fecha y hora que este sketch fue compilado
RTC.adjust (DateTime (__DATE__, __TIME__));
}
pinMode (datapin, salida);
pinMode (clockpin, salida);
pinMode (latchpin, salida);
pinMode (datapin2, salida);
pinMode (clockpin2, salida);
pinMode (latchpin2, salida);
}
void loop()
{
Fecha y hora = ahora RTC.now();
Todo usado para el control de la hora del reloj
Esta sección puede ser quitada cuando todo está funcionando
Serial.Print(Now.hour(), DEC);
Serial.Print(':');
Serial.Print(Now.minute(), DEC);
Serial.Print(':');
Serial.Print(Now.Second(), DEC);
Serial.println();
Final de la sección que se puede quitar
int minutos = now.minute();
int segundos = now.second();
int hora = now.hour();
convertir a 12 horas
Si (horas > 12)
{
HR = hr-12;
}
variables para describir el patrón de luces
byte data1 = 0;
byte data2 = 0;
codificar el tiempo
HR = 1 cuatro bits controlados por el primer registro de desplazamiento
para (int i = 0; i < 4; i ++)
{
Si (bitRead(hr,i)==1)
{
bitWrite(data1,3-i,1);
}
}
minutos en el primer registro de desplazamiento (últimos 4 leds)
para (int i = 2; i < 6; i ++)
{
Si (bitRead(mins,i)==1)
{
bitWrite(data1,9-i,1);
}
}
minutos en el segundo registro de desplazamiento (2 leds)
para (int i = 0; i < 2; i ++)
{
Si (bitRead(mins,i)==1)
{
bitWrite(data2,1-i,1);
}
}
segundos, controlados por el segundo registro de desplazamiento (todos 6 leds)
para (int i = 2; i < 8; i ++)
{
Si (bitRead(secs,i-2)==1)
{
bitWrite(data2,9-i,1);
}
}
la información de salida
writeByte(data1,1);
writeByte(data2,2);
una pausa cada un segundo para la salida del monitor serial
Delay(1000);
}
void writeByte (datos del octeto, byte conjunto)
{
int d, c, l;
Si (sistema == 1)
{
d = 2;
c = 3;
l = 4;
}
else if (set == 2)
{
d = 8;
c = 9;
l = 10;
}
shiftOut (d, c, MSBFIRST, datos);
cambiar la clavija de enganche para que los datos aparecen como una salida
digitalWrite (l, alto);
digitalWrite (l, LOW);
}