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

  • its_grandpa

    tag

    válasz lanszelot #20000 üzenetére

    Előrebocsájtom, hogy nem ismerem ezt a Digispark lapot, úgy ötletelek.
    A gombnyomások számát a loop-ban figyeljük 10 sec-enként.

    A gombnyomás(ok) számolásához kell egy interrupt fv. a pin, meg egy változó.
    const byte interruptPin = 2;
    volatile int gombNyomas = 0 ; /*valtozo a gomb nyomas szamlalasara*/
    void gombotnyom(){
    gombNyomas ++;        /* növeljük 1-el a gombnyomások számát */
    }

    A setup: (zanzásítva)

    void setup() {
    Serial.begin(9600); /*elindítja a sorosportot ...*/
    pinMode(interruptPin, INPUT_PULLUP); /*inicializálja a gomb pin-t inputnak , default HIGH !!! */
    attachInterrupt(digitalPinToInterrupt(interruptPin), gombotnyom, LOW); /* meghívjuk az fv.-t ha LOW-ra húzod a pin-t */
    /* ami még a setupba kell */
    } /* setup_end */

    És most jöjjön a loop.
    void loop() {
    if (millis() - lastms > 10000)    /* eltelt 10 sec ? */
    {
    lastms = millis();
        if gombNyomas > 0    /* volt valamennyi gombnyomás */
        {
        megnyomva();
        gombNyomas = 0 ;    /* nullázzuk a nyomások számát
        }
    } /* gombnyomások számának olvasás időzítése */
    Serial.println(gombNyomas);    /* kiírjuk hány gombnyomásnál tartasz */
    } /* loop_end */
    Jöjjön a megnyomva fv.

    void megnyomva() {
        switch (gombNyomas) {
        case 1:
        mindenRajtaVan();
        break;
        case 2:
        homeroVanRajta();
        break;
        case 3:
        gazVanRajta();
        break;
        }
    } /* megnyomva_end */

    Most látom írtál közben.
    A kódomban az interrupt pin a 2-es, neked ott a gázérzékelő van, szóval valamit módosítani kell. Én az arduinóból indultam ki, ott az Uno, Nano, Mini, other 328-based lapokon csak a 2,3 pin használható interruptra.

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