Étape 2: Le code (à partir de http://www.multiwingspan.co.uk par M Atkinson)
code orignal faite par M Atkinson, veuillez consulter son site Web http://www.multiwingspan.co.ukquelques modifications mineures par cronos_80
#include < Wire.h >
#include « RTClib.h »
RTC_DS1307 CCF ;
int datapin = 2 ;
int clockpin = 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 n'est pas running!") ;
suivant ligne définit le CCF à la date et l’heure de que cette esquisse a été compilée
RTC.adjust (DateTime (__DATE__, __TIME__)) ;
}
pinMode (datapin, sortie) ;
pinMode (clockpin, sortie) ;
pinMode (latchpin, sortie) ;
pinMode (datapin2, sortie) ;
pinMode (clockpin2, sortie) ;
pinMode (latchpin2, sortie) ;
}
void loop()
{
DateTime maintenant = RTC.now() ;
Tous utilisés pour vérifier l’heure de l’horloge
Cette section peut être enlevée lorsque tout fonctionne
Serial.Print(Now.Hour(), DEC) ;
Serial.Print(':') ;
Serial.Print(Now.minute(), DEC) ;
Serial.Print(':') ;
Serial.Print(Now.second(), DEC) ;
Serial.println() ;
Fin de l’article qui peut être enlevé
mins int = now.minute() ;
int secs = now.second() ;
int h = now.hour() ;
convertir en format 12 h
Si (RH > 12)
{
HR = RH-12 ;
}
variables pour décrire le schéma des feux
data1 octets = 0 ;
data2 octets = 0 ;
coder le temps
HR = 1er quatre bits, contrôlées par le premier registre à décalage
pour (int i = 0; i < 4; i ++)
{
Si (bitRead(hr,i)==1)
{
bitWrite(data1,3-i,1) ;
}
}
minutes sur le premier registre à décalage (4 leds)
pour (int i = 2; i < 6; i ++)
{
Si (bitRead(mins,i)==1)
{
bitWrite(data1,9-i,1) ;
}
}
minutes sur le deuxième Registre à décalage (2 premières leds)
pour (int i = 0; i < 2; i ++)
{
Si (bitRead(mins,i)==1)
{
bitWrite(data2,1-i,1) ;
}
}
secondes, contrôlées par le deuxième Registre à décalage (tous les 6 leds)
pour (int i = 2; i < 8; i ++)
{
Si (bitRead(secs,i-2)==1)
{
bitWrite(data2,9-i,1) ;
}
}
sortir les informations
writeByte(data1,1) ;
writeByte(data2,2) ;
une pause chaque une seconde pour la sortie de la série monitor
Delay(1000) ;
}
Sub writeByte (octet de données, jeu octets)
{
int d, c, l ;
Si (valeur == 1)
{
d = 2 ;
c = 3 ;
l = 4 ;
}
else if (valeur == 2)
{
d = 8 ;
c = 9 ;
l = 10 ;
}
shiftOut (d, c, MSBFIRST, données) ;
activer/désactiver la goupille de verrouillage afin que les données s’affichent en tant que sortie
digitalWrite (l, HIGH) ;
digitalWrite (l, faible) ;
}