Cyclus 1

Cyclus 1

Inleiding

De eerste cyclus heeft als thema: domotica: hoe kun je het leven in en om het huis makkelijker maken met behulp van physical computing? En: hoe kun je thuis zuinig omgaan met energie?

De sensor die centraal staat is de aanraaksensor. Dit is zo’n beetje de eenvoudigste sensor die er is, hoewel er vele varianten op zijn. Het kan bijvoorbeeld een eenvoudig drukknopje zijn of een schakelaar.

De eindopdracht in deze cyclus is: ontwerp en ontwikkel een hotelschakeling. Dat is een systeem met twee aanraaksensoren en één lamp. De lamp moet met beide aanraaksensoren aan en uit kunnen worden gezet.

Domotica

Bekijk de volgende bronnen over domotica, afkomstig van de module Inleiding in domotica en automatisering op Wikiwijs.

Domotica en automatisering
In deze les zie je enkele voorbeelden van domotica.

Voorbeelden van domotica
Nog een paar slimme toepassingen van domotica

Toepassingen van domotica in de ouder- en gehandicaptenzorg
De les laat enkele toepassingen van domotica in de ouder- en gehandicaptenzorg zien.

Toepassingen in vakantieparken
Hoe kun je sensoren gebruiken om het verbruik van energie te beperken?

Sensoren in domotica
Welke rol spelen sensoren bij domotica?

Actuatoren in domotica
Hoe spelen actuatoren een rol in domotica?

Aanraaksensor

Hieronder zie je een voorbeeld van een aanraaksensor, deze wordt Capacitive Touch Switch Sensor genoemd. Zodra je de sensor aanraakt wordt de output HIGH, en als je de sensor loslaat wordt de output weer LOW.

Een drukknop is ook een soort aanraaksensor. Bekijk het volgende filmpje over de drukknop.

 

Behind the MakeCode Hardware - Buttons

In het filmje heb je kunnen zien dat er twee soorten drukknoppen zijn:

  • Normally open (NO) - als je de drukknop niet indrukt kan er geen stroom lopen
  • Normally closed (NC) - als je de drukknop niet indrukt kan er wel stroom lopen

Een deurbel is een drukknop - normally open.

Naast de Capacitive Touch Switch Sensor en de drukknop zijn er ook aanraaksensoren met een zogenaamde toggle-functie. De meeste lichtschakelaars in huis werken zo. Zo'n schakelaar staat aan (er kan stroom lopen) of uit (er kan geen stroom lopen). De schakelaar houdt dus de toestand vast ook als je de sensor niet meer aanraakt.

Bovenstaande schakelaars hebben allemaal een toggle-functie. Ook het rechter (rode) knopje heeft dat, deze drukknop werkt dus anders dan de drukknop uit het filmpje.

Het is echter mogelijk om een drukknop zonder toggle-functie, zoals bijvoorbeeld die in het filmpje, te laten werken als een schakelaar met toggle-functie door dat te programmeren. Bijvoorbeeld, je kunt een systeem maken met een drukknop (zonder toggle-functie) en een lamp. Als je de drukknop indrukt en weer loslaat gaat de lamp aan. Doe je dat nogmaals gaat de lamp weer uit. Het systeem onthoudt dus of de lamp aan of uit moet, ook al is de drukknop niet ingedrukt. Wat dat betreft is zo'n drukknop handiger dan een schakelaar met toggle-functie. Je kunt immers softwarematig, door het programma te veranderen, het gedrag van de drukknop en het systeem als geheel aanpassen.

Als je met de Arduino werkt is het belangrijk om wat te weten over de volgende twee onderwerpen. We geven je hierbij twee bronnen, hoewel er veel meer bronnen over te vinden zijn. Werk je met de Micro:bit of Lego Mindstorms dan is dit minder relevant.

Switch Debouncing: https://www.arduino.cc/en/Tutorial/Debounce

Pull up en pull down: http://www.itela.nl/pull-up-en-pull-down-weerstand/

Ontwerpen met behulp van toestandsdiagrammen

Inleiding

In deze module leer je te werken met toestandsdiagrammen. Als introductie daarop kun je met de gehele klas de volgende opdracht doen.

Opdracht: toestanden in games
Bekijk gezamenlijk het volgende fragment uit een game waarin de hoofdrolspeler een bewaker moet proberen uit te schakelen. Kijk goed naar de bewaker en beschrijf in welke toestanden de bewaker kan zijn. Beschrijf ook hoe de bewaker in elk van die toestanden terecht komt. Met andere woorden: wat moet er gebeuren voordat de bewaker in een bepaalde toestand terecht komt.

 

 

Automaat bewaker

Toestanden

Wellicht heb je de volgende toestanden gevonden, ook al noem je ze waarschijnlijk anders

  1. Waakzaam, rondkijkend
  2. Alert, klar voor actie, rondkijkend
  3. Gealarmeerd, achter vijand aan lopend
  4. Verdwaasd, rondlopend
  5. Dood

Op basis van deze toestanden kun je een toestandsdiagram maken, waarin duidelijk wordt hoe de bewaker van de ene toestand in de andere komt. De getallen geven de toestanden aan zoals hierboven staat beschreven.

Je kunt in het toestandsdiagram bijvoorbeeld zien dat als de bewaker in toestand 1 is en hij ziet een vijand, dan wordt de toestand van de bewaker 2.

In de bovenstaande uitwerking zie je totaal 5 toestanden en 6 toestandsovergangen. Misschien zijn er wel meer hoor, alleen in dit korte fragment kun je ze niet allemaal zien.

Het losse pijltje naar toestand 1 betekent dat dit de begintoestand is, oftewel de initiële toestand.

 

Opdracht unplugged Nooddienstregeling bij de spoorwegen
Je kunt ook als inleiding ook de unplugged activiteit doen die je via de onderstaande link vindt.

 

Nooddienstregeling bij de spoorwegen

Frisdrankautomaat

Hieronder zie je een voorbeeld van een onderdeel van een frisdrankautomaat. Dit onderdeel houdt bij hoeveel geld de gebruiker van de automaat heeft ingeworpen. Voor het gemak gaan we uit van slechts twee munten: 50 cent en 1 euro. En alle frisdranken in de automaat kosten 2 euro.

De bollen zijn toestanden. Dit toestandsdiagram kent dus vijf toestanden. De frisdrankautomaat begint in de starttoestand, dat is in dit geval de toestand ‘Start: 0 euro’. Bij elke toestand zie je enkele overgangen. Bijvoorbeeld de overgang van de starttoestand ‘0 euro’ naar ‘0,5 euro’. Die toestandsovergang vindt plaats als de gebruiker begint met het inwerpen van een muntstuk van 50 eurocent.  
Je ziet dat een toestandsovergang ook naar dezelfde toestand kan gaan. Kijk maar bij de toestand ‘2 euro’. Na de toestandsovergang ‘Inworp 50 cent’ is de toestand nog steeds ‘2 euro’. 

 

Je kunt er zelf even mee oefenen. Klik op het plaatje hieronder om te activeren. Via de blauw en oranje knop kun je zogenaamd 50 cent of 1 euro inwerpen en dan zie je in welke toestand de automaat terecht komt.

Een toestandsovergang wordt meestal uitgevoerd op basis van informatie uit één van de sensoren. Als iemand één euro in de frisdrankautomaat doet, wordt dat door één of meerdere sensoren gedetecteerd. Hoe dat precies werkt is hierbij niet belangrijk. Uit de toestandsdiagram kun je opmaken naar welke toestand de automaat moet gaan als iemand die euromunt inwerpt.

Acties in een toestandsdiagram

Het vorige toestandsdiagram is nog niet volledig, de gebruiker moet immers wel een frisdrank kunnen selecteren. In het volgende toestandsdiagram voegen we een overgang ‘selectie’ toe aan alle toestanden. ‘Selectie’ betekent dat de gebruiker een frisdrank kiest.

 

Aan een toestandsovergang kan een actie worden gekoppeld. Bij de frisdrankautomaat wordt de actie: ‘geef frisdrank’ uitgevoerd als de gebruiker een frisdrank selecteert en de toestand is: ‘2 euro’. Acties zijn altijd gekoppeld aan toestandsovergangen en niet aan toestanden. Een toestandsovergang mag één of meer acties hebben, maar dat hoeft niet. Voor het uitvoeren van acties worden vaak actuatoren gebruikt, zoals een lampje, display of motor.

In deze module gebruiken we steeds een dubbele punt om het onderscheid te maken tussen toestandsovergang en actie.

<toestandsovergang> : <actie>

Voorbeelden

Inleiding

In dit deel vind je enkele voorbeelden, deels uitgewerkt, en deels zijn het opdrachten. Deze helpen om toestandsdiagrammen te begrijpen en te oefenen met het maken van toestandsdiagrammen. Kies zelf welke je interessant vindt.

Voorbeeld: lichtregulering

In dit voorbeeld gaat het om een systeem waarmee je de intensiteit van een lamp kunt reguleren. Het systeem bestaat uit een lamp en twee knoppen.

De lamp kan in drie standen worden gezet:

  • Uit (geen licht)
  • Half aan (zacht licht)
  • Helemaal aan (fel licht)

Het systeem heeft twee knoppen zonder toggle-functie (A en B). Met knop A gaat de lamp feller branden. Bijvoorbeeld: als de lamp half aan is en knop A wordt ingedrukt, dan gaat de lamp helemaal aan. Met knop B gaat de lamp minder fel branden. De lamp is altijd in één van de drie bovengenoemde standen.

Opdracht: maak toestandsdiagram lichtregulering
a) Maak een toestandsdiagram voor dit systeem. In de volgende paragraaf wordt dit uitgewerkt, probeer het echter eerst zelf.
b) Het systeem wordt verder uitgebreid. De lamp heeft twee kleuren (rood en blauw). Er wordt een derde knop (C) toegevoegd waarmee kan worden gewisseld tussen de kleur rood en de kleur blauw. Pas het toestandsdiagram hier op aan.

Uitwerking opdracht a)

Hieronder volgt een mogelijke uitwerking van opdracht a) over de lichtregulering.

Het begint met het proberen te bepalen welke toestanden er zijn. In de opdrachtomschrijving staat dat de lamp in drie standen kan staan. Het ligt voor de hand dat we die gebruiken voor de toestanden:

  1. Lamp is uit
  2. Lamp is half aan
  3. Lamp is helemaal aan

Die toestanden kunnen we vast tekenen, als drie bollen

Belangrijk om te weten is welke gebeurtenissen er zijn, op basis daarvan kun je de toestandsovergangen bepalen. Als je de tekst van de opdracht leest blijkt dat er twee knoppen zijn. Dat zijn de gebeurtenissen, er zijn er dus twee:

  • knop A wordt ingedrukt (en weer losgelaten)
  • knop B wordt ingedrukt (en weer losgelaten)

Voor elke toestand (dat zijn er drie) en elke gebeurtenis (dat zijn er twee) kunnen we bepalen wat de toestandsovergang wordt (3 x 2 = 6). Elke toestandsovergang teken je als een pijl. Dan krijg je zoiets als hieronder.

A betekent: knop A wordt ingedrukt, B betekent: knop B wordt ingedrukt.

Nu moeten de acties er nog bij. Bijvoorbeeld, wat moet er gebeuren als de lamp in toestand 2 is en op knop B wordt gedrukt? Dan moet de lamp uit gaan. Een actie zet je altijd bij een toestandsovergang (dus niet bij een toestand). Je krijgt dan dit:

Je ziet, niet bij iedere toestandsovergang hoeft een actie te staan.

We zijn nog niet helemaal klaar, begintoestand moet er bij. Dat is de initiele toestand waar het systeem in begint. Het lijkt logisch dat de lamp eerst uit is, we kiezen daarom toestand 1 als begintoestand. En om het toestandsdiagram overzichtelijk te houden, laten we de toestandsovergangen die naar zichzelf verwijzen en geen actie hebben weg. Dan krijg je dit.

We houden de teksten kort in het diagram om het overzichtelijk te houden. Het nadeel is dat misschien niet helemaal helder is wat er wordt bedoeld. Bijvoorbeeld, de pijl van toestand 1 naar toestand 2 waar bij staat A: lamp half aan zou beter kunnen zeggen:

(gebeurtenis) knop A wordt ingedrukt -> (actie) zet de lamp met halve intensiteit aan.

 

Je kunt het toestandsdiagram voor jezelf testen en daarmee controleren of het klopt. Bijvoorbeeld, wat gebeurt er is als ik op A, B en dan weer B druk? Klopt dit met wat het systeem zou moeten doen?

Probeer nu eerst zelf opdracht b) te doen voordat je de uitwerking bekijkt.

Uitwerking opdracht b)

Hieronder volgt een mogelijke uitwerking van opdracht b) over de lichtregulering.

De eerste vraag die je jezelf moet stellen is: welke toestanden herken ik? De lamp kent nu naast de drie standen (uit, half aan, fel) ook nog de mogelijkheid voor twee kleuren (rood en blauw). Hoeveel toestanden zijn er dan? Het lijkt er op dat dat er zes zijn, namelijk 3 standen x 2 kleuren:

  1. Lamp is uit / rood
  2. Lamp is half aan / rood
  3. Lamp is helemaal aan / rood
  4. Lamp is uit / blauw
  5. Lamp is half aan / blauw
  6. Lamp is helemaal aan / blauw

Laten we proberen het toestandsdiagram uit a) uit te breiden. We laten de acties nog even weg.

Wat zijn de mogelijke gebeurtenissen? Er zijn nu drie knoppen, dus drie gebeurtenissen:

  • knop A wordt ingedrukt
  • knop B wordt ingedrukt
  • knop C wordt ingedrukt

Dat betekent dat er mogelijk 6 (toestanden) x 3 (gebeurtenissen) = 18 mogelijke toestandsovergangen zijn. Nu kun je gaan kijken wat die toestandsovergangen precies zijn en ze als een pijl gaan tekenen. Eerst maar eens kijken wat er moet gebeuren als knop C wordt ingedrukt voor ieder van de toestanden.

 

Dan zijn we er nog niet, want we moeten ook duidelijk maken wat er gebeurt als knop A of B wordt ingedrukt als het systeem in toestand 4, 5 of 6 is.

Vervolgens moeten de acties erbij, dat doen we hieronder, weliswaar in het kort, anders wordt het onoverzichtelijk.

 

Het nadeel van korte teksten is dat het misschien niet helemaal helder is wat er moet gebeuren. Bijvoorbeeld, de pijl van toestand 2 naar toestand 5 waar bij staat C: blauw, zou beter kunnen zeggen:

(gebeurtenis) knop C wordt ingedrukt : (actie) zet het rode licht uit en zet het blauw licht half aan

 

Nog een voorbeeld: de pijl van toestand 1 naar toestand 2 waar bij staat A: 50% rood, zou beter kunnen zeggen:

(gebeurtenis) knop A wordt ingedrukt : (actie) zet het rode licht half aan

 

Een begintoestand hadden we al, dus dit zou het moeten zijn. Test je toestandsdiagram vervolgens voor jezelf. Wat gebeurt er bijvoorbeeld als je de knoppen C, dan A, dan C, dan A indrukt? En klopt dat met wat je verwacht dat het zou moeten doen?

Voorbeeld: tamagotchi

Dit is gebaseerd op Micro:bit Challenge opdrachten en materiaal van Renske Weeda.

Een virtueel huisdier is elektronisch apparaatje dat je kunt ‘opvoeden’. Kijk maar eens naar het artikel over Tamagotchi’s.

Bron: Algemeen Dagblad

 

Het doel is nu om zo’n virtueel huisdier te maken. Eerst maak je één of meerdere toestandsdiagrammen. Daarna kun je het ook zelf gaan implementeren, bijvoorbeeld met behulp van de Micro:bit.

We beginnen met een eenvoudig variant.

Ons huisdier is in eerste instantie blij, dat is de begintoestand. Als hij wordt geknepen, wordt ie verdrietig. Als je ‘m daarna weer aait, wordt ie weer blij. Dit toestandsdiagram kent de volgende toestandsovergangen:

  • Wordt geknepen
  • Wordt geaaid

Opdracht Tamagotchi

a) We gaan de tamagotchi verder uitbreiden. Het virutele huisdier kan boos worden als je hem duwt. Als je ‘m dan weer aait wordt ie weer blij. Of als je ‘m knijpt wordt ie verdrietig. We hebben vast een start gemaakt met het toestandsdiagram. Vul de juiste woorden in op de stippellijnen. Er ontbreken ook nog twee toestandsovergangen (twee pijlen dus), voeg die toe.

 

b) Maak een geheel nieuw toestandsdiagram voor het volgende virtuele huisdier. Standaard is het huisdier blij. Door te duwen wordt hij boos, door de aaien wordt hij blij. Als het donker is gaat hij slapen. Als het licht is wordt hij (blij) wakker. Als hij slaapt heeft duwen en aaien geen effect.

c) Pas het vorige huisdier aan: het huisdier wordt wakker in dezelfde toestand als hij ging slapen. Dus als hij boos was en ging slapen omdat het donker werd, wordt hij ook weer boos wakker.

Voorbeeld: valdetectie

Helaas komt het wel eens voor. Een oudere man of vrouw, alleen thuis, valt van de trap, breekt iets en kan niet meer opstaan of bewegen. De man of vrouw moet blijven liggen en hopen dat er iemand langskomt om te helpen.

Het doel is om een horloge te ontwikkelen dat kan detecteren of iemand valt. Als degene die het horloge draagt valt, wordt dat geregistreerd met behulp van een versnellingssensor (zie ook cyclus 4 van deze module). Vervolgens kan het horloge een bericht versturen naar iemand die in de buurt woon, misschien een zoon of dochter. De houder van het horloge kan ook op de reset-knop drukken om te laten weten dat alles ok is.

De gebeurtenissen zijn:

  • gevallen
  • reset-knop ingedrukt

  • Toestand 1 betekent: niks aan de hand
  • Toestand 2 betekent: persoon is gevallen

Voor de ontvanger van het signaal kun je ook een toestandsdiagram maken. Dit kan bijvoorbeeld op een mobiele telefoon of op een horloge. De gebeurtenissen daar zijn:

  • signaal "gevallen" ontvangen
  • signaal "ok" ontvangen
  • reset-knop ingedrukt

 

  • Toestand 1 betekent: geen alarm
  • Toestand 2 betekent: alarm aan

In het deel over de Micro:bit laten we zien hoe je hiervoor een prototype kunt maken met behulp van radiosignalen.

Correcte toestandsdiagrammen

Tabel met alle toestandsovergangen

Voor het overzicht laten we de toestandsovergangen die naar dezelfde toestand verwijzen ook wel eens weg, zoals hieronder.

Het is echter wel verstandig om goed na te denken over wat er in alle gevallen gebeurt. Bijvoorbeeld, wat gebeurt er in toestand ‘1 euro’ als de gebruiker een frisdrank selecteert? Door over alle mogelijkheden na te denken voorkom je fouten die je later veel tijd kosten om te herstellen. Je kunt dat ook in een tabel weergeven door alle toestanden te combineren met alle mogelijke toestandsovergangen. Daarbij geef je voor alle mogelijkheden aan wat de nieuwe toestand wordt.

Toestandsovergang

Toestand

Inworp 50 cent Inworp 1 euro Selectie
Start: 0 euro 0,5 euro 1 euro 0 euro
0,5 euro 1 euro    
1 euro      
1,5 euro      
2 euro      

 

In de bovenstaande tabel zie je alle toestanden in de linker kolom. Je ziet ook alle mogelijke gebeurtenissen in de bovenste rij. Voor iedere combinatie moet de tabel beschrijven wat de nieuwe toestand wordt. Dit kan dus ook dezelfde toestand blijven. De tabel hierboven is nog niet volledig ingevuld.

 

 

Regels voor een toestandsdiagram

Een toestandsdiagram is gebonden aan strenge regels:

  • Een toestandsdiagram bestaat uit toestanden (bollen) en toestandsovergangen (pijlen)
  • Alle toestanden worden weergegeven als bollen. In de bol staat een korte beschrijving van de toestand.
  • Er is altijd precies één starttoestand, die herken je aan de pijl die niet verbonden is aan een andere toestand.
  • Alle toestandsovergangen worden weergegeven als een pijl, die één kant op wijst. Bij de pijl staat een korte beschrijving van de toestandsovergang.
  • Een toestand kan nooit twee of meer keer dezelfde toestandsovergang hebben.
  • Een toestandsovergang mag dezelfde toestand als begin en eind hebben.
  • Bij een toestandsovergang mogen één of meerdere acties staan. In deze module gebruiken we steeds een dubbele punt om het onderscheid te maken tussen toestandsovergang en actie.

Je kunt toestandsdiagrammen prima op papier tekenen. Dat gaat vaak het snelst, maar pas op dat het wel leesbaar blijft. Een handige tool om toestandsdiagrammen mee te maken vind je via de volgende site.

Finite State Machine Designer

Eindopdracht cyclus 1: Hotelschakeling

Je kent vast wel de wisselschakeling of hotelschakeling. In vrijwel ieder huis komt een dergelijke schakeling voor bij de trap. Zowel beneden als boven zit een schakelaar. Met beide schakelaars kun je dezelfde lamp aan- en uitschakelen. Het systeem bestaat dus uit:

  • 1 lamp
  • schakelaar A
  • schakelaar B

Je kunt gebruik maken van de volgende toestandsovergangen:

 

  • Schakelaar A gaat aan
  • Schakelaar A gaat uit
  • Schakelaar B gaat aan
  • Schakelaar B gaat uit

De mogelijke acties zijn:

  • zet lamp aan
  • zet lamp uit
Opdracht: maak toestandsdiagram hotelschakeling
Maak op basis van de gebeurtenissen en de acties een toestandsdiagram. Bedenk zelf hoeveel toestanden je nodig hebt.

Van toestandsdiagram naar programma

Inleiding

Een toestandsdiagram geeft de werking van een systeem weer. Als je een toestandsdiagram maakt voordat je het systeem echt gaat bouwen of programmeren, kun je jezelf een hoop fouten besparen. Uit het toestandsdiagram kun je namelijk opmaken of het systeem werkt zoals het moet werken. Als je ziet dat er een fout in zit, pas je eerst het toestandsdiagram aan. Dat kost veel minder tijd dan het aanpassen van een programma. Begin daarom altijd eerst met het maken van een toestandsdiagram.

Als je denkt dat het toestandsdiagram goed is kun je het programma gaan maken. Gelukkig is het omzetten van een toestandsdiagram naar een programma redelijk eenvoudig, in dit hoofdstuk leggen we uit hoe dat moet.

Doe ter voorbereiding op het werken met logische operatoren en met if-then-else structuren de volgende unplugged activiteiten met de klas.

Dobbelen met booleans

Kiezen met kaarten

Stappenplan

Als je het toestandsdiagram eenmaal klaar hebt, dan is het maken van een programma dat kan worden uitgevoerd op bijvoorbeeld de Microbit, Arduino of Lego Mindstorms eenvoudig. We laten dat zien aan de hand van het volgende toestandsdiagram voor een systeem bestaande uit een lamp en een drukknop. Als de drukknop wordt ingedrukt (en weer losgelaten) gaat de lamp aan. Wordt de drukknop nogmaals ingedrukt (en weer losgelaten) gaat de lamp uit.

 

 

Om een toestandsdiagram om te zetten in een programma gebruik je ALS-DAN-constructies. De toestand sla je op in een variabele. Hieronder zie je een uitwerking in pseudo-code. Het bestaat uit twee delen:

 

EENMALIG BIJ OPSTARTEN

Dit deel wordt één keer uitgevoerd. Hierin kun je bijvoorbeeld de starttoestand aangeven.

 

HERHAAL:

Alles wat hier staat wordt steeds weer opnieuw uitgevoerd, zolang het systeem aan is.

 

Alle toestanden krijgen een nummer:

1 - Lamp is uit

2 - Lamp is aan

 

EENMALIG BIJ OPSTARTEN:

    toestand wordt 1

 

HERHAAL:

    ALS (toestand is 1) DAN

        ALS (de drukknop wordt ingedrukt) DAN

             toestand wordt 2

             zet lamp aan

    ALS (toestand is 2) DAN

        ALS (de drukknop wordt ingedrukt) DAN

             toestand wordt 1

             zet lamp uit

 

Zie je de relatie tussen het toestandsdiagram en de pseudo-code?

Er is ook een andere manier, waarbij je start vanuit de gebeurtenissen.

EENMALIG BIJ OPSTARTEN:

    toestand wordt 1

    zet lamp aan

 

HERHAAL:

    ALS (de drukknop wordt ingedrukt) DAN

        ALS (toestand is 1) DAN

            toestand wordt 2

            zet lamp aan

         ANDERS ALS (toestand is gelijk aan 2) DAN

             toestand wordt 1   

             zet lamp uit

 

Beide manieren zijn toegestaan. Het hangt van de situatie en het specifieke platform dat je gebruikt (Micro:bit, Arduino, Lego Mindstormd) af wat het makkelijkste is. Soms gebruik je een mix van beide aanpakken.

Pas op voor de valkuil

Blijf goed opletten bij het omzetten van een toestandsdiagram naar een programma. Neem het volgende voorbeeld. Iemand heeft op basis van het eerdere toestandsdiagram het volgende programma gemaakt.

 

EENMALIG BIJ OPSTARTEN:

    toestand wordt 1

 

HERHAAL:

    ALS (de drukknop wordt ingedrukt) DAN

        ALS (toestand is 1) DAN

             toestand wordt 2

             zet lamp aan

        ALS (toestand is 2) DAN

             toestand wordt 1   

             zet lamp uit

 

 

Tabel met alle toestandsovergangen

Om er zeker van te zijn dat je hebt nagedacht over alle toestandsovergangen is het goed om een tabel maken met alle mogelijke combinaties. We geven een voorbeeld op basis van het volgende toestandsdiagram. Dit is een uitwerking van de hotelschakeling die je eerder hebt gezien. Het systeem bestaat uit twee schakelaars en een lamp. Met beide schakelaars moet de lamp aan en uit kunnen worden gezet.

SA staat voor Schakelaar A, SB voor Schakelaar B

  • Toestand 1: SA = uit, SB = uit (de lamp is uit )
  • Toestand 2: SA = aan, SB = uit (de lamp is uit )
  • Toestand 3: SA = aan, SB = aan (de lamp is uit )
  • Toestand 4: SA = uit, SB = aan(de lamp is uit )

 

 

Hieronder zie je een tabel met alle mogelijke toestandsovergangen. Voor elke combinatie moet er staan wat de nieuwe toestand wordt en welke actie wordt uitgevoerd. Als er een streepje staat (-), dan is er geen toestandsovergang en geen actie. Hieronder hebben we vast een begin gemaakt.



Toestand   
  SA gaat aan     SA gaat uit     SB gaat aan     SB gaat uit  
1 2
zet lamp aan
   
2 1
zet lamp uit
   
3        
4        

 

Opdracht: maak de tabel compleet
Maak de bovenstaande tabel compleet

 

Opdracht: maak programma

Hieronder vind je een start voor het programma dat hoort bij het toestandsdiagram voor de hotelschakeling uit de vorige paragraaf.

EENMALIG BIJ OPSTARTEN:

    toestand wordt 1

 

HERHAAL:

    ALS (toestand is 1) DAN

        ALS (SA gaat aan) DAN

             toestand wordt 2

             zet lamp aan

        ANDERS ALS (SB gaat aan) DAN

             toestand wordt 4   

             zet lamp aan

    ALS (toestand is 2) DAN

         ...

 

 

Opdracht: maak de pseudocode
Maak op basis van het toestandsdiagram en de bijbehorende tabel het programma in pseudocode af.

Oefenopdrachten

Oefenopdracht: toegangscode

Het volgende toestandsdiagram beschrijft een systeem voor toegang tot een beveiligde omgeving. Het systeem bestaat uit twee drukknoppen, A en B. Om toegang te krijgen tot het systeem moet de gebruiker de knopjes indrukken in de juiste volgorde. Dan gaat de deur van het slot. Zodra iemand er doorheen loopt valt de deur automatisch weer in het slot.

Opdracht: toegangscode

a) Pas nu het toestandsdiagram aan zodat de deur open gaat bij de code ABBA.

b) Maak nu een in pseudocode op basis van het bovenstaande toestandsdiagram.

c) Ga nu uit van 3 knoppen: A, B en C. De kluis moet opengaan met de volgende twee codes:
ABCA. Maar ook bijvoorbeeld AABCA, ABABCA. Zolang het maar eindigt op ABCA.
ABBA. Ook hier geldt: zolang het maar eindigt op ABBA.

Maak het toestandsdiagram.

Oefenopdracht: toggle-functie van een drukknop

Je hebt kunnen lezen bij het deel over de aanraaksensor dat er drukknopjes zijn met en zonder toggle-functie. De drukknopjes met toggle-functie zijn eigenlijk een schakelaar, ze kunnen aan of uit staan. De drukknopjes zonder toggle-functie staan altijd uit, tenzij je je vinger op de knop houdt, dan staat ie aan. Je kunt een drukknopje zonder toggle-functie toch laten werken als drukknopje met toggle-functie. Dat ga je in deze opdracht maken.

Maak twee toestandsdiagrammen voor een eenvoudig systeem met een lampje en een drukknop zonder toggle-functie. Ga uit van de volgende gebeurtenissen

  • De drukknop wordt ingedrukt (was eerst niet ingedrukt en nu wel)
  • De drukknop wordt losgelaten (was eerst wel ingedrukt en nu niet meer)

Er zijn twee mogelijke acties

  • Zet lamp aan
  • Zet lamp uit

Opdracht Toggle-functie van drukknopje

Maak twee toestandsdiagrammen:

  1. voor een systeem waarbij de lamp aan gaat zodra je de knop indrukt. De lamp gaat uit zodra je de knop loslaat.
  2. voor een systeem waarbij de lamp aan gaat zodra je de knop indrukt. De lamp blijft aan, ook als je de knop loslaat. Als je de knop nogmaals indrukt gaat de lamp uit. De lamp blijft uit, ook nadat je de knop hebt losgelaten.

Oefenopdracht: TV met 2 afstandsbedieningen

Opdracht: TV met 2 afstandsbedieningen

Je hebt een televisie die werkt met een afstandsbediening. Omdat je vaak een afstandsbediening kwijt raakt heb je besloten een tweede afstandsbediening erbij te nemen. Maak een toestandsdiagram voor deze TV. Je kunt je beperken tot twee zenders waarop de televisie kan staan: NPO1 en NPO2. Verder hebben beide afstandsbedieningen beide twee knoppen:schakelen naar NPO1 en schakelen naar NPO2.

Terug naar voorpagina

Ga terug naar de voorpagina met verwijzingen naar alle hoofstukken voor deze module.