modellering met Arduino project module

Vergelijkbare documenten
modellering met Arduino extra module

modellering met Arduino

modellering met Arduino mini module

Naam + Klas: Laptop Nr: Cijfer:

1. Sluit de LED aan zoals afgebeeld 2. Sluit de USB-kabel aan op de Arduino 3. Klik op de knop uploaden 4. De LED begint te knipperen

Workshop Arduino - deel 2

MAKERKLAS WORKSHOP ARDUINO. Maandag 7 december 2015

Android apps met App Inventor 2 antwoorden

Werkbladen voor Arduino workshop 1

VANTEK Discovery set. N. B. De OPITEC bouwpakketten zijn gericht op het onderwijs. N991240#1

KAEDU : Outputs en inputs

bug fixen F. Vonk versie

Arduino[4KIDS] Maak je eigen muziekinstrument!

van PSD naar JavaScript

intro informatica F. Vonk versie

Workshop Arduino voor beginners deel 2

Logo quiz Project Inleiding op de Logo!

Arduino Workshop 1 Zuid-Limburg

logische schakelingen & logica antwoorden

RCL Arduino Workshop 1

Workshop Arduino Uno. Touw dag 6 juni 2015 Harold Pootjes en Simon Pauw

Arduino. C.F.J. Pols.

Ravi Ramcharan Arduino PRO Smart leeslampje

MS Word opzet verslag

Arduino Cursus, Deel 2 Programmeren. Simon Pauw, ZB45, Amsterdam

algoritmiek - antwoorden

Arduino cursus. Eelco Dijkstra Steunpunt Informatica - Its Academy 24 september 2015

c o n t r o l Computerbesturing voor basisscholen Laurence Rogers en Doug Dickinson, School of Education, University of Leicester

Tweede workshop Arduino

Programmeren met Arduino-software

Arduino. Arduino UNO. Sam Decoster. CoderDojo Roeselare. Sam Decoster

Oefening 1 - Seriële communicatie via USB

EM2 Microcontroller Project. LED cube

Workshop FLL. Leer robots programmeren. Marieke Peelen Lennart de Graaf Daryo Verouden -

Deel 8: stappenmotoren en interrupts

De FOR lus: // terug naar waar je vandaan kwam Serial.begin(115200); // communicatie snelheid met de PC

Arduino Zuid-Limburg Workshop 2

computerarchitectuur antwoorden

Fysische Informatica met FLEC

Temperatuur Les 8 Leerkrachtenhandleiding. Basis

Infographic De infographic geeft in grove lijnen het overkoepelend concept weer Your home remotely controlled Zie de infographic hier naast.

Aansluitles Les 1 Overzicht van de Componenten. Basis

RGB licht Les 2 Leerkrachthandleiding. Basis. Materialen

Hand-out Introductieworkshop LED programmeren

//enable de interne pull-up weerstand. //variabele sensorval. //naar de seriële monitor

Schakelingen Hoofdstuk 6

talstelsels F. Vonk versie

Workshop Arduino voor beginners. door TkkrLab Enschede

USB Webserver installatie en gebruik

Inleiding Tijdens deze les programmeren de leerlingen hun eigen verkeerslicht. Lesdoelen. Materiaal

programmeren leeromgeving

logische schakelingen & logica

Docentenhandleiding Arduino. Handleiding voor bij de module Arduino UNO kit

Inleiding De leerlingen maken deze les een alarm. Opent iemand stiekem hun broodtrommel? Dan worden ze dankzij het alarm gewaarschuwd!

A R D U I N O. addendum bij: Leren programmeren, meten en sturen met de Arduino. 3 e druk INHOUD

Programmeren met Arduino

PWS informatica. F. Vonk versie

PROJECT 5: PLANT MONITOR

INHOUD. dankbetuiging inleiding DE ARDUINO REVOLUTIE...16 OVER DIT BOEK...17 OPZET VAN DIT BOEK...18

th_elt Hardware & Software

INFORMATIE

Project 7 Pratende plant Docent Project 7 - Pratende Plant Docent

Gebruikershandleiding. robotcar.nl

Arduino : Morse Voltmeter

Installatiehandleiding

De mbot Ranger. Je wilt zeker meteen al aan de slag. Maar voordat we beginnen moet je 3 dingen weten.

Basisoefeningen en uitwerkingen Systeembord. Opgaven en antwoorden op It s learning en agtijmensen.nl

computernetwerken - antwoorden

Room Controller NEW BEDIENING 40KMC---N 42HMC---N 42VMC---N 40SMC---N I S O

De mbot. Je wilt zeker meteen al aan de slag. Maar voordat we beginnen moet je 3 dingen weten.

Slimme schakelingen (2)

BBR programmeren met Ardublock

Arduino. HCC Vlaanderen - Mechelen 7 februari Luc De Cock

DE ASTRO PI PROGRAMMEREN VOOR MISSION ZERO

Over Betuwe College. Lego Mindstorm project

talstelsels F. Vonk versie

Antwoorden Systeembord Fysische informatica voor de onderbouw havo/vwo

Meet the Arduino FAMILY

by Jody Culkin Bronnen die gratis gebruikt, verspreid of aangepast kunnen worden. meestal software of hardware.

Arduino Workshop. door Geert Roumen (CC) BY-SA. lemio.nl/arduino/

Jeroen uit. Extra informatie. Voor de lunch. Arduino zo aangesloten om mijn code te laten werken. (versie voor lunch) (code voor de lunch)

Handleiding MH1210B temperatuurregelaar

b) Teken op de bijlage welke lampjes van het klokje branden om 19:45:52. Schrijf eronder hoe je dit bepaald/berekend hebt. (3p)

Auto Alarm FM5000 FM500 FM600 FM700 LCD MINI

Ventilator les 3 Leerkrachthandleiding. groep 5/6

Ar-doe-wie-no. Voorwoord

Inhoud Inhoud. Inleiding 1 Leerdoelen 1

7,6. Samenvatting door A woorden 12 april keer beoordeeld. Natuurkunde. Natuurkunde Systemen. Systemen

SYSTEMEN 11/3/2009. Deze toets bestaat uit 3 opgaven (28 punten). Gebruik eigen grafische rekenmachine en BINAS toegestaan. Veel succes!

by Jody Culkin Bronnen die gratis gebruikt, verspreid of aangepast kunnen worden. meesta software of hardware.

Wat is Arduino? Arduino = microprocessor (Atmel)

Bij elektronische systemen moet er informatie verwerkt worden. Deze verwerking gebeurt door middel van elektronische panelen.

Handleiding Alma Rally & Alma Rally Off-road

Arduino eind concept. Uitleg over werking en concept. Andrew Lau

Opgave Tussentijdse Oefeningen Jaarproject I Reeks 3: Tijd, licht en warmte

Project If This Then That Naam: Valérie den Besten Docent: Rob Zimmerman Datum:

Arduino. Workshop. 20 juni 2014 Peter Struwe Stichting De Jonge Onderzoekers Groningen

Het hele scherm besturen

Transcriptie:

2016 modellering met Arduino project module F. Vonk versie 1 2-9-2016

inhoudsopgave 1. inleiding... - 2-2. regelsystemen... - 3-3. lichtsterkte meten... - 4-4. een knop uitlezen... - 8-5. aansturen van een servomotor... - 10-6. State Transition Diagrams... - 13-7. sensoren en actuatoren combineren... - 17-8. afsluitende uitdagingen... - 18 - Dit werk is gelicenseerd onder een Creative Commons Naamsvermelding NietCommercieel GelijkDelen 3.0 Unported licentie Deze module is grotendeels gebaseerd op: Aan de slag met Arduino Overleven in een ruimtestation ; ESoE bètadidactiek opdracht 2011-2012; R. Eggenkamp, R. van Elst, J. Geurts en M. Savelsberg. De afbeelding op het voorblad is verkregen via INFOwrs. Copyright 2010 INFOwrs Serviços em informatica. - 1 -

1. inleiding Welkom terug! In deze module ga je niet alleen met actuatoren werken, maar ook met sensoren. Verder ga je werken met State Transition Diagrams (toestandsovergang diagrammen). Dus welkom bij de module modellering met Arduino project module. In deze module kom je opgaves tegen, die je moet maken om de lesstof te verwerken. De antwoorden kunnen in de les besproken worden. opgave Opgaves in blauw moet je maken. Je kunt deze, op verzoek, ook aan je leraar laten zien. Kun je dit niet, dan beïnvloedt dat je cijfer voor de uitdagingen. In deze module kom je uitdagingen tegen, die je moet maken om dit onderdeel van het vak informatica af te ronden. Je oplossingen moet je als groepje met je leraar bespreken. uitdaging Opgaves in paars zijn uitdagingen. De uitvoering van alle uitdagingen samen bepalen het cijfer voor dit onderdeel van het vak informatica. Bij iedere uitdaging hoort een verslag, dat je inlevert. Voor je aan deze module mag beginnen, moeten de uitdagingen uit de mini module afgetekend zijn. Voor iedere uitdaging krijg je een cijfer. Het gemiddelde van deze cijfers is je eindcijfer. Per uitdaging worden eisen beschreven waaraan je moet voldoen om een 7 te halen. Meestal worden er ook hints gegeven over hoe je een hoger cijfer kunt halen. Afhankelijk van hoe je werkt in de les en wat de leraar van je observeert, moet je je resultaat en verslag uiteindelijk wel of niet mondeling toelichten. Als je je resultaat moet toelichten, dan kan dat buiten de lestijd ingepland worden. Je cijfer zal in dat geval ook afhangen van je toelichting. Let op, links in dit document hebben een rode kleur. - 2 -

2. regelsystemen In de voorgaande hoofdstukken heb je, als het goed is, een indruk gekregen van wat er allemaal met de Arduino mogelijk is. Een Arduino is een goede regelaar (controller) binnen meet- en regelsystemen. Een meet- en regelsysteem bestaat typisch uit een aantal onderdelen: één of meerdere sensoren, één of meerdere actuatoren en één of meerdere controllers. Een sensor kan een natuurkundige grootheid waarnemen in een omgeving en de waarde daarvan als signaal doorsturen naar de controller. Een voorbeeld is een lichtsensor die de gemeten lichtsterkte doorgeeft aan een Arduino. Er zijn echter nog veel meer sensoren beschikbaar die makkelijk aangesloten kunnen worden op een Arduino. Met een aantal sensoren ga je kennismaken in dit hoofdstuk. Een actuator is een stuk elektronica dat direct of indirect invloed kan uitoefenen op zijn omgeving. Een voorbeeld is een elektronische schakelaar die de verwarming aanzet. Maar de LED lampjes die je al veel gebruikt hebt, zijn ook actuatoren. Ze geven immers licht en beïnvloeden daarmee hun omgeving. De controller verwerkt de signalen van de sensoren en stuurt op basis van de waarde van de binnenkomende signalen en zijn programma de actuatoren aan. Een voorbeeld van een controller in je eigen huis is de thermostaat. Deze meet de temperatuur in de kamer en zet op basis daarvan en op basis van de gebruikersinstellingen de verwarming aan of uit. - 3 -

3. lichtsterkte meten In deze paragraaf ga je de Arduino de lichtsterkte weer laten geven. Hiervoor ga je een lichtsensor aan de Arduino koppelen. Uiteindelijk ziet je opstelling er ongeveer als volgt uit. Lichtsterkte wordt gemeten met een Light Dependent Resistor (LDR). Dit is een weerstand die afhankelijk is van de lichtsterkte in zijn omgeving. De weerstand van een LDR neemt af naarmate er meer licht op valt. Dat klinkt misschien raar, omdat het een omgekeerd verband is. Toch werken de meeste sensoren op deze manier. In de volgende afbeelding zie je een LDR. Als je meer wilt weten over hoe een LDR werkt, kijk dan bijvoorbeeld eens op Technology Student of Lady Ada. Om de waarde van sensoren te laten zien hebben we de Serial Monitor van de Arduino ontwikkelomgeving nodig. Je vindt deze in het menu onder Tools, zoals je in de volgende afbeelding ziet. - 4 -

Als je de Serial Monitor aanzet krijg je het volgende scherm te zien waar je informatie in kunt afdrukken via het programma dat je op de Arduino runt. Om informatie naar de Serial Monitor te sturen moet je de Serial.println functie gebruiken. Om deze functie te kunnen gebruiken moet je in de setup functie de instructie Serial.begin(9600); gebruiken. Deze zorgt ervoor dat de Arduino een verbinding met de PC opent om data uit te wisselen. Bij het aansturen van een LED lampje gebruikten we een digitale Arduino poort, omdat we het lampje alleen aan en uit wilden zitten. De waarde van een LDR is echter niet aan of uit, maar een geleidende schaal. Daarom sluiten we de LDR niet op een digitale, maar een analoge Arduino poort aan. Omdat de LDR een sensor is, moeten we een inputpoort gebruiken. Via een analoge inputpoort kunnen we de waardes 0 tot en met 1023 binnen krijgen. Dit alles leidt tot de volgende code. - 5 -

int ldrpin = A0; // LDR zit aan analoge input A0 int ldrvalue = 0; // var om LDR waarden te onthouden void setup() Serial.begin(9600); // start de Serial Monitor void loop() ldrvalue = analogread(ldrpin); // lees een nieuwe LDR waarde Serial.println(ldrValue); // stuur waarde naar Serial Monitor delay(100); // wacht een tiende seconde Figuur 1: Code om een LDR uit te lezen en de waarde te laten zien. Nu je dit allemaal weet, ben je klaar voor de volgende opdracht. opgave 3.1 Bouw een opstelling met een LDR die de gemeten lichtsterkte laat zien in de Serial Monitor. Benodigdheden: Arduino breadboard 1 LDR 1 weerstand van 10kΩ (kilo Ohm) 3 M/M jump wires (draadjes) Je kunt voor deze opgave de opstelling in de afbeelding hierna gebruiken. De LDR heeft, net als een gewone weerstand, geen positieve of negatieve kant, het maakt dus niet uit hoe je de pootjes plaatst. Om de LDR goed te laten werken gebruik je een 10kΩ weerstand. - 6 -

Ze de code uit Figuur 1 in een nieuwe sketch, zorg je dat de Serial Monitor aanzet en stuur de code naar de Arduino. Kijk wat er op de Serial Monitor verschijnt. Houd je hand boven de LDR en kijk wat er met de waarde van de lichtsterkte gebeurt. Je kunt ook met een flashlight app op je smartphone extra licht op de LDR schijnen. Probeer goed te snappen wat er gebeurt en waarom. Bijvoorbeeld: Waarom hoef je niet de instructie pinmode(ldrpin, INPUT); in de setup functie te zetten? Waarom wordt er een hoog getal getoond op de Serial Monitor als er weinig licht op de LDR valt en een laag getal als er veel licht opvalt. Hint: Het programma in deze sketch leest de waarde van analoge pin A0, dat wil zeggen dat de Arduino de spanning op A0 meet. - 7 -

4. een knop uitlezen Deze paragraaf laat zien hoe je via de Arduino met een drukknop actuatoren kunt bedienen. In dit voorbeeld zet je er alleen het indicatie LED van de Arduino mee aan en uit, maar later kun je er ook andere actuatoren mee aansturen. Ook bij drukknoppen is het belangrijk te weten welk type knop je hebt. Dit bepaalt namelijk hoe je de knop aan moet sluiten. Wij gebruiken de volgende iprototype drukknop. Via de link vind je onder andere het aansluitschema. In het schema staat 1 weerstand maar er staat nergens wat voor soort weerstand dat is. In dit geval is het een 220Ω weerstand. Je zult merken, dat als je nieuwe dingen uit gaat vinden op het gebied van elektronica, dat de informatie die je vindt vaak niet volledig is. Je zult dus zelf inventief moeten zijn om de details te achterhalen. Een drukknop heeft maar twee toestanden en kun je dus het beste aansluiten op een digitale poort van de Arduino. We geven je alvast de code die je straks nodig gaat hebben in je sketch. /* * Zet de LED van pin 13 aan en uit als er gedrukt wordt op de knop * die aan pin 2 gekoppeld is. */ int buttonpin = 2; // de drukknop zit aan pin 2 int ledpin = 13; // de indicatie LED zit aan pin 13 int buttonvalue = 0; // variable om de drukknop uit te lezen void setup() pinmode(ledpin, OUTPUT); // initialiseer LED pin als output pinmode(buttonpin, INPUT); // initialiseer button pin als input void loop() buttonvalue = digitalread(buttonpin); // lees waarde van de knop if (buttonvalue == HIGH) // Bij ingedrukte knop is de waarde HIGH else digitalwrite(ledpin, HIGH); // zet de LED aan digitalwrite(ledpin, LOW); // zet de LED uit Figuur 2: Code om een knop uit te lezen en het indicatie LED aan/uit te zetten. - 8 -

opgave 4.1 Bouw de opstelling die je vindt op de iprototype website. Je hebt daarvoor het volgende nodig: Arduino breadboard 1 drukknop 1 weerstand van 220Ω (Ohm) 3 M/M jump wires (draadjes) Zorg dat je de code uit Figuur 2 goed begrijpt en test alles uit. Pas vervolgens de code zo aan, dat de indicatie LED uitgaat als je de knop indrukt en aan gaat als je de knop loslaat. Pas daarna de code zo aan, dat je de toestand van de knop in de Serial Monitor ziet. Pas tot slot de code zo aan, dat de toestand van de knop maar 1 keer per seconde gecontroleerd wordt. Beredeneer goed wat het gevolg van deze wijziging is. Is deze positief of negatief en waarom? - 9 -

5. aansturen van een servomotor Deze paragraaf laat zien hoe je via de Arduino een servomotor (afgekort servo) kunt aansturen. De informatie over de servo die we gebruiken vind je op iprototype servo. Een servo kan typisch heen en terug draaien, maar geen rondjes draaien. Daarom is een servo niet geschikt om bijvoorbeeld de wielen van een auto te laten draaien. opgave 5.1 Bouw een opstelling aan de hand van de informatie die je vindt op de iprototype website. Je hebt daarvoor minimaal het volgende nodig: Arduino breadboard 1 servo 3 M/M jump wires (draadjes) Probeer vervolgens zelf een sketch te maken om de servo aan te sturen. Als het niet lukt vraag dan om hulp van je leraar. Hints: Zorg dat je de servo bibliotheek (Servo.h) aanhaalt (include). Zorg dat je in de setup functie aangeeft dat je een Arduino pin aan de servo koppelt (attached). Bijvoorbeeld pin 9. Zorg dat je in de loop functie een aantal keer een positie (een hoek in graden) aan de servo doorgeeft. Hiervoor gebruik je de write functie uit de servo bibliotheek. - 10 -

opgave 5.2 Als het goed is heb je intussen een opstelling en een sketch die goed samenwerken. Nu ga je wat dingen aanpassen. Pas de code zo aan, dat je, via een lus, de servo van 0 graden met stappen van 15 graden naar de maximale positie brengt. Iedere stap duurt 500 milliseconden. Daarna moet de servo met stappen van 10 graden weer terug draaien naar 0 graden. Iedere stap duurt nu 250 milliseconden. Pas daarna de code zo aan, dat je de stand van de servo in de Serial Monitor ziet. Je hebt intussen redelijk wat met sensoren en actuatoren gewerkt. Tot nu toe heb je steeds 1 sensor of 1 actuator gebruikt (behalve bij de drukknop waar het indicatie LED feitelijk ook en actuator is). Je kunt echter, zoals je in de filmpjes uit de inleiding ziet, veel grotere opstellingen maken met meerdere sensoren en actuatoren. Stel je wilt een opstelling maken met bijvoorbeeld een lichtsensor en een temperatuursensor. Dan kun je niet beide sensoren op de A0 pin aansluiten. Gelukkig heeft de Arduino 6 analoge ingangen waar je sensoren op kunt aansluiten, zie rechts onderaan op Figuur 3. Op elk van deze analoge ingangen kun je een sensor aansluiten. Je moet uiteraard wel zorgen dat de code van je sketch de correcte pin uitleest voor de juiste sensor. Figuur 3: De power en analoge input pinnen in detail. - 11 -

Daarnaast wil je misschien een servomotor, een ventilator en een aantal LED lampjes aansluiten. Ook dat is mogelijk, zelfs tezamen met meerdere sensoren. De actuatoren kun je aansluiten op de digitale pinnen of analoge output pinnen aan de bovenkant van het Arduino bord. Bij de digitale pinnen staat een ~ op de Arduino Uno, zie Figuur 4. Dat zijn dus pin 3, 5, 6, 9, 10 en 11 zoals je kunt zien. Ook hier geldt, dat je in je code moet zorgen dat de juiste waarde naar de juiste pin voor de juiste actuator wordt gestuurd. Figuur 4: De digitale pinnen en analoge output pinnen in detail. Voor het uitlezen van drukknoppen, het aansturen van LED lampjes die alleen op een vaste lichtsterkte mogen te branden en het aansturen van een relais kun je vrij kiezen uit de pinnen 2 t/m 13. - 12 -

6. State Transition Diagrams In de afgelopen hoofdstukken ben je diverse sensoren en actuatoren tegengekomen. Veel van deze hebben een zogenaamde toestand. Een drukknop is bijvoorbeeld wel of niet ingedrukt, een LED lampje is wel of niet aan, een servo draait of staat stil enzovoorts. Dingen die een toestand hebben kunnen we modelleren met een toestandsovergang diagram. In het Engels heten dit een State Transition Diagram, afgekort STD. Een voorbeeld van een STD van een drukknop zie je afgebeeld in Figuur 5. De verklaring van de gebruikte symbolen vind je in Tabel 1. Figuur 5: STD van een drukknop. Tabel 1: Symbolen uit een STD. symbool uitleg Dit is het symbool voor de begintoestand van het diagram. Wanneer het systeem dat het STD modelleert in werking treedt, dan is het systeem in zijn begintoestand. Een toestand van het systeem. Een toestand heeft altijd een naam die de toestand zo duidelijk mogelijk beschrijft. Een event (gebeurtenis) dat op kan treden binnen het systeem. Als een event optreedt binnen het systeem, dan zorgt dit voor een toestandsovergang binnen het systeem. Dit kan een overgang naar dezelfde toestand zijn! Een event heeft meestal een naam die het event zo duidelijk mogelijk beschrijft. Soms hebben events geen naam. In dat geval treden ze altijd en onmiddellijk op. - 13 -

In het online tool, GliffyOnline, dat je voor flowcharts hebt gebruikt, kun je ook een STD maken. Hiervoor kun je de symbolen gebruiken die je aan de linkerkant bij UML Activity vindt. De naamgeving van de symbolen in Gliffy is iets anders dan in een standaard STD. De begintoestand heet in Gliffy initial node en de toestand heet action. opgave 6.1 Maak, met de symbolen die je nu kent, een STD voor een LED lampje. Misschien heb je gemerkt dat het maken van een STD voor een lampje minder logisch is dan voor een drukknop. Vond je het makkelijk om een goede naam te vinden voor de events? Hoe denk je dat dit komt? De drukknop is een sensor, die door een gebruiker van het systeem bedient wordt. Dat betekent, dat de events worden getriggerd door de gebruiker en dat is een heel natuurlijke situatie. Een LED lampje is echter geen sensor, maar een actuator. Wie bedient een actuator? Precies, de Arduino. De events, die horen bij een actuator, worden daarom niet getriggerd door de gebruiker van het systeem, maar door het systeem zelf. Meestal is dit wel een resultaat van iets dat de gebruiker doet. Kijk maar eens naar het STD in Figuur 6. Figuur 6: STD van een drukknop en LED lampje. - 14 -

opgave 6.2 Probeer het STD uit Figuur 6 te snappen zonder eerst de uitleg hieronder te lezen. Het diagram in Figuur 6 verandert 1 aspect van het STD, namelijk het event. In Figuur 5 gaf het event alleen de trigger (stuurpuls) van het event aan, in Figuur 6 wordt daar een actie aan toegevoegd. Een event bestaat nu dus uit een trigger / actie paar. Wat je verder ziet is dat de actie uit het ene event de trigger is in een ander event. Dit is de manier waarop sensoren invloed uitoefenen op actuatoren. Kun je je de volgende code nog herinneren? void loop() buttonvalue = digitalread(buttonpin); // lees waarde van de knop if (buttonvalue == HIGH) // Bij ingedrukte knop is de waarde HIGH digitalwrite(ledpin, HIGH); // zet de LED aan else digitalwrite(ledpin, LOW); // zet de LED uit Figuur 7: De loop functie code om een drukknop uit te lezen. opgave 6.3 Kijk goed naar Figuur 6 en de code van Figuur 7. Is er een relatie tussen beide figuren en zo ja welke? opgave 6.4 Maak zelf een flowchart die het programma van een drukknop en een LED lampje modelleert. - 15 -

Zoals je ziet kun je het systeem met een drukknop en een LED lampje met zowel een flowchart als STD modelleren. Toch geldt dit niet voor alle problemen. In flowcharts heb je geen toestanden en kan de toestand daarom niet onthouden worden. Dat kan in een STD wel, al heb je dat nog niet geleerd. Je zult begrijpen dat de STD modellen die je tot nu toe hebt gemaakt erg eenvoudig zijn en er veel meer symbolen zijn om complexere problemen te modelleren met een STD. Het mooie aan de STD modellen is dat er tools zijn om ze om te zetten in programma code die ook daadwerkelijk werkt! Kijk maar eens op Altova en Sinelabore. Je ziet daar overigens dat veel mensen de term SMD (State Machine Diagram) gebruiken in plaats van STD. Hier een stukje code, dat je al in de mini module hebt gezien. int ledpin = 13; // LED connected to digital pin 13 void setup() pinmode(ledpin, OUTPUT); // sets the digital pin as output int teller = 0; // var to control code in loop void loop() if (teller == 3) // execute code only when teller equals 3 digitalwrite(ledpin, HIGH); // sets the LED on teller = 0; // restart counting with teller else // execute code when teller is not equal to 3 digitalwrite(ledpin, LOW); // sets the LED off teller = teller + 1; delay(1000); // waits for a second opgave 6.5 Maak een STD, dat het voorgaande programma modelleert. - 16 -

7. sensoren en actuatoren combineren De vorige opdracht met de servo is niet echt zinvol. Een servo die alleen maar heen en weer draait heeft weinig nut, tenzij het warm is en je er een waaier op monteert. In dit hoofdstuk ga je daarom een LDR combineren met een servo. Daarbij geeft de hoeveelheid licht aan in welke stand de servo moet gaan staan. Hiermee zou je een automatische luifel kunnen maken. Hoe meer zon er is, hoe verder de luifel naar beneden moet. opgave 7.1 Bouw een opstelling waarin je een LDR en een servo aan de Arduino koppelt. Op basis van wat je in vorige opdrachten geleerd hebt, zou je daar zelf een opstelling voor moeten kunnen maken. Je hebt daarvoor minimaal het volgende nodig: Arduino breadboard 1 servo 1 LDR 1 weerstand van 10kΩ (kilo Ohm) M/M jump wires (draadjes) Maak vervolgens een flowchart die het programma, dat je moet gaan schrijven, modelleert. Probeer ook een STD te maken voor datzelfde programma. Maak vervolgens een sketch om de LDR en de servo aan te sturen. Zorg dat je handige informatie naar de Serial Monitor stuurt. Als het niet lukt vraag dan om hulp van je leraar. Hint: De map functie, zie de Arduino website, is handig om een waarde van de LDR om te zetten naar de positie van de servo motor. De LDR geeft waarden tussen 0 en 1023 en de servo kan alleen tussen 0 en 180 gezet worden. - 17 -

8. afsluitende uitdagingen In dit hoofdstuk staan 2 gespecificeerde uitdagingen en 1 vrije uitdaging. Je hoeft slechts 2 van deze uitdagingen af te ronden. Wanneer je de vrije uitdaging tot een goed einde brengt, dan scoor je daar natuurlijk hogere hogen mee! afsluitende uitdaging: verkeerslicht met voetgangerslicht In deze uitdaging ga je een semi-realistische verkeerssituatie namaken. Er is een stroom van auto's en fietsers op een eenrichtingsstraat die door een driekleurig verkeerslicht wordt geregeld. Er is echter ook een voetgangersoversteekplaats. Deze wordt geregeld door een voetgangerslicht met een drukknop en geluid. Je wilt geen ongelukken, dus het verkeerslicht en voetgangerslicht mogen niet samen op groen staan. Een voorbeeld vind je op YouTube. Benodigdheden: 1. Arduino en breadboard 2. 5 LED lampjes (2x groen, oranje/geel en 2x rood) 3. drukknop en speaker 4. 7 weerstanden van 220Ω 5. M/M jump wires Maak zelf een opstelling voor het geschetste probleem. Je zoekt zelf uit hoe de speaker werkt. Wij gebruiken de volgende iprototype speaker. Je kunt deze speaker zonder weerstand gebruiken, maar het is beter om er een 220Ω weerstand tussen te zetten. Je bepaalt zelf hoe lang de lichten op groen, rood of oranje staan. Daarnaast moet je een veiligheidsinterval inbouwen. Dit is de tijd tussen het op rood springen van het ene licht en het op groen springen van het andere. Zorg dat je uitlegt, waarom je de gekozen tijden hebt genomen. Maak een flowchart en STD om het gedrag van het systeem te modelleren. Maak een programma, dat de gebouwde opstelling laat werken volgens de modellen en de specificaties. Zet voldoende commentaar in je code! - 18 -

Het kan zijn, dat je gaandeweg de modellen nog moet aanpassen. Dat mag. Bewaar de eerste versie van je modellen, zodat je die ook in je verslag kunt zetten. Als alles werkt, laat het je leraar dan even zien! Je resultaat moet aan de volgende eisen voldoen: 1. De opstelling en code werken correct. 2. Je verslag bevat een beschrijving van het systeem en uitleg waarom het zo moet werken. Dus bijvoorbeeld welke tijden heb je gekozen en waarom. 3. De modellen voldoen aan de voorgeschreven notaties. 4. De modellen beelden het bedachte systeem uit, niet de implementatie ervan. 5. De flowcharts bevatten voldoende uitleg. 6. De code bevat voldoende commentaar. In je verslag neem je het volgende op: De initiële flowchart met uitleg waar nodig. De uiteindelijke flowchart met uitleg over de veranderingen. Een foto van je opstelling. De code die je gemaakt hebt (met voldoende commentaar). Hints voor een hoger cijfer: Hoe hoger de kwaliteit van je modellen, hoe hoger je cijfer. Hoe beter je uitleg van het systeem en de modellen, hoe hoger je cijfer. Hoe beter het commentaar in je code, hoe hoger je cijfer. Mogelijk bedenk je een goede uitbreiding op het systeem en realiseert die. - 19 -

afsluitende uitdaging: interactief mood light In een eerdere uitdaging heb je een mood light gemaakt. Deze reageerde echter niet op zijn omgeving. Nu je ervaring hebt met sensoren ga je dat veranderen. Je gaat een interactief mood light maken. De interactieve mood light moet aan de volgende eisen voldoen: Als de omgeving donker is, dan verandert de mood light rustig van kleur. Hoe meer licht er is, hoe sneller de mood light van kleur moet veranderen. Een knop om de mood light aan en uit te zetten. Benodigdheden: Arduino en breadboard 3 LED lampjes (rood, groen en blauw) drukknop en LDR 4 weerstanden van 220Ω en 1 weerstand van 10kΩ M/M jump wires afdekmateriaal, bijvoorbeeld wit papier Maak zelf een opstelling voor het geschetste probleem. Je bepaalt zelf het precieze gedrag van je systeem. Zorg ervoor, dat je uit legt waarom je dit gedrag hebt gekozen. Maak een flowchart en STD om het gedrag van het systeem te modelleren. - 20 -

Maak een programma, dat de gebouwde opstelling laat werken volgens de modellen en de specificaties. Zet voldoende commentaar in je code! Het kan zijn, dat je gaandeweg de modellen nog moet aanpassen. Dat mag. Bewaar de eerste versie van je flowchart, zodat je die ook in je verslag kunt zetten. Als alles werkt, laat het je leraar dan even zien! Je resultaat moet aan de volgende eisen voldoen: 1. De opstelling en code werken correct. 2. Je verslag bevat een beschrijving van het systeem en uitleg waarom het zo moet werken. Dus bijvoorbeeld welke tijden heb je gekozen en waarom. 3. De modellen voldoen aan de voorgeschreven notaties. 4. De modellen beelden het bedachte systeem uit, niet de implementatie ervan. 5. De flowcharts bevatten voldoende uitleg. 6. De code bevat voldoende commentaar. In je verslag neem je het volgende op: De initiële flowchart met uitleg waar nodig. De uiteindelijke flowchart met uitleg over de veranderingen. Een foto van je opstelling. De code die je gemaakt hebt (met voldoende commentaar). Hints voor een hoger cijfer: Hoe hoger de kwaliteit van je modellen, hoe hoger je cijfer. Hoe beter je uitleg van het systeem en de modellen, hoe hoger je cijfer. Hoe beter het commentaar in je code, hoe hoger je cijfer. Mogelijk bedenk je een goede uitbreiding op het systeem en realiseert die. - 21 -

vrije uitdaging Bedenk zelf een systeem met de sensoren en actuatoren die je tot nu toe gebruikt hebt. Het hoeft geen zinvol systeem te zijn, het mag ook gewoon een grappig systeem zijn. Zie het systeem als showcase om te laten zien wat je geleerd hebt. Je gaat zelf opschrijven wat je systeem moet doen. Verder ga je de opdracht uitvoeren zoals je gewend bent, dus je maakt ook modellen van het gedrag van het systeem en documenteert die. - 22 -