Stap 4: Controleren en instellen van de Module
Zodra u klaar bent voor het monteren van de module. Sluit de module aan de Arduino, zodat de pinnen in de Arduino correct worden ingevoegd. Het programma voor het testen van de module is hieronder gegeven. De code werkt voortdurend de tijd via de seriële poort.
Om de module draaien we moeten twee bibliotheken moeten we twee bibliotheken in de Arduino software. De volgende stappen worden de Arduino software met de bibliotheken nodig en de code instellen.
De bibliotheken importeren:
- Download de bibliotheek "RealTimeClockDS1307" en sla het op het bureaublad.
- Open de Arduino en ga naar de schets = > Bibliotheek importeren = > Add Library.
- Selecteer de bibliotheek die is opgeslagen op het bureaublad en klik op toevoegen.
- Nu plakt de voorbeeldcode hieronder en klik op compileren. Als met succes gecompileerd slaat u de resterende stappen.
- Als het niet importeren de tweede bibliotheek "draad" en herhaal de procedure en compileren van de code en het zal werken.
Code werken:
De code is geschreven door "David H. Brown" Ik gebruik het alleen om u een inleiding tot de DS1307. Hoe dan ook de Arduino communiceert met de RTC-Module en updates van de tijd voor elke seconde via de Seriële Monitor. De schepper heeft ons een optie om de tijd wanneer wij de opdracht "?sturen" gegeven. Het volgende menu verschijnt.
Deze code zal u helpen om de tijd instellen, evenals het aankruisen van de module back-up batterij leveren werken goed. In de volgende tutorial zal ik u tonen hoe te installeren van een LCD-scherm en de tijd van de RTC-module te tonen. Hier is de code voor het testen van de module en een bijgevoegd bestand van hetzelfde.
#include < Wire.h > #include < RealTimeClockDS1307.h > //RealTimeClock RTC; //=new RealTimeClock(); #define Display_Clock_Every_N_Seconds 10 / / n.secs om te laten zien van datum/tijd #define Display_ShortHelp_Every_N_Seconds 60 / / n.secs om te laten zien van hint voor hulp //#define TEST_Squarewave //#define TEST_StopStart //#define TEST_1224Switch int count = 0; char opgemaakt [] = "00-00-00-00:00:00 x"; void setup {/ / Wire.begin(); Serial.begin(9600); pinMode (A3, uitvoer); pin 16 (analoge pin 2) als OUTPUT *** digitalWrite (A3, hoge); pin 16 (analoge pin 2) ingesteld op laag *** pinMode (A2, uitvoer); 17 (analoge pin 3) pin als OUTPUT *** digitalWrite (A2, laag); PIN 17 (analoge pin 3) ingesteld op hoog *** / / *** analoge Pin-instellingen aan macht RTC module ***} void loop {if(Serial.available()) {processCommand();} RTC.readClock(); Graaf ++; Als (graaf % Display_Clock_Every_N_Seconds == 0) {Serial.print(count); Serial.Print(":"); RTC.getFormatted(formatted); Serial.Print(formatted); Serial.println(); } Als (graaf % Display_ShortHelp_Every_N_Seconds == 0) {Serial.println ("verzenden? voor een lijst met opdrachten. ");} #ifdef TEST_Squarewave als (graaf % 10 == 0) {schakelaar (graaf/10% 6) {geval 0: Serial.print ("zaagtandgolf uitgeschakeld (lage impedantie):"); RTC.sqwDisable(0); Serial.println((int) RTC.readData(7)); breken; geval 1: Serial.print ("zaagtandgolf uitgeschakeld (hoge impedantie):"); RTC.sqwDisable(1); Serial.println((int) RTC.readData(7)); breken; geval 2: Serial.println ("zaagtandgolf ingeschakeld 1 Hz"); RTC.sqwEnable(RTC.SQW_1Hz); breken; Case 3: Serial.println ("zaagtandgolf ingeschakeld op 4.096 kHz"); RTC.sqwEnable(RTC.SQW_4kHz); breken; geval 4: Serial.println ("zaagtandgolf ingeschakeld op 8.192 kHz"); RTC.sqwEnable(RTC.SQW_8kHz); breken; geval 5: Serial.println ("zaagtandgolf ingeschakeld op 32.768 kHz"); RTC.sqwEnable(RTC.SQW_32kHz); breken; standaard: Serial.println ("zaagtandgolf-test niet gedefinieerd"); } //switch} #endif #ifdef TEST_StopStart als (graaf % 10 == 0) {als (! RTC.isStopped()) {if(RTC.getSeconds() < 45) {Serial.println ("stoppen klok gedurende 10 seconden"); RTC.stop(); } //if we genoeg tijd hebben} else {RTC.setSeconds(RTC.getSeconds()+11); RTC.start(); Serial.println ("11 seconden toe te voegen en opnieuw op te starten klok"); }} //if op een veelvoud van 10 telt #endif #ifdef TEST_1224Switch als (graaf % 10 == 0) {als (graaf % 20 == 0) {Serial.println ("overschakelen naar 12 uur tijd"); RTC.switchTo12h(); RTC.setClock(); } else {Serial.println ("overschakelen naar tijd in 24-uursnotatie"); RTC.switchTo24h(); RTC.setClock(); {}} #endif} ongeldig processCommand() {als ()! Serial.available()) {terugkeer;} opdracht char = Serial.read(); int in, in2; switch(Command) {"H" kast: geval 'h': in=SerialReadPosInt(); RTC.setHours(in); RTC.setClock(); Serial.Print ("Setting uur to"); Serial.println(in); breken; Case "I": geval 'i': in=SerialReadPosInt(); RTC.setMinutes(in); RTC.setClock(); Serial.Print ("Setting minuten to"); Serial.println(in); breken; geval van ': geval van ': in=SerialReadPosInt(); RTC.setSeconds(in); RTC.setClock(); Serial.Print ("Setting seconds to"); Serial.println(in); breken; kast 'Y': geval 'y': in=SerialReadPosInt(); RTC.setYear(in); RTC.setClock(); Serial.Print ("instelling jaar"); Serial.println(in); breken; geval ben ': geval ben ': in=SerialReadPosInt(); RTC.setMonth(in); RTC.setClock(); Serial.Print ("instelling maand"); Serial.println(in); breken; geval zou ': geval zou ': in=SerialReadPosInt(); RTC.setDate(in); RTC.setClock(); Serial.Print ("instelling datum"); Serial.println(in); breken; geval 'W': Serial.print ("dag van de week is"); Serial.println((int) RTC.getDayOfWeek()); breken; geval 'w': in=SerialReadPosInt(); RTC.setDayOfWeek(in); RTC.setClock(); Serial.Print ("instelling day of week"); Serial.println(in); breken; 't geval ': 'T geval ': if(RTC.is12hour()) {RTC.switchTo24h(); Serial.println ("overschakelen naar 24-uurs klok."); } else {RTC.switchTo12h(); Serial.println ("overschakelen naar 12-uurs klok."); } RTC.setClock(); breken; Case "A": geval 'a': if(RTC.is12hour()) {RTC.setAM(); RTC.setClock(); Serial.println ("Stel AM."); } else {Serial.println ("(stel uren alleen in 24-uurs modus.)");} onderbreking; kast 'P': 'p' zaak: if(RTC.is12hour()) {RTC.setPM(); RTC.setClock(); Serial.println ("Set PM."); } else {Serial.println ("(stel uren alleen in 24-uurs modus.)");} onderbreking; geval 'q': RTC.sqwEnable(RTC.SQW_1Hz); Serial.println ("blokgolf-uitvoer ingesteld op 1Hz"); breken; kast 'Q': RTC.sqwDisable(0); Serial.println ("vierkant wave-uitvoer uitgeschakeld (laag)"); breken; geval 'z': RTC.start(); Serial.println ("klok oscillator begonnen."); breken; kast 'Z': RTC.stop(); Serial.println ("klok oscillator gestopt."); breken; geval ' >': in=SerialReadPosInt(); in2=SerialReadPosInt(); RTC.writeData (in, in2); Serial.Print ('schrijven om te registreren'); Serial.Print(in); Serial.Print ("de waarde"); Serial.println(in2); breken; geval ' <': in=SerialReadPosInt(); in2=RTC.readData(in); Serial.Print ("Lees uit register"); Serial.Print(in); Serial.Print ("de waarde"); Serial.println(in2); breken; standaard: Serial.println ("Unknown command. Probeer deze: "); Serial.println ("h ## - uren instellen [bereik 1..12 of 0..24]"); Serial.println ("i ## - minuten [variëren 0..59]"); Serial.println ("s ## - set seconden [variëren 0..59]"); Serial.println ("d ## - vastgestelde datum [bereik 1..31]"); Serial.println ("m ## - set maand [bereik 1..12]"); Serial.println ("y ## - set jaar [bereik 0..99]"); Serial.println ("w ## - stel willekeurige dag van de Week [bereik 1..7]"); Serial.println ("t - knevel 24-uurs modus"); Serial.println ("a - set AM p - set PM"); Serial.println(); Serial.println ("z - start klok Z - stop klok"); Serial.println ("q - SQW/OUT = 1Hz Q - stop SQW/OUT"); Serial.println(); Serial.println ("> ##, ###-schrijven te registreren ## de waarde ###"); Serial.println ("< ##-luiden naar de waarde in register ##"); } //switch op commando} //read in numerieke tekens tot iets anders //or is geen meer informatie beschikbaar over seriële. int SerialReadPosInt() {int ik = 0; boolean gedaan = false; while(Serial.available() & &! gedaan) {char c = Serial.read(); als (c > = '0' & & c < = '9') {ik = i * 10 + (c-"0");} anders {= true;}} terug i;}