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

  • Vladi

    nagyúr

    Nos még dolgozom a projektemen.
    Ott tartok, hogy a hardver kész, leteszteltem, működik. Beépítettem a végleges dobozába, még mindig működik. :C

    Kóddal bajlódtam mostanában, mindjárt mutatom mire jutottam. A feladat ugye az, hogy ketyeg egy számláló, mondjuk 20 másodperre állítva. Ha letelik az idő, akkor csinál egy kapcoslást egy relén. 100 ms-bekapcs, majd ki.

    De van 2 gomb, az egyik azonnal kapcsol, majd nullázza a számlálót és kezdi elölről.
    A másik gomb amíg nyomva van, addig pausálja a folyamatot.

    Kérdéseim:

    - megszíktást használok külsőt a két gombra. Az jó -e ide? Mert más módon nem tudtam kitalálni a megoldást. :F
    - a nyissz megszakításba kellene még egy számláló nullázás. Meg a delay helyett egy módszer. Mert úgy tudom megszakítás alatt nem használható. :F

    const int piros = 3; //3-es pinbe dugva az azonnali vágó kapcsoló
    volatile const int mikro = 2; //2-as pinbe van a hurka csináló gomb.é
    volatile int alapled = 13;
    volatile const int rele = 6; // a kapcsoló relé.
    const long vido = 19890; // EZ A LENYEG! Ez a vágási idő ciklus. kb 51 az 1 mm-t jelent. millisecundum egyébként.
    long previousMillis = 0;

    void setup() {
    pinMode(piros, INPUT); // a 10-es piros az bemenet lett
    pinMode(mikro, INPUT); // a nyócas hurkázó is bemenet
    pinMode(alapled, OUTPUT);
    pinMode(rele, OUTPUT); // relé a 6-on kimenet
    Serial.begin(9600);
    attachInterrupt(0, fuggo, LOW);
    attachInterrupt(1, nyissz, CHANGE);
    }
    void loop(){
    unsigned long currentMillis = millis();
    if(currentMillis - previousMillis >= vido) {
    previousMillis = currentMillis;
    }// ??? e meg itt valahogy nem jó, át kell írni az időzítést és be kell gyűni az utána jövő kódot a blokkba.
    digitalWrite(rele, HIGH);
    delay(100);
    digitalWrite(rele, LOW);
    Serial.println("Vágtam, kövi.");

    }
    void fuggo(){
    while (digitalRead(mikro) == LOW)
    digitalWrite(alapled, HIGH);
    }
    void nyissz(){
    digitalWrite(rele, HIGH);
    delayMicroseconds(100000);// e lehet nem is jó :(
    digitalWrite(rele, LOW);
    Serial.println("Vágtam, kövi.");
    //??? itt még nullázni kellene
    }

    Nem félünk! Nem félünk! Itthon vagyunk e földön. Nem félünk! Nem félünk! Ez nem maradhat börtön!

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