Stap 2: De code (van http://www.multiwingspan.co.uk door M Atkinson)
orignal code die door M Atkinson, controleer zijn website http://www.multiwingspan.co.ukpaar kleine aanpassingen gemaakt door cronos_80
#include < Wire.h >
#include "RTClib.h"
RTC_DS1307 RTC;
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 is NOT running!");
de RTC gevolgd ingesteld op de datum en tijd die deze schets werd samengesteld
RTC.adjust (DateTime (__DATE__, __TIME__));
}
pinMode (datapin, OUTPUT);
pinMode (clockpin, OUTPUT);
pinMode (latchpin, OUTPUT);
pinMode (datapin2, OUTPUT);
pinMode (clockpin2, OUTPUT);
pinMode (latchpin2, OUTPUT);
}
void loop
{
DateTime nu = RTC.now();
Alle gebruikte voor het controleren van de tijd van de klok
Deze sectie kan worden verwijderd wanneer alles werkt
Serial.Print(Now.Hour(), DEC);
Serial.Print(':');
Serial.Print(Now.Minute(), DEC);
Serial.Print(':');
Serial.Print(Now.Second(), DEC);
Serial.println();
Einde van sectie die kan worden verwijderd
int minuten = now.minute();
int SEC = now.second();
int hr = now.hour();
omzetten in 12 uur tijd
Als (hr > 12)
{
HR = hr-12;
}
variabelen voor het beschrijven van patroon van licht
byte data1 = 0;
byte data2 = 0;
coderen van de tijd
HR = 1ste vier bits gecontroleerd door het eerste shift register
for (int i = 0; ik < 4; i ++)
{
Als (bitRead(hr,i)==1)
{
bitWrite(data1,3-i,1);
}
}
minuten op de eerste shift register (laatste 4 LED's)
for (int i = 2; ik < 6; i ++)
{
Als (bitRead(mins,i)==1)
{
bitWrite(data1,9-i,1);
}
}
minuten op het tweede shift register (eerste 2 leds)
for (int i = 0; ik < 2; i ++)
{
Als (bitRead(mins,i)==1)
{
bitWrite(data2,1-i,1);
}
}
seconden, gecontroleerd door de tweede shift register (alle 6 leds)
for (int i = 2; ik < 8; i ++)
{
Als (bitRead(secs,i-2)==1)
{
bitWrite(data2,9-i,1);
}
}
uitgang van de informatie
writeByte(data1,1);
writeByte(data2,2);
een pauze elke één seconde voor de seriële monitor-uitgang
delay(1000);
}
VOID writeByte (bytegegevens, byte set)
{
int d, c, l;
Als (instellen == 1)
{
d = 2;
c = 3;
l = 4;
}
anders als (instellen == 2)
{
d = 8;
c = 9;
l = 10;
}
shiftOut (d, c, MSBFIRST, gegevens);
de klink pin te schakelen zodat de gegevens worden weergegeven als een uitgang
digitalWrite (l, hoge);
digitalWrite (l, laag);
}