Hirdetés

Keresés

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

  • válasz DeniL #2234 üzenetére

    A második egy nagyon elegáns megoldás. Az egyetlen dolog, amire figyelned kell, hogy a for ciklus ne rohanjon kontrolálatlanul.

    Az általad megírt verzióban ugyanis egy pillanat alatt végigfut, ennyi idő alatt nem végignyomni a szükséges gombokat.

    Ha prellezésmentesek lesznek a gombok amiket használsz, akkor így menni fog:

    #include <SoftwareSerial.h>
    int ButtonPins[] = {0, 1};
    int buttonState[] = {HIGH, HIGH};
    //int index; ha globális a változód, a for ciklus csak egyszer fut, hacsak ki nem nullázod utána kézzel
    int numberOfBUTTON = 2;
    void setup() {
    Serial.begin(9600);
    /*for (int i = 0; i < numberOfBUTTON; i++) {
    pinMode(ButtonPins, INPUT_PULLUP);
    }*/
    pinMode(ButtonPins[1], INPUT_PULLUP);
    pinMode(ButtonPins[2], INPUT_PULLUP);
    }
    void loop() {
    for (int index = 0; index < numberOfBUTTON; index++)
    {
    bool buttonPressed = false;
    while(!buttonPressed)
    {
    for (int i=0; i<numberOfBUTTIN;i++)
    {
    if (!digitalRead(ButtonPins[i]) buttonPressed=true;
    }
    }
    /*az fenti rész megoldja, hogy amíg te nem nyomtál semmilyen gombot, addig ne akarja ellenőrizni a lenyomott gombokat. Másképp akkor is ellenőrizne, ha nem nyomsz épp semmit.*/
    buttonState[index] = digitalRead(ButtonPins[index]);
    if (buttonState[index] == LOW) {
    Serial.print((String)(ButtonPins[index]));
    Serial.print(" elem");
    while(!digitalRead(ButtonPins[index])){} //megakadályozza, hogy rögtön továbblépjen, mikor még a gombot nyomod
    } else {
    Serial.println("rossz sorrend");
    break; //kiugraszt a for ciklusból, ha már egyszer elrontottad
    }
    }
    delay(2000);
    }

    Így hirtelen ezt tudtam, lehet még benne hiba, de erre indulj el.
    Majd tájékoztass :)

  • Pubszon

    veterán

    válasz DeniL #2234 üzenetére

    Jut eszembe, a 0 és 1-et ne használd, az az RX és TX. Akkor jó használni, ha a soros kommunikációt nem használod.

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