Neked csak ez a fájl érdekes ami a minta projekt: [link] A lib-et egy az egyben felhasználhatod amit linkeltek.
A kódban a setup() alatti rész inicializálja a modult (beállítja rajta az időt), a loop() függvény ezután megy körbe körbe és a soros porton küldi a gépnek időnként az idő bélyeget.
Ha valami időzítőnek akarod használni a modult igazából annyi a dolgod hogy a loop-ban figyeled a modulról olvasott időt hogy túllépte-e az időpontot amikor kapcsolni kell valamit. Ha igen, akkor valamelyik digitális portra a digitalWrite függvénnyel logikai magas jelet írsz és kapcsolsz relét vagy akármit amit oda megálmodsz.
Amit írtál kódot jó szemantikailag de nem szintaktikailag.
int villany_be = 11:00;
int villany_ki = 20:00;
Ez nem jó így. Az int egy egész számot tároló típus, a 11:00 pedig nem egy szám hanem egy karaktersorozat amit a fordító nem tud értelmezni.
Ha megnézed a példa kódot az időt külön részekben kapod meg.
Time t = rtc.time();
Ez kéri el a modultól az aktuális időbélyeget, a t változóban fogod megkapni. Ezután ezen lehet elérni az órát, percet, másodpercet, dátumot: t.yr, t.mon, t.date, t.hr, t.min, t.sec
Ha pl. azt akarod elérni hogy minden nap 11 -kor kapcsoljon be, 20-kor pedig ki akkor csinálhatsz valami ilyesmit:
void setup() {
// Itt beállítod az órát úgy ahogy a példában
}
boolean villanyBekapcsolva = false;
void loop() {
Time t = rtc.time(); // Lekérjük a modultól az időt
if ((t.hr>=11 && t.hr<20) && !villanyBekapcsolva) { // 11 óra után és 20 óra előtt vagyunk és nem ég a villany?
// Ha igen, villany bekapcs
villanyBekapcsolva = true;
digitalWrite(villany_rele, HIGH);
} else if ((t.hr>=20 || t.hr <11) && villanyBekapcsolva) { // 20 óra után vagyunk vagy 11 óra előtt és ég a villany?
// Ha igen, villany kikapcs
villanyBekapcsolva = false;
digitalWrite(villany_rele, LOW);
}
delay(1000); // alszunk 1mp-et mielőtt újra figyeljük a feltételeket
}
[ Szerkesztve ]