Keresés

Új hozzászólás Aktív témák

  • DarkByte

    addikt

    válasz Melorin #127 üzenetére

    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
    }

Új hozzászólás Aktív témák