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

  • Gergosz2

    veterán

    válasz gyapo11 #3487 üzenetére

    Simán jó lehet a komparátoros megoldás is.

    Az ADC kikapcsolva és SLEEP_MODE_PWR_DOWN-ot használva már bőven uA-es tartományban alszik az Arduinod, csak arra kell figyelni, hogy LOW interruptra tudod csak felébreszteni (Due-t ,Zerot mással is lehet ebben.)

    Gyakorlatilag ennyi az egész:

    #include <avr/sleep.h>

    void sleepNow() // here we put the arduino to sleep
    {

    byte adcsra = ADCSRA;
    wait(100);
    ADCSRA = 0;
    set_sleep_mode(SLEEP_MODE_PWR_DOWN);
    sleep_enable();
    attachInterrupt(0, wake_up_pin, LOW);
    sleep_mode();
    sleep_disable();
    ADCSRA = adcsra;
    detachInterrupt(0);

    }

    Loop-ban meg meghívod a sleepNow()-t. Ha felébredt akkor onnan folytatja ahol elaludt. Pl.

    Serial.println(" Megyek aludni..");
    sleepNow() ; // elmegy aludni, majd felkelted
    Serial.println(" Most keltem fel."); // majd innen folytatja

    [ Szerkesztve ]

    Nokia 6030 Hardcore User // I Panic Restaurant by Taito

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