Code wissellamp werkt niet

Arduino specifieke Software
Berichten: 4
Geregistreerd: 27 Jul 2022, 21:56

Code wissellamp werkt niet

Berichtdoor Erpee » 14 Aug 2022, 15:50

Goedemiddag. Mijn eerste post op dit forum.
Ik ben nieuw in de arduino omgeving. Niet in programmeren. (Vooraan VB(A))

Het volgende. Ik heb een opstelling als in de LINK.
Bedoeling is.
* Als ik de eerste eerste keer op de knop druk moet de LED aan gaan.
* Als ik de tweede keer druk niet.

De eerste keer gaat 'ie netjes aan, daarna gebeurt er niets meer. Ik maak vast een denk fout, maar waar?
Wie helpt?

Code: Alles selecteren
const int BUTTON = 2;
const int LED = 3;
int BUTTONstate = 0;
int CountVar = 0;

void setup()
{
  pinMode(BUTTON, INPUT);
  pinMode(LED, OUTPUT);
}

void loop()
{
  BUTTONstate = digitalRead(BUTTON);

  if (BUTTONstate == HIGH){
    if (CountVar == 0){
        digitalWrite(LED, HIGH);  // LED aan
        delay(2000);              // pauze 22 seconden
        digitalWrite(LED, LOW);   // LED uit
        CountVar = CountVar + 1;
    }
    else {
      int CountVar = 0;
    }
    }
}

Advertisement

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Code wissellamp werkt niet

Berichtdoor shooter » 14 Aug 2022, 17:18

je begint prima hoor

zet er een beetje commentaar bij zodat je kunt uitleggen wat je wilt dat er gebeurt
Code: Alles selecteren
    const int BUTTON = 2; //prima maar dat mag ook met define
    const int LED = 3;
    int BUTTONstate = 0;// hier maak je een integer van buttonstate maar dat is eigenlijk een boolean beter is boolean buutonstate=false;

    int CountVar = 0; // een teller

    void setup()
    {
      pinMode(BUTTON, INPUT);
      pinMode(LED, OUTPUT);
    }

    void loop()
    {
      BUTTONstate = digitalRead(BUTTON);// toevallig gaat dat goed zie hierboven bij boolean

      if (BUTTONstate == HIGH){ // want hier gebruik je boolean
        if (CountVar == 0){ // ja dat is nu 0
            digitalWrite(LED, HIGH);  // LED aan
            delay(2000);              // pauze 2 seconden
            digitalWrite(LED, LOW);   // LED uit
            CountVar = CountVar + 1;// dus nu is countVar al 1
        }
        else
{
          int CountVar = 0; //dus als buttonstate = LOW
 hier moet de int weg want de variabele bestaat al
        } // en hier staat een haakje te veel.

        }
    }

nu moet er nog eenje ding code bijkomen die als de knop gedrukt is geweest de lamp uitblijft ofwel als de lamp aan is geweest en de knop wordt weer bedient dus bijvoorbeeld een if (lampisaangeweest && knop){doe niks}
en express zet ik er niet de oplossing in dat zou erg makkelijk zijn.
paul deelen
shooter@home.nl

Berichten: 4
Geregistreerd: 27 Jul 2022, 21:56

Re: Code wissellamp werkt niet

Berichtdoor Erpee » 15 Aug 2022, 12:18

Dank je voor je feedback.

Ik merk echt dat deze manier van denken mij nog vreemd is. Ik snap de meeste zaken wel maar dat laatste stuk ... :cry:
nu moet er nog eenje ding code bijkomen die als de knop gedrukt is geweest de lamp uitblijft ofwel als de lamp aan is geweest en de knop wordt weer bedient dus bijvoorbeeld een if (lampisaangeweest && knop){doe niks}

Berichten: 4
Geregistreerd: 27 Jul 2022, 21:56

Re: Code wissellamp werkt niet

Berichtdoor Erpee » 17 Aug 2022, 07:38

Tsja ... ik zit vast, kom geen steek verder.
Het t ook geprobeerd dmv een SWITCH CASE maar ook dat gaf geen oplossing.

Berichten: 4
Geregistreerd: 27 Jul 2022, 21:56

Re: Code wissellamp werkt niet

Berichtdoor Erpee » 17 Aug 2022, 10:43

Ik zit nu echt vast.
Ook geprobeerd om dit via SWITCH CASE op te lossen, maar helaas..

Wie helpt me op het goede spoor.
En...van een oplossing kun je óók leren. :D

Berichten: 4064
Geregistreerd: 16 Okt 2013, 14:31
Woonplaats: s hertogenbosch

Re: Code wissellamp werkt niet

Berichtdoor shooter » 17 Aug 2022, 17:55

zet eens op een briefje wat je wilt bereiken dus een soort preproram ding
en dan voorzichtig beginnen met telkens testen en veranderen, wij helpen wel.
want je zit niet vast, maar je hebt onvoldoende inspiratie om lekker te proberen. en kom op 24 september naar de makerfaire in eindhoven
paul deelen
shooter@home.nl

Berichten: 68
Geregistreerd: 04 Sep 2021, 08:31

Re: Code wissellamp werkt niet

Berichtdoor RobGood » 17 Aug 2022, 20:31

Hi Erpe,
Ja simpel lijkende zaken kunnen best wel eens ingewikkeld zijn...
Ik denk dat je bedoeld dat bij drukken de led aan gaat, bij weer drukken de led uit, weer drukken weer aan enz enz.
Meerdere trukjes zijn hier nodig.
Eerst een variabele die aangeeft of de led aan is of uit.
Bool ledstatus;

Een functie is nodig die de led aan of uit zet aan de hand van de ledstatus
Void schakelled(){
If(ledstatus==true){
Zet de led aan
}else{
Zet de led uit
}
}

Dan moet je het knopje lezen
Hier weer een variabele nodig
Bool knopstatus;
Lees knop, met digital read. In een functie. Bv. Void readbutton();
Vergelijk de knop met de waarde van knopstatus.
Schrijf de nieuwe waarde van de knop in knopstatus.
Als de waarde verschilt en de knop is nu ingedrukt
Wissel dan de ledstatus en roep functie schakelled() aan.
Dus alleen bij het indrukken van de knop wisselt de led tussen aan en uit.

Maar dan ben je der nog niet, een arduino is veel te snel voor een drukknop. Je denkt dat je hem 1x indrukt maar de arduino registreerd wel 50x indrukken en loslaten, gevolg een random effect. Dit verschijnsel heet bouncen. Of contact dender. Dit los je op met een timer die als voorbeeld 1x per 20ms de drukknop test.
Als je verder niks met dit programma doet kun je een delay erin zetten...maar timer is een veel nettere oplossing en maakt multitasken mogelijk....
Nu succes...
Rob

Terug naar Arduino software

Wie is er online?

Gebruikers in dit forum: osuluwop en 16 gasten