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

  • Vladi

    nagyúr

    válasz Janos250 #6417 üzenetére

    Én is erre jutottam. Mindjárt mutatom a végleges kódomat. Közben találtam button libet is, meg ha már ott voltam relé libet. :D Nekem valahogy csak libekkel megy a program megírása. A kóddal kapcsolatos kérdéseim:

    1. Ez így nem lesz lassú? vagy itt nem is tud?
    2. Amikor lejár az időzítő megvárja a feladat végrehajtását és csak akkor indul tovább?
    3. A loop rész jól van összerakva? Kapcsos zárójelezés főleg.
    4. ez így kb. azt csinálja amit szeretnék, vagy szar az egész és inkább menjek kapálni?

    Egyébként az idében lefordul, nem jelez hibát. Kipróbálni csak akkor tudom, ha az utolsó alkatrészek is megérkeznek.

    #include "TimerObject.h"
    #include <Button.h>
    #include "Relay.h"

    TimerObject *szamlalo = new TimerObject(20000); // a fő számláló
    TimerObject *kapcs = new TimerObject(500);//második számláló, mivel delay-t nem lehet használni
    Button pause = Button(8, LOW);//itt külön kell definiálni, elnevezni és beállítani a kapcsolót, nem az elején
    Button nullazo = Button(9, LOW);//itt a másik gomb, ez is low állásban indul
    Relay RELE(6, true);//Relé hozzáadva normál nyitott állapotban a 6-os kiementre

    void setup()
    {
    Serial.begin(9600);
    RELE.begin();//beállítva a relé
    szamlalo->setOnTimer(&vagas);//amikor lefut a számláló 0-ra akkor tér rá a vagas nevű részre: void vagas()
    szamlalo->Start();
    kapcs->setOnTimer(&kapcsolas);//nem indul el, csak a relé visszakapcsolásához kell, amikor lefut a kapcsolas részre ugrik: void kapcsolas()
    }

    void vagas()
    {
    RELE.turnOn();//kapcsol a relé
    Serial.println("Relé zárva");
    kapcs->Start();//indul a második számláló, a relé kikapcsolásának időzítését végzi
    }

    void kapcsolas()
    {
    RELE.turnOff();//lefutott a kapcs számláló lekapcsolhat a relé
    Serial.println("Relé nyitva");
    kapcs->Stop();//eddig kellett, amíg visszaáll a relé
    }

    void loop()
    {
    szamlalo->Update();//ez pörgeti a fő folyamatot
    {
    pause.listen(); //figyeli a pause gombot
    if (pause.isPressed()) {//amikor nyomva van, akkor pauzálja a számláló visszaszámlálást
    szamlalo->Pause();
    Serial.println("MEGÁLLT A CUCC!!!!");
    }

    if (pause.isReleased()) {
    szamlalo->Resume();//felengedve, tovább mehet a számolás
    Serial.println("Jóvan, megnyugodtam, megyen tovább.");
    }
    }
    {
    nullazo.listen();//nullázó gombot figyeli
    if (nullazo.onPress()){//ha nyomva leállítja a fő számlálót
    szamlalo->Stop();
    RELE.turnOn();//vág egyet
    kapcs->Start();//a relé saját számlálóját elindítja, hogy visszaálljon a relé
    szamlalo->Start();//majd újraindítja a fő folyamatot
    Serial.println("Meglett nyomva a vágóka gomb. Ciklus újraindult.");
    }
    }
    }

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

Hirdetés