Kuidas ja miks Arduinole reaalajas kella lisada

Kuidas ja miks Arduinole reaalajas kella lisada

Arduino projektidega aja hoidmine pole nii lihtne, kui võite arvata: kui arvutiühendus puudub, lõpetab teie toitevaba Arduino, sealhulgas selle sisemise märgi, lihtsalt töötamise.





kuidas MacBook Airi taaskäivitada

Arduino ümbritseva maailmaga sünkroonis hoidmiseks vajate nn reaalajas kella moodulit. Siin on, kuidas seda kasutada.





Mis mõte on reaalajas kellal (RTC)?

Tõenäoliselt sünkroonib teie arvuti oma aja internetiga, kuid sellel on siiski sisemine kell, mis jätkab töötamist isegi ilma Interneti -ühenduseta või toide on välja lülitatud. Kui kasutate arvutiga ühendatud Arduinot, on sellel juurdepääs teie süsteemikellast saadavale täpsele ajale. See on üsna kasulik, kuid enamik Arduino projekte on mõeldud kasutamiseks arvutist eemal - sel hetkel, kui toide on vooluvõrgust lahti ühendatud või kui Arduino taaskäivitatakse, pole tal üldse aimugi, mis kell on. Sisemine kell lähtestatakse ja hakkab järgmisel sisselülitamisel uuesti nullist loendama.





Kui teie projektil on aega vaja - näiteks minu öövalgus ja päikesetõusu äratuskell - on see probleem. Selles projektis pääsesime probleemist, määrates igal õhtul käsitsi üsna toorelt kellaaja - kasutaja vajutas vahetult enne magamaminekut lähtestamisnuppu, pakkudes käsitsi aja sünkroonimist. Ilmselgelt pole see ideaalne pikaajaline lahendus.

RTC -moodul on täiendav vooluahela osa, mis nõuab väikest mündipatarei, mis jätkab aja lugemist isegi siis, kui teie Arduino on välja lülitatud. Pärast ühekordset seadistamist - see hoiab seda aega aku eluea jooksul, tavaliselt umbes aasta.



TinyRTC

Arduino kõige populaarsemat RTC-d nimetatakse TinyRTC-ks ja seda saab eBays osta umbes 5–10 dollari eest. Tõenäoliselt peate tarnima oma aku (nende välismaale saatmine paljudesse kohtadesse on ebaseaduslik) ja mõned päised (augudesse asetsevad tihvtid, mida peate ise jootma).

See on minu moodul:





Sellel on isegi sisseehitatud temperatuuriandur, kuigi aku kestab kauem, kui te seda ei kasuta.

Aukude arv sellel asjal tundub päris hirmutav, kuid neid on vaja ainult neli; GND, VCC, SCL ja SDA - saate kasutada vastavaid tihvte RTC -mooduli mõlemal küljel. Sa räägid kellaga kasutades I2C protokoll , mis tähendab, et kasutatakse ainult kahte tihvti - ühte kella jaoks (jadaühenduse andmekell, ajaga mitte midagi pistmist) ja teist andmete jaoks. Tegelikult aheldate isegi kuni 121 I2C seadet samade kahe tihvti külge - vaadake see Adafruit leht valiku muude I2C seadmete jaoks, mida saate lisada, sest neid on palju!





Alustamine

Ühendage oma TinyRTC moodul vastavalt allolevale skeemile - roosa DS -joon pole vajalik, nagu see on temperatuurianduri jaoks.

Järgmisena laadige alla Aeg ja DS1307RTC raamatukogud ja asetage saadud kaustad oma /raamatukogud kausta.

Väljuge ja taaskäivitage Arduino keskkond, et see raamatukogudesse ja näidetesse laadida.

Menüüst DS1307RTC leiate kaks näidet: laadige üles ja käivitage Määra aeg näide kõigepealt - see määrab RTC õigeks ajaks. Tegeliku koodiga ei tasu detailidesse laskuda, lihtsalt teadke, et esialgse aja sünkroonimiseks peate selle üks kord käivitama.

Järgmisena vaadake näite kasutamist koos ReadTest .

amazon prime video lülitage automaatne esitamine välja

#include
#include
#include
void setup() {
Serial.begin(9600);
while (!Serial) ; // wait for serial
delay(200);
Serial.println('DS1307RTC Read Test');
Serial.println('-------------------');
}
void loop() {
tmElements_t tm;
if (RTC.read(tm)) {
Serial.print('Ok, Time = ');
print2digits(tm.Hour);
Serial.write(':');
print2digits(tm.Minute);
Serial.write(':');
print2digits(tm.Second);
Serial.print(', Date (D/M/Y) = ');
Serial.print(tm.Day);
Serial.write('/');
Serial.print(tm.Month);
Serial.write('/');
Serial.print(tmYearToCalendar(tm.Year));
Serial.println();
} else {
if (RTC.chipPresent()) {
Serial.println('The DS1307 is stopped. Please run the SetTime');
Serial.println('example to initialize the time and begin running.');
Serial.println();
} else {
Serial.println('DS1307 read error! Please check the circuitry.');
Serial.println();
}
delay(9000);
}
delay(1000);
}
void print2digits(int number) {
if (number >= 0 && number <10) {
Serial.write('0');
}
Serial.print(number);
}

Pange tähele, et oleme lisanud ka tuuma Traat.h raamatukogu - see on kaasas Arduinoga ja seda kasutatakse I2C kaudu suhtlemiseks. Laadige kood üles, avage 9600 baudiga jadakonsool ja vaadake ning teie Arduino väljastab praeguse aja iga sekund. Imeline!

Näite kõige olulisem kood on a loomine tmElements_t tm - see struktuur täidame praeguse ajaga; ja RTC.read (tm) funktsioon, mis saab RTC moodulist praeguse aja, paneb selle meie sisse tm struktuuri ja tagastab tõe, kui kõik läks hästi. Lisage oma silumis- või loogikakood sellesse if -lausesse, näiteks aja printimine või sellele reageerimine.

kui palju maksab telefoni avamine

Nüüd, kui teate, kuidas Arduinoga õiget aega leida, võite proovida päikesetõusu äratusprojekti ümber kirjutada või luua LED -sõnakella - võimalusi on lõputult! Mida sa teed?

Pildi autorid: Snootlab Flickri kaudu

Jaga Jaga Piiksuma E -post Kuidas muuta oma Windows 10 töölaua välimust

Kas soovite teada, kuidas Windows 10 paremaks muuta? Kasutage neid lihtsaid kohandusi, et muuta Windows 10 enda omaks.

Loe edasi
Seotud teemad
  • Isetegija
  • Arduino
Autori kohta James Bruce(Avaldatud 707 artiklit)

Jamesil on tehisintellekti bakalaureusekraad ning ta on CompTIA A+ ja Network+ sertifikaadiga. Kui ta pole riistvara ülevaadete redaktorina hõivatud, naudib ta LEGO, VR ja lauamänge. Enne MakeUseOfiga liitumist oli ta valgustehnik, inglise keele õpetaja ja andmekeskuse insener.

Veel James Bruce'ilt

Telli meie uudiskiri

Liituge meie uudiskirjaga, et saada tehnilisi näpunäiteid, ülevaateid, tasuta e -raamatuid ja eksklusiivseid pakkumisi!

Tellimiseks klõpsake siin