modellering met Arduino extra module

Vergelijkbare documenten
modellering met Arduino project module

modellering met Arduino

modellering met Arduino mini module

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

Naam + Klas: Laptop Nr: Cijfer:

MAKERKLAS WORKSHOP ARDUINO. Maandag 7 december 2015

Workshop Arduino - deel 2

bug fixen F. Vonk versie

GameMaker Language. F. Vonk versie

Werkbladen voor Arduino workshop 1

Android apps met App Inventor 2 antwoorden

KAEDU : Outputs en inputs

intro informatica F. Vonk versie

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

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

MS Word opzet verslag

Arduino[4KIDS] Maak je eigen muziekinstrument!

Workshop Arduino voor beginners deel 2

Arduino Workshop 1 Zuid-Limburg

Logo quiz Project Inleiding op de Logo!

Programmeren met Arduino-software

van PSD naar JavaScript

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

RCL Arduino Workshop 1

Arduino. C.F.J. Pols.

algoritmiek - antwoorden

Ravi Ramcharan Arduino PRO Smart leeslampje

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

logische schakelingen & logica antwoorden

Arduino Zuid-Limburg Workshop 2

Programmeer-handleiding Easyboard MB

Tweede workshop Arduino

PWS informatica. F. Vonk versie

EM2 Microcontroller Project. LED cube

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

Oefening 1 - Seriële communicatie via USB

Temperatuur Les 8 Leerkrachtenhandleiding. Basis

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

Aansluitles Les 1 Overzicht van de Componenten. Basis

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

RGB licht Les 2 Leerkrachthandleiding. Basis. Materialen

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

Deel 8: stappenmotoren en interrupts

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

Hand-out Introductieworkshop LED programmeren

Arduino. HCC Vlaanderen - Mechelen 7 februari Luc De Cock

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

Docentenhandleiding Arduino. Handleiding voor bij de module Arduino UNO kit

Programmeren met Arduino

Workshop Arduino voor beginners. door TkkrLab Enschede

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

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

Project 7 Pratende plant Docent Project 7 - Pratende Plant Docent

programmeren leeromgeving

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

computerarchitectuur antwoorden

Handleiding Alma Rally & Alma Rally Off-road

Wat is Arduino? Arduino = microprocessor (Atmel)

Schakelingen Hoofdstuk 6

talstelsels F. Vonk versie

Fysische Informatica met FLEC

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

Gebruikershandleiding. robotcar.nl

computernetwerken - antwoorden

logische schakelingen & logica

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

PROJECT 5: PLANT MONITOR

Antwoorden Systeembord Fysische informatica voor de onderbouw havo/vwo

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

th_elt Hardware & Software

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

USB Webserver installatie en gebruik

Arduino : Morse Voltmeter

Mi-light WiFi ibox Configuratie. Download de Mi-light 3 App. Stap 2: Installeer uw led spots, strips of lampen. Sluit Wifi module aan

Een verkeerslicht met Arduino

Installatiehandleiding

DE ASTRO PI PROGRAMMEREN VOOR MISSION ZERO

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

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.

Neem een signaal-kabel en sluit hiermee het input-onderdeel aan, aan de kant van het Easyboard waar input bij staat.

INFORMATIE

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

Inhoud Inhoud. Inleiding 1 Leerdoelen 1

Ventilator les 3 Leerkrachthandleiding. groep 5/6

Slimme schakelingen (2)

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

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

Ar-doe-wie-no. Voorwoord

5 Weerstand. 5.1 Introductie

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

PROJECT 2 - MAZE DRIVE - OFFERTE RICK VAN VONDEREN

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

Hoe het werkt: 2. Sluit de ontvanger op de stroom aan door middel van de adapter die gemarkeerd is met "HorseAlarm receiver only".

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

Verkeerslichten. De Verkeerslichten & de PLC in het TIBBLTO / VICTO lokaal. Werkplek 1. Leer & werkboek.

talstelsels F. Vonk versie

Milight Wifi module installatiehandleiding. 1 Download de Milight App. 2 Stap 2: Plaats uw led strips en/of lampen. 3 Sluit Wifi module aan

Aan de slag met Anna.

Transcriptie:

2017 modellering met Arduino extra module F. Vonk versie 2 27-7-2017

inhoudsopgave 1. inleiding... - 3-2. meet- en regelsystemen... - 5-3. lichtsterkte meten... - 6-4. een knop uitlezen... - 10-5. (optioneel) aansturen van een servomotor... - 12-6. State Transition Diagrams... - 14-7. sensoren en actuatoren combineren... - 18-8. uitdaging... - 20-9. einduitdaging... - 22 - Dit werk is gelicenseerd onder een Creative Commons Naamsvermelding NietCommercieel GelijkDelen 3.0 Unported licentie Deze module is 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. - 2 -

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 extra 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. Het goed uitvoeren van de gewone uitdagingen in deze module resulteert in het cijfer 7 mits de uitdagingen in de mini module ook goed zijn afgerond. In het laatste hoofdstuk staat een uitdaging. Deze voer je uit nadat je alle andere uitdagingen hebt voltooid en zorgt ervoor dat je een cijfer hoger dan een 7 kunt halen. Bij iedere uitdaging hoort een deelverslag. Uiteindelijk lever je 1 verslag in dat alle deelverslagen bevat. Per uitdaging worden eisen beschreven waaraan je moet voldoen. Gebruik voor code in je verslag het lettertype "Courier New". 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. - 3 -

Let op, links in dit document hebben een rode kleur. Voor leerlingen die informatica als extra vak doen: Het kan zijn dat je niet alle lessen aanwezig kunt zijn en dat je thuis geen Arduino tot je beschikking hebt. In dat geval doe je zoveel mogelijk met de Arduino in de les. In de beoordeling wordt er dan rekening mee gehouden, dat je niet alle delen die met de Arduino zelf af hebt gekregen. Je maakt natuurlijk wel voor alle uitdagingen de modellen en geeft er de uitleg bij. Ter compensatie doe je een extra uitdaging in deze module en modelleer je een complex systeem in de einduitdaging van deze module. Onder een complex systeem verstaan we een systeem met tenminste 3 verschillende actuatoren en 5 verschillende sensoren. - 4 -

2. meet- en 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. - 5 -

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. - 6 -

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 zetten. 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. - 7 -

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 10 kω (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. - 8 -

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. - 9 -

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. - 10 -

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? - 11 -

5. (optioneel) 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. Deze paragraaf kun je eventueel overslaan, je hebt geen servomotor nodig voor de uitdagingen in deze module. 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. - 12 -

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. - 13 -

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 toestandsovergang diagrammen (vaak afgekort tot toestandsdiagrammen). In het Engels heet zo'n diagram een State Transition Diagram, afgekort STD. Je hebt al voorbeelden van STDs gezien in de module bug fixen bij het spel Super Mario. Een voorbeeld van een STD van een drukknop zie je afgebeeld in Figuur 3. De verklaring van de gebruikte symbolen vind je in Tabel 1. Je ziet dat er geen tijdsinformatie in het STD staat. Een STD is tijdloos. Figuur 3: 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. - 14 -

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 4. Figuur 4: STD van een drukknop en LED lampje. - 15 -

opgave 6.2 Probeer het STD uit Figuur 4 te snappen zonder eerst de uitleg hieronder te lezen. Het diagram in Figuur 4 verandert 1 aspect van het STD, namelijk het event. In Figuur 3 gaf het event alleen de trigger (stuurpuls) van het event aan, in Figuur 4 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 5: De loop functie code om een drukknop uit te lezen. opgave 6.3 Kijk goed naar Figuur 4 en de code van Figuur 5. 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. - 16 -

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); opgave 6.5 Maak een STD, dat het voorgaande programma modelleert. - 17 -

7. sensoren en actuatoren combineren Je hebt intussen met redelijk wat 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 in Figuur 6. 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 6: De power en analoge input pinnen in detail. 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 output pinnen aan de bovenkant van het Arduino bord. Bij sommige digitale pinnen staat een ~ op de Arduino Uno, zie Figuur 7. Dat zijn dus pin 3, 5, 6, 9, 10 en 11 zoals je kunt zien. Dit zijn zogenaamde PWM (Pulse Width Modulated) pinnen. Hier kun je niet alleen HIGH en LOW naar toe sturen, maar ook een waarde van 0 t/m 255. Je gebruikt dan niet de digital- Write(), maar de analogwrite() functie. Ook hier moet je in de code zorgen, dat je de juiste waarde naar de juiste pin voor de juiste actuator stuurt. Figuur 7: De digitale pinnen en analoge output pinnen in detail. - 18 -

In dit hoofdstuk ga je een sensor (een LDR) combineren met een actuator (een LED lampje). Daarbij geeft de gemeten hoeveelheid licht aan hoe fel het LED lampje moet branden. Hiermee kun je automatische verlichting maken. Hoe lichter het is, hoe minder je LED lampje de omgeving hoeft te verlichten en op die manier kun je energie besparen. opgave 7.1 Bouw een opstelling waarin je een LDR en een LED 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 LED 1 weerstand van 220 Ω (Ohm) 1 LDR 1 weerstand van 10kΩ (kilo Ohm) M/M jump wires (draadjes) Maak vervolgens STDs die het programma, dat je moet gaan schrijven, modelleert. Maak vervolgens een sketch om de LDR uit te lezen en op basis daarvan de LED 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 een waarde voor de LED. De LDR geeft waarden tussen 0 en 1023 (inclusief grenzen) en de LED kan alleen op waardes tussen 0 en 255 (inclusief grenzen) gezet worden. - 19 -

8. uitdaging uitdaging 4: 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 flowcharts en STDs 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! 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. - 20 -

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 modellen bevatten voldoende uitleg. 6. De code bevat voldoende commentaar. In je verslag neem je het volgende op: De initiële flowcharts en STDs met uitleg waar nodig. De uiteindelijke flowcharts en STDs met uitleg over de veranderingen. Een foto van je opstelling. De code die je gemaakt hebt (met voldoende commentaar). uitdaging voor leerlingen met extra vak In deze uitdaging ga je een meet en regel systeem van een auto (anders dan een cruise control systeem) modelleren. Maak flowcharts en STDs om het gedrag van het systeem te modelleren. Leg uit waarom de modellen er zo uitzien. Je mag natuurlijk op het internet opzoeken hoe het systeem werkt. Let wel op, dat je niet een flowchart en STD van het internet pakt. Je moet het systeem zelf modelleren! Je resultaat moet aan de volgende eisen voldoen: 1. De modellen voldoen aan de voorgeschreven notaties. 2. De modellen beelden het bedachte systeem uit, niet de implementatie ervan. 3. De modellen bevatten voldoende uitleg. In je verslag neem je het volgende op: De flowcharts en STDs met uitleg waar nodig. - 21 -

9. einduitdaging einduitdaging 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. Als alles werkt, laat het je leraar dan even zien! Voor leerlingen die informatica als extra vak doen: Als je niet alles af hebt gekregen met betrekking tot de Arduino en code, dan modelleer je een complex systeem. Onder een complex systeem verstaan we een systeem met tenminste 3 verschillende actuatoren en 5 verschillende sensoren. - 22 -

Hier volgt een voorbeeld van een mogelijke einduitdaging. Deze kun je uitvoeren of gebruiken om inspiratie op te doen voor je zelf bedachte uitdaging. voorbeeld einduitdaging: mood light In het huidige tijdperk is het doel van licht veranderd van puur verlichting naar het creëren van sfeer. Zo bestaan er lavalampen om een rustgevende sfeer te creëren. De nieuwste trend zijn LED mood lights, dit zijn lampen die langzaam van kleur veranderen. Meestal zijn er verschillende programma s te kiezen, afhankelijk van de sfeer die de gebruiker wil creëren. Het doel van deze opdracht is om met behulp van drie gekleurde LED lampjes en een LDR zelf een mood light te maken. Kijk voor een voorbeeld op YouTube. Benodigdheden: Arduino breadboard 3 LED lampjes (rood, groen en blauw) 3 weerstanden van 220 Ω 1 LDR 1 weerstand van 10 kω. M/M jump wires (draadjes) afdekmateriaal, bijvoorbeeld wit papier Maak een mood light bestaande uit drie LED lampjes (rood, groen en blauw). Maak hiervoor zelf een opstelling. Maak flowcharts en STDs om het gedrag van de mood light te modelleren. Het gedrag bepaal je zelf. Zorg dat je uitlegt, waarom je de gekozen tijden en kleuren hebt genomen. - 23 -

Maak een programma, dat de gebouwde opstelling laat werken volgens het model 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 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. 3. De modellen voldoen aan de voorgeschreven notaties. 4. De modellen beelden het bedachte systeem uit, niet de implementatie ervan. 5. De modellen bevatten voldoende uitleg. 6. De code bevat voldoende commentaar. In je verslag neem je het volgende op: De initiële flowcharts en STDs met uitleg waar nodig. De uiteindelijke flowcharts en STDs met uitleg over de veranderingen. Een foto van je opstelling. De code die je gemaakt hebt (met voldoende commentaar). - 24 -