3.5.2 Aansluiten aanraaksensor deel 2

Wordt het al wat duidelijker? Vooral het tekenen van het toestandsdiagram is erg belangrijk. Op die manier wordt het schrijven van het programma eigenlijk een soort van stappenplan voor de computer. En dat kunnen we wel gebruiken als de opdrachten ingewikkelder worden.
Bij de volgende opdracht proberen we de code dusdanig te wijzigen dat het ledje bij de eerste keer aanraken aangaat en bij een volgende keer aanraken weer uit gaat. We programmeren dus de toggle functie. Je hoeft de hardware niet aan te passen. We beginnen uiteraard met het toestandsdiagram.
Dit is wat lastiger dan de vorige keer want het gaat niet alleen om het aanraken maar ook om het loslaten.  Want als je de sensor aanraakt, moet het ledje aan gaan. En als je dan de sensor weer loslaat moet hij aanblijven. Het probleem hier is dat tussen het aanraken van de sensor en het loslaten meerdere klokpulsen en dus meerdere loops zijn verstreken. En tijdens die klokpulsen blijft die sensor aangeraakt. Maar om het ledje uit te laten gaan heb je ook een aanraking nodig. Kun je je voorstellen dat dat voor de computer verwarrend is? Uiteraard niet wanneer wij hem gaan programmeren.
Zie ook 3.3.7.1 Oefenopdracht: drukknop.
Dus je raakt hem aan en dan gaat het ledje aan.
Daarna laat je de sensor weer los.
Met het ledje gebeurt dan niets maar dat is voor de computer het signaal dat bij de volgende aanraking het ledje weer uit mag gaan.
We hebben dus 4 toestanden:

  1. Het ledje is uit bij start
  2. Het ledje gaat aan na een aanraking
  3. Het ledje blijft aan na het weer loslaten
  4. Het ledje gaat uit na een aanraking

Het toestandsdiagram ziet er dan als volgt uit (knopje is ingedrukt = sensor wordt aangeraakt):

Afbeelding: een toestandsdiagram voor een toggle functie met een aanraakschakelaar

Kun je hem volgen? Nu de kunst om hiervan code te maken. Onthoud: iedere pijl is een if in de betreffende toestand (zie 3.4 Van toestandsdiagram naar programma).
3.5.2.1 Opdracht: Arduino programma verder aanpassen