Hirdetés

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

  • Vladi

    nagyúr

    Sziasztok!

    Van a régi projektem, ami időre kapcsol egy vágókést. Talán még emlékszik valaki. Teasüti pölö. :D

    Namármost sajnos időre nem a legjobb, bár minden úgy működik, ahogy megterveztem. Most átálltam egy forgó enkóder link jelének mérésére.

    A rendszer lényege, hogy egy húzóhenger forgását ezzel mérném, ha elért egy megefelelő hosszúságot az anyag, amit húz, akkor kapcsol egy relét. Vagy ha megnyomok egy gombot, akkor azonnal és újrakezdi a ciklust.

    Nos a hardver biztos, hogy jó, mert először rosszul drótoztam össze, de legalább az összes funkciót láttam működni. :D A vezetékek a helyükre kerültek, a kódot feltöltöttem, de nem működik. :(

    Ez az eredeti kódom:

    volatile const int enko = 3; //2-as pinbe van enkóder érzékelője, OPTÓN A JOBB OLDALI!!!
    volatile const int piros = 2; //3-es pinbe dugva az azonnali vágó kapcsoló
    volatile const int rele = 5; // a kapcsoló relé.
    //volatile const int alapled = 13;
    const long pulzus = 425; // EZ A LENYEG!
    const long releido = 300; // a relé nyitás-zárás ideje
    unsigned long currentpulse;
    bool voros;

    void setup() {
    pinMode(piros, INPUT); // a 3-as piros az bemenet lett
    pinMode(enko, INPUT); // a kettes hurkázó is bemenet
    pinMode(rele, OUTPUT); // relé a 6-on kimenet
    //Serial.begin(9600);
    attachInterrupt(1, szamlalo, CHANGE); //2-es az enkóder, megszakítást állítottam rá
    attachInterrupt(0, nyissz, FALLING);//3-as a piros, azon is megszíktás van
    }

    void loop(){
    currentpulse = 0;
    if(currentpulse >= pulzus || voros) {
    digitalWrite(rele, HIGH);
    delay(releido);
    digitalWrite(rele, LOW);
    //Serial.println("Vágtam, kövi.");
    voros = false;

    }
    }

    void szamlalo(){
    currentpulse++;
    }

    void nyissz(){
    voros = true;
    }

    Mindjárt leírom a hibajelenséget, meg pár ötletem, hogy mi lehet a gond. Csak elnyomkodtam a háeszt. :F

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