Hirdetés

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

  • quint

    aktív tag

    válasz mate1396 #6015 üzenetére

    Volt időm egy picit elszórakozni vele. Ugyanazt csinálja, 1 és 15 között számol és binárisan kijelzi az eredmény a LED-eken (a DecimalToBin elnevezést megtartottam, de nem túl szerencsés).
    #define DEBOUNCING_TIME 100
    unsigned long last_it_time = millis();

    int x = 0;
    volatile boolean pressing = true;

    void buttoonPressed(){
    if ((millis()-last_it_time) > DEBOUNCING_TIME) {
    last_it_time = millis();
    pressing = true;
    }
    }

    void setup() {
    for (int i=8; i<12; i++) {pinMode(i, OUTPUT);}
    attachInterrupt(0,buttoonPressed,FALLING);
    }

    void DecimalToBin(int decimal){
    byte mask = 1;
    for(int i = 11; i > 7; i--) {
    if (decimal&mask) {digitalWrite(i,HIGH);} else {digitalWrite(i,LOW);}
    mask = mask << 1;
    }
    }

    void loop() {
    if (pressing) {
    if (++x > 15) x=1;
    pressing = false;
    DecimalToBin(x);
    }
    // bármi más tevékenység
    }

    A kezdeti x és pressing érték azért 0 és true, hogy az első lefutásnál is megfelelő legyen a kijelzés (tulajdonképpen a loop első lefutása fejezi be az inicializálást).

    [ Szerkesztve ]

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