Arduino Real Time Clock (DS1307) (4 / 7 steg)

Steg 4: Kontrollera och ställa in modulen



När du är klar montering modulen. Ansluta modulen till Arduino, så att stiften är ordentligt insatt i Arduino. Program för att testa modulen ges nedan. Koden uppdaterar ständigt tiden genom serieporten.

I ordning att köra modulen behöver vi två bibliotek vi behöver två bibliotek i Arduino programvaran. Följande steg Ställ Arduino programvaran med biblioteken behövs och koden.

Importerar bibliotek:

  • Ladda ner biblioteket "RealTimeClockDS1307" och spara den på skrivbordet.
  • Öppna Arduino och gå till skiss = > Importera bibliotek = > Lägg till bibliotek.
  • Sedan Välj biblioteket sparade på skrivbordet och klicka på Lägg till.
  • Nu Klistra in exempelkoden nedan och klicka på kompilera. Om det sammanställer framgångsrikt sedan hoppa över de återstående stegen.
  • Om det inte importera andra bibliotek "Wire" och upprepa samma procedur och kompilera koden och det kommer att fungera.

Kod fungerar:

Koden är skriven av "David H. Brown" jag bara använda den för att ge dig en introduktion till DS1307. Hur som helst Arduino kommunicerar med modulen RTC och uppdateras tiden för varje sekund genom Serial Monitor. Skaparen har givit oss ett alternativ till sätta tiden när vi skickar kommandot "?". Följande meny visas.

Prova dessa:
h ## - Ställ timmar [utbud 1..12 eller 0..24]
i ## - minuter [utbud 0..59]
s ## - ange sekunder [utbud 0..59]
d ## - Ställ in datum [utbud 1..31]
m ## - ange månad [utbud 1..12]
y ## - set år [utbud 0..99]
w ## - ange godtyckligt dagen i veckan [utbud 1..7]
t - toggle 24-timmarsvisning
en - uppsättningen AM p - ange PM

z - start klockan Z - stoppa klockan
q - SQW/OUT = 1Hz Q - stoppa SQW/ut

Denna kod hjälper dig att ställa in tiden samt kontrollera om modulens backup batteri fungerar korrekt. I nästa tutorial kommer jag visa dig hur man ställer in en LCD-Display och Visa tiden från RTC-modulen. Här är koden för att testa modulen och en bifogad fil av samma.

#include < Wire.h >
#include < RealTimeClockDS1307.h >

RealTimeClock RTC; //=new RealTimeClock();

#define Display_Clock_Every_N_Seconds 10 / / n.secs att visa datum/tid
#define Display_ShortHelp_Every_N_Seconds 60 / / n.secs att visa antydan om hjälp
#define TEST_Squarewave
#define TEST_StopStart
#define TEST_1224Switch

int count = 0;
char formaterade [] = "00-00-00 00:00:00 x";

void setup() {
Wire.BEGIN();
Serial.BEGIN(9600);
pinMode (A3, OUTPUT); stift 16 (Analog pin 2) som resultat ***
digitalWrite (A3, hög); stift 16 (Analog pin 2) låg ***
pinMode (A2, OUTPUT); PIN-17 (Analog pin 3) som utgång ***
digitalWrite (A2, låg); PIN-17 (Analog pin 3) hög ***
Analoga Pin-inställningar till RTC effektmodul ***
}

void loop() {
IF(Serial.available())
{
processCommand();
}

RTC.readClock();
greve ++;
om (count % Display_Clock_Every_N_Seconds == 0) {
Serial.Print(Count);
Serial.Print(":");
RTC.getFormatted(formatted);
Serial.Print(Formatted);
Serial.println();
}

om (count % Display_ShortHelp_Every_N_Seconds == 0) {
Serial.println ("Skicka? en lista över kommandon.");
}
#ifdef TEST_Squarewave
om (count % 10 == 0)
{
Switch (count/10% 6)
{
fall 0:
Serial.Print ("fyrkantsvåg inaktiverad (låg impedans):");
RTC.sqwDisable(0);
Serial.println((int) RTC.readData(7));
bryta;
fall 1:
Serial.Print ("fyrkantsvåg inaktiverad (hög impedans):");
RTC.sqwDisable(1);
Serial.println((int) RTC.readData(7));
bryta;
fall 2:
Serial.println ("fyrkantsvåg är aktiverat i 1 Hz");
RTC.sqwEnable(RTC.SQW_1Hz);
bryta;
fall 3:
Serial.println ("fyrkantsvåg aktiverat på 4.096 kHz");
RTC.sqwEnable(RTC.SQW_4kHz);
bryta;
fall 4:
Serial.println ("fyrkantsvåg aktiverat vid 8.192 kHz");
RTC.sqwEnable(RTC.SQW_8kHz);
bryta;
fall 5:
Serial.println ("fyrkantsvåg aktiverat vid 32.768 kHz");
RTC.sqwEnable(RTC.SQW_32kHz);
bryta;
standard:
Serial.println ("fyrkantsvåg prov inte definierad").
} //switch
}
#endif

#ifdef TEST_StopStart
om (count % 10 == 0)
{
IF (!. RTC.isStopped())
{
IF(RTC.getSeconds() < 45)
{
Serial.println ("stoppa klockan 10 sekunder");
RTC.stop();
} //if vi har tillräckligt med tid
} annat {
RTC.setSeconds(RTC.getSeconds()+11);
RTC.start();
Serial.println (att lägga till 11 sekunder och starta om klockan");
}
} //if på en multipel av 10 räknas
#endif

#ifdef TEST_1224Switch
om (count % 10 == 0)
{
om (count % 20 == 0)
{
Serial.println ("byta till 12-timmars tid");
RTC.switchTo12h();
RTC.setClock();
}
annat
{
Serial.println ("byta till 24-timmars tid");
RTC.switchTo24h();
RTC.setClock();
}
}
#endif
}

void processCommand() {
IF (!. Serial.available()) {återvänder;}
char kommando = Serial.read();
int i, in2;
Switch(Command)
{
fallet "H":
fallet "h":
in=SerialReadPosInt();
RTC.setHours(in);
RTC.setClock();
Serial.Print ("ställa in timmar");
Serial.println(in);
bryta;
fallet "I":
fallet "i":
in=SerialReadPosInt();
RTC.setMinutes(in);
RTC.setClock();
Serial.Print ("ställa in minuter");
Serial.println(in);
bryta;
fallet ":
fallet ":
in=SerialReadPosInt();
RTC.setSeconds(in);
RTC.setClock();
Serial.Print ("ställa in sekunder");
Serial.println(in);
bryta;
fall "Y":
fall "y":
in=SerialReadPosInt();
RTC.setYear(in);
RTC.setClock();
Serial.Print ("inställningen år till").
Serial.println(in);
bryta;
fallet är ":
fallet är ":
in=SerialReadPosInt();
RTC.setMonth(in);
RTC.setClock();
Serial.Print ("inställningen månad till");
Serial.println(in);
bryta;
fall skulle ":
fall skulle ":
in=SerialReadPosInt();
RTC.setDate(in);
RTC.setClock();
Serial.Print ("inställningen datum");
Serial.println(in);
bryta;
fallet "W":
Serial.Print ("dag i veckan är");
Serial.println((int) RTC.getDayOfWeek());
bryta;
fallet "w":
in=SerialReadPosInt();
RTC.setDayOfWeek(in);
RTC.setClock();
Serial.Print ("inställningen dag vecka till");
Serial.println(in);
bryta;

't i mål ":
'T i mål ":
IF(RTC.is12hour()) {
RTC.switchTo24h();
Serial.println ("växla till 24-timmarsklocka.");
} annat {
RTC.switchTo12h();
Serial.println ("växla till 12-timmarsformat.");
}
RTC.setClock();
bryta;

fallet "A":
fallet "a":
IF(RTC.is12hour()) {
RTC.setAM();
RTC.setClock();
Serial.println ("Set AM.");
} annat {
Serial.println ("(ange timmar endast i 24-timmarsläge.)");
}
bryta;

fallet "P":
fallet "p":
IF(RTC.is12hour()) {
RTC.setPM();
RTC.setClock();
Serial.println ("Set PM.");
} annat {
Serial.println ("(ange timmar endast i 24-timmarsläge.)");
}
bryta;

fallet "q":
RTC.sqwEnable(RTC.SQW_1Hz);
Serial.println ("Square wave-utgång anges till 1Hz");
bryta;
fallet "Q":
RTC.sqwDisable(0);
Serial.println ("Square wave utdata bortkopplade (låg)");
bryta;

fallet "z":
RTC.start();
Serial.println ("klockan oscillator började.");
bryta;
fallet "Z":
RTC.stop();
Serial.println ("klockan oscillator stoppas.");
bryta;

fallet ">":
in=SerialReadPosInt();
IN2=SerialReadPosInt();
RTC.writeData (i, in2);
Serial.Print ("skriva att registrera");
Serial.Print(in);
Serial.Print ("värde");
Serial.println(IN2);
bryta;
fallet "<':
in=SerialReadPosInt();
IN2=RTC.readData(in);
Serial.Print ("Läs från register");
Serial.Print(in);
Serial.Print ("värde");
Serial.println(IN2);
bryta;

standard:
Serial.println ("Okänt kommando. Prova dessa: ");
Serial.println ("h ## - Ställ timmar [utbud 1..12 eller 0..24]");
Serial.println ("i ## - minuter [sträcker 0..59]");
Serial.println ("s ## - set sekunder [sträcker 0..59]");
Serial.println ("d ## - ange datum [utbud 1..31]");
Serial.println ("m ## - ange månad [utbud 1..12]");
Serial.println ("y ## - set år [utbud 0..99]");
Serial.println ("w ## - ange godtyckligt dagen i veckan [utbud 1..7]");
Serial.println ("t - växla 24-timmarsvisning");
Serial.println ("en - set AM p - set PM");
Serial.println();
Serial.println ("z - start klocka Z - stoppa klockan");
Serial.println ("q - SQW/ut = 1Hz Q - stoppa SQW/OUT");
Serial.println();
Serial.println ("> ##, ###-skriva att registrera ## värdet ###");
Serial.println ("< ##-läsa värdet i registret ##");

} //switch på kommando

}

läste i numeriska tecken tills något annat
eller finns inga fler data på följetong.
int SerialReadPosInt() {
int jag = 0;
boolean = false;
While(Serial.available() & &! gjort)
{
char c = Serial.read();
om (c > = "0" & & c < = '9')
{
jag = jag * 10 + (c-'0');
}
annat
{
= sant;
}
}
tillbaka i;
}

Se Steg
Relaterade Ämnen

Motion känsliga LCD Real-Time Clock/larm/Timer (uppdaterad Program)

jag behövde en klocka för mitt hemmakontor (där jag tillbringar helgen morgnar bygga robotar och sådant) och jag ville att det skulle passa in i inredningen i min elektronik arbetsbänk. Jag bestämde mig att bygga en med alla "modet" utsatt. Spec...

Arduino Real Time klocka med Alarm och miljö-sensorer

Arduino klocka, med batteribackup (realtidsklocka), tid, datum, Alarm, temperatur, fuktighet, tryck, LCD utgång, knappsats ingång, viloläge, LED LCD-belysning (4 X) vit med dimmer kontrollSteg 1: ReservdelslistaArduino Real Time klocka med Alarm och...

Real Time Clock - DS1302

detta är en mycket enkel handledning om hur du använder DS1302 realtidsklockan med en Arduino, eller Versilino, ombord. Jag kommer att gå igenom ledningar, koden och exempel. Alla som kan hittas på www.Virtuabotix.com. det här är mitt ifrst försök at...

Arduino Aquaponics: Real-Time-klocka del I

AA grundläggande behovet av att alla kontroller system är möjligheten att spåra tid. Vi är medvetna, har Arduino tre metoder kan anställa:1. seriell. Upprepade gånger får tid över seriell anslutning.2. extern hårdvara. Realtids klockor, som ChronoDot...

Arduino Kitchen Timer

detta instructable kommer guide du genom att skapa ditt eget Arduino baserade kök Timer. Detta är ett ganska enkelt projekt, som kräver liten eller ingen programmering eller elektronik kunnande, bara viljan att lära sig och fiol - en förmåga som är m...

Real-Time Web baserade hushållens makt användning Monitor

detta Instructable Detaljer en real-time web baserade hushållens makt användning monitor. Slutresultatet är ett levande diagram i en webbsida som uppdateras var 10 sekunder med Momentan effekt användning för min hela huset. Den elektriska strömmen mä...

Arduino justerbar Timer Controller med relä

detta är mitt första inlägg här, så jag hoppas jag får allt rätt!Jag har en gasvärmare millivolt (termoelement högen) veranda som har en manuell kontroll på den. Jag tröttnade på att få upp och ner att slå på och stänga av den, så jag beslöt att göra...

Real Time temperatur loggning med Arduino, NodeJS och Plotly!

Motivationen för det här projektet grodde efter behandlingen om Mark Zuckerberg önskan att skapa ett Smart hem för en av hans 2016 projekt. Att vara nyfiken på mig själv, jag ville försöka genomföra en mycket grundläggande temperatur loggning program...

IP-Time Clock del 1

KRAV: WiFi Access med SSID och lösenord om det behövsSå denna lata gamla Geek (logg) har ett par klockor i mitt sovrum. En av dem förlorar tid när strömmen bryts. Den andra är delvis smart och justeras automatiskt för sommartid. Tyvärr, det gör detta...

Arduino flera timer. Dag bygger och alarm baserat

Så blev jag ombedd av någon om jag kan göra något som kommer att starta en motor på en bestämd tid. OK... lätt.Men motorn ska börja varje dag med en annan timme eller kanske måndag och fredag på en timme och söndag inte alls, eller whenver han vill p...

Baserade Arduino Lap Timer

Vi fick nyligen tag på en "galen vagn", en allvarligt cool kärra till race runt med. Eftersom vi bara har en, ville jag ha något att göra den körningen lite mer konkurrenskraftiga, så jag bygga en Arduino loggregistreringen.Loggregistreringen an...

Arduino kitchen timer med en introduktion till timer avbryter

Välkommen till min första instructable,Jag beslöt att göra ett ganska enkla projekt för att ange instructable värld. Detta projekt handlar om att göra en enkel kitchen timer med en Arduino Uno. Således kommer jag ge en liten introduktion 2.2" tft dis...

Arduino Real tid väckarklocka med temperatur och LED belysning. Fjärrstyrda

Arduino klocka, med batteribackup (realtidsklocka), tid, datum, Alarm, temperatur, LCD utgång, IR-fjärr ingång, viloläge, LED-belysning (10 X) röd och blå multi-mode.Steg 1: Steg 1: delar listaArduino klocka, med batteribackup (realtidsklocka), tid,...

IP-Time Clock del 2

Så lata gamla Geek (LOG) gjorde en elektronisk klocka:Fördelarna är att det är ganska billigt, det blir tiden av Internet, det justerar för sommartid och inte kräver ett batteri att komma ihåg rätt tid.Jag ville göra några förbättringar:Ville ha stör...

Real-Time webbkontroll för ljus dekorationer (ingen server side kodning)

Arduino Ethernet är en awesome enhet. Detta är hur du använder dina festliga säsong lampor från var du vill:-genom ett enkelt klick på din web-sida (några rader av HTML, inga javascript eller någon annan kodning krävs).-genom att ange en enkel "http:...

#5 Arduino kompatibel realtidsklocka moduler (DS1307 & DS3231)

En realtidsklocka (RTC) är en RTC är en RTC. Rätt? Fel!Medan dessa två mycket vanliga, Arduino-kompatibel RTCs likna mycket, och ansluts via I2C (uttalas Eye fyrkant se, eller ögat ögat se) kommunikation buss de utför helt annorlunda än kostnaden om...

Att få upp Time Clock

När min son var liten hade han en vana att stiga upp vid vissa okristliga timme.Han skulle springa in i sovrummet som skriker "är det dags att få upp pappa?" Vid denna tid var skadan skedd. Eftersom det finns bara så många episoder av Barney (bi...

LittleBits Real-Time väder Dashboard

Besök den littleBits projektets sida för mer DIY projektidéer.Övervaka nuvarande och prognostiserade väderdata med littleBits och lite kodning. Dessa anpassningsbaraoch modulära väder rutorna visar aktuell temperatur, de prognostiserade höga och låga...

LED Arduino Clock

Efter byggnad mitt senaste projekt, ville jag bygga något med en Arduino. Bläddra Instructables månader såg jag en LED Arduino klocka som jag ville bygga. Efter några nykonstruktioner för min del satt jag på min erövring att bygga denna klocka.Först...