modellering met Arduino mini module

Vergelijkbare documenten
modellering met Arduino project module

modellering met Arduino extra module

modellering met Arduino

MAKERKLAS WORKSHOP ARDUINO. Maandag 7 december 2015

Workshop Arduino - deel 2

RCL Arduino Workshop 1

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

Werkbladen voor Arduino workshop 1

Arduino[4KIDS] Maak je eigen muziekinstrument!

Arduino Workshop 1 Zuid-Limburg

Android apps met App Inventor 2 antwoorden

Programmeren met Arduino-software

van PSD naar JavaScript

De Arduino-microcontroller in de motorvoertuigentechniek (6)

Tweede workshop Arduino

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

Workshop Arduino voor beginners. door TkkrLab Enschede

Boe-Bots - Arduino robots

Deel 1: Arduino kennismaking. Wat is een microcontroller, structuur van een programma, syntax,

Hand-out Introductieworkshop LED programmeren

MS Word opzet verslag

algoritmiek - antwoorden

intro informatica F. Vonk versie

Workshop Arduino voor beginners deel 2

DE ASTRO PI PROGRAMMEREN VOOR MISSION ZERO

Naam + Klas: Laptop Nr: Cijfer:

Elektor Uno R4 Installatie & Test

BEGINNER JAVA Inhoudsopgave

Module 3: Scratch programmeren: is het logisch of is het niet logisch?

Meet the Arduino FAMILY

logische schakelingen & logica antwoorden

PROS1E1 Handleiding ( ) Kf/Dd/Bd

Onderdelen. Programmeer Kabel. button. Reset. Transistor. npn. Breadbord. Infrarood lampje. Fabschoolino. Draadjes

Arduino. HCC Vlaanderen - Mechelen 7 februari Luc De Cock

computerarchitectuur antwoorden

Accelerometer project 2010 Microcontroller printje op basis van de NXP-LPC2368

Workshop IOT. Handleiding V5 Vincent Verheggen 6 november Taal: Nederlands.

Je gaat leren programmeren en een spel bouwen met de programmeertaal Python. Websites zoals YouTube en Instagram zijn gebouwd met Python.

Oefening 1 - Seriële communicatie via USB

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

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

Wat is Arduino? Arduino = microprocessor (Atmel)

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

Workshop Engino. 1 Aanvang workshop. 2 Bouwen. 1.1 Wat kan ik voor de workshop doen?

Logo quiz Project Inleiding op de Logo!

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

Programmeren met Arduino

USB Webserver installatie en gebruik

g. Je kan nu door op de play knop te drukken je programma versturen naar de EV3 brick waarna het zal uitgevoerd worden.

bug fixen F. Vonk versie

Je kunt de mbot ook draadloos programmeren via Bluetooth of met 2.4G Wireless. Bekijk de instructies op mbot draadloos.

HANDLEIDING PROGRAMMEREN IN PASCAL (LAZARUS)

Het aansluiten van uw Victron op een computer; met VE Bus Quick Configure

TECHNOLOGIE TECHNIEK. Vervangende opdracht voor produceer de sleutelhanger. H.O. Boorsma.

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

Deel 8: stappenmotoren en interrupts

WELKOM BIJ UNICODING PROCESSING. Unicoding 1. Handleiding docent LES 1 DEEL A: Vormen, coördinaten en kleuren

ES1 Project 1: Microcontrollers

Temperatuur Les 8 Leerkrachtenhandleiding. Basis

ES1 Project 1: Microcontrollers

Installeren van de Arduino programmeer omgeving

Single Board computers. Ruud van der Meer (voor HCC d.d. 4 dec2017 Leiderdorp)

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

AVR-DOPER MINI ASSEMBLAGE HANDLEIDING + LAYOUT. Geschreven door: Tom Vocke

Computervaardigheden. Universiteit Antwerpen. Computervaardigheden en Programmatie. Grafieken en Rapporten 1. Inhoud. Wat is scripting?

Mini Handleiding over Elektronica-onderdelen

De Arduino-microcontroller in de motorvoertuigentechniek (8)

Installatiehandleiding

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

Tool Gebruikershandleiding E46 Mods

Bouw je eigen minicomputer

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

Project Kerstverlichting T&T - Fioretti College Veghel

talstelsels F. Vonk versie

PWS informatica. F. Vonk versie

Besturing van de Miniatuurwereld RM-U. Gebruik van de Bootloader

Zo gaat jouw kunstwerk er straks uitzien. Of misschien wel heel anders.

Programmeerstructuren met App Inventor

Ravi Ramcharan Arduino PRO Smart leeslampje

Snel aan de slag met de Mini Squirrel datalogger

DE ASTRO PI KLAARMAKEN VOOR GEBRUIK

Handleiding ISaGRAF. Wil men het programma bewaren, dan is het verstandig een back-up te maken: C9 Back-up / Restore

Je gaat leren programmeren in Ruby. En daarna in Ruby een spelletje maken. Websites zoals Twitch en Twitter gemaakt zijn met behulp van Ruby?

Een stop-motion film maken

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

Bouw je eigen minicomputer

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

The Nike+ SportWatch GPS Powered by TomTom

Raspberry Pi Interfacing.

Ar-doe-wie-no. Voorwoord

GEVORDERDEN 1 WEARABLES

programmeren leeromgeving

Aansluitles Les 1 Overzicht van de Componenten. Basis

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

EM2 Microcontroller Project. LED cube

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

AAN DE SLAG MET DE MBOT!

APP INVENTOR BEGINNER

Transcriptie:

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

inhoudsopgave 1. inleiding... - 3-2. de Arduino... - 5-3. programmeren voor Arduino... - 8-4. breadboards en elektronica... - 14-5. verder met programmeren... - 16-6. flowcharts... - 18-7. appendix A: Arduino IDE configureren... - 27 - 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 Modelleren wordt steeds belangrijker in onze maatschappij. Producten die ontwikkeld worden, zijn steeds complexer. Om de kwaliteit en kosten van deze producten goed te kunnen managen, is het belangrijk eerst een goed model van een product te maken. Er zijn veel modelleringsmethoden op veel verschillende gebieden 1. In deze module gaan we naar een methode kijken op het gebied van software modellering, te weten flowcharts (stroomdiagrammen). Om het levendiger te maken, ga je de gemaakte modellen ook implementeren met behulp van een zogenaamde microcontrollerbord, in dit geval een Arduino. Zo'n Arduino bestaat uit een eenvoudige CPU met weinig RAM die beide op een printplaat zijn gemonteerd. Op deze printplaat wordt een relatief groot aantal IO (input-output) poorten aangeboden om sensoren en actuatoren aan te sluiten, zoals LED lampjes, drukknopjes, buzzers enzovoorts. Figuur 1: Een Arduino Uno Rev3 microcontrollerbord. De Arduino en andere microcontroller oplossingen worden voor de meest waanzinnige dingen gebruikt. Een aantal voorbeelden: YouTube Arduino Robot Hand YouTube Arduino Tetris YouTube Arduino 3D LED cube Dus welkom bij de module modellering met Arduino mini module. We gaan je kennis laten maken met de Arduino en een aantal actuatoren. Daarnaast ga je leren over flowcharts. 1 Zie bijvoorbeeld Wikipedia Systems Modeling. - 3 -

In deze module kom je opgaves tegen, die je moet maken om de lesstof te verwerken. 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 inleveren en eventueel als groep met je leraar bespreken. uitdaging Opgaves in paars zijn uitdagingen. Het goed uitvoeren van de uitdagingen in deze module resulteert in het cijfer 5,5. 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". Laat de oplossing voor je uitdaging zien aan je leraar. 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. 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 de mini en extra module. - 4 -

2. de Arduino Naast de Arduino, die je afgebeeld ziet in Figuur 1 in het vorige hoofdstuk, heb je nog een type A/B USB kabel en een computer nodig. Om software voor de Arduino te schrijven heb je de Arduino ontwikkelomgeving nodig. Deze is al geïnstalleerd op de computers in het informaticalokaal. Je kent intussen het programma "Hello World!". Dit programma doet niks meer of minder dan Hello World! op het scherm laten zien. Dit programma wordt vaak gebruikt om snel te testen of de ontwikkelomgeving goed werkt. Binnen de elektronicawereld gebruikt men een variant op "Hello World!" en die heet "Blink". Het "Blink" programma zorgt ervoor dat je een LED lampje kunt laten knipperen. Het programma, ook wel "sketch" genoemd in de Arduino wereld, "Blink" wordt standaard meegeleverd met de Arduino ontwikkelomgeving. Hiermee ga je testen of alles goed werkt. opgave 2.1 Voer de volgende stappen uit en kijk of alles goed werkt: 1) Sluit de Arduino met de USB kabel aan op de PC. 2) Start de Arduino IDE op via Start All Programs Vakken Informatica Arduino 1.6.6 (dit kan even duren als de IDE nog nooit op de PC gebruikt is). Je ziet dan het volgende venster. Dit is de Arduino IDE. - 5 -

3) Kijk of het "Arduino Uno" bord ingesteld is bij Tools Board, zie appendix A: Arduino IDE configureren. 4) Kijk of de juiste USB poort ingesteld is bij Tools Port, zie appendix A: Arduino IDE configureren. 5) Ga naar File Examples in het menu. Je ziet hier een grote verzameling voorbeelden staan. Kies het Blink programma onder Basics. 6) De omgeving opent een nieuw venster met de sketch erin. Linksboven staan twee knoppen die je nodig hebt om een sketch te verifiëren en installeren op de Arduino. De linker knop Verify gebruik je om de code te controleren, de rechter knop Upload om de sketch op de Arduino te installeren. 7) Klik nu eerst op de Verify knop. Onderin beeld zie je dat de code gecontroleerd wordt (dit noemen we compileren). Als dit succesvol verloopt zie je het volgende. 8) Klik vervolgens op de Upload knop. De Arduino ontwikkelomgeving compileert de sketch nu nogmaals en upload deze vervolgens naar de Arduino. Als dit gelukt is zie je de melding Done uploading. Als alles goed is gegaan, dan zie je nu op de Arduino het indicatie LED knipperen met een snelheid van ongeveer 1 seconde, zie afbeelding hieronder. - 6 -

Proficiat, je hebt je eerste programma uitgevoerd op een Arduino bord. Nu ga je zelf de code wat aanpassen. opgave 2.2 Bekijk de code van de Blink sketch goed. Pas de code nu zo aan, dat het indicatie LED twee keer zo snel gaat knipperen. Als het niet lukt, geen probleem, dan ga je gewoon door met de module en probeer je het straks nog een keer. - 7 -

3. programmeren voor Arduino In het vorige hoofdstuk heb je de Blink sketch geladen in de ontwikkelomgeving, gecompileerd, naar de Arduino overgezonden en gekeken of het echt werkt op de Arduino. Misschien is het je zelf al gelukt om het LED lampje twee keer zo snel te laten knipperen. In dit hoofdstuk gaan we kijken hoe zo n sketch er uitziet, en zullen we er meer wijzigingen in maken. De sketch zelf staat in het tekstgedeelte van de Arduino ontwikkelomgeving. Sketches zijn geschreven in een op C/C++ gebaseerde taal. C en C++ zijn programmeertalen die erg veel gebruikt worden. Als je Verify vanuit het menu kiest, dan gaat de omgeving de tekst lezen en vertalen naar de Arduino machinetaal (compileren) zodat de Arduino het programma uit kan voeren. De Blink sketch is niet in alle versies van de ontwikkelomgeving hetzelfde. Waarschijnlijk ziet de versie die jij hebt er anders uit dan het onderstaande voorbeeld. Als dat het geval is, verander de sketch die je hebt dan in de onderstaande. /* * Blink * * The basic Arduino example. Turns on an LED on for one second, * then off for one second, and so on... We use pin 13 because, * depending on your Arduino board, it has either a built-in LED * or a built-in resistor so that you need only an LED. * * http://www.arduino.cc/en/tutorial/blink */ int ledpin = 13; // LED connected to digital pin 13 void setup() { pinmode(ledpin, OUTPUT); } // run once, when the sketch starts // sets the digital pin as output void loop() { } // run over and over again digitalwrite(ledpin, HIGH); // sets the LED on delay(1000); // waits for a second digitalwrite(ledpin, LOW); // sets the LED off delay(1000); - 8 -

We gaan nu het programma ontleden. commentaar Het eerste stuk is het zogenaamd commentaar. /* * Blink * * The basic Arduino example. Turns on an LED on for one second, * then off for one second, and so on... We use pin 13 because, * depending on your Arduino board, it has either a built-in LED * or a built-in resistor so that you need only an LED. * * http://www.arduino.cc/en/tutorial/blink */ Commentaar is tekst die niet wordt vertaald naar Arduino machinetaal, het is er alleen om mensen te vertellen wat er gaat gebeuren. Commentaar verduidelijkt de code. Commentaar begint met een /* en eindigt met een */. Alles tussen de /* en */ wordt genegeerd bij het compileren. In dit voorbeeld wil de auteur het er netjes uit laten zien met extra * s, maar dat hoeft niet. Commentaar is essentieel en het is belangrijk dat je zelf ook voldoende commentaar in je eigen sketches zet. Zonder commentaar is het voor anderen veel moeilijker om jouw code te begrijpen. Dit geldt natuurlijk voor je groepsgenoten, maar ook voor de docent die jouw werk moet beoordelen. Aan het begin van de sketch zet je de naam en het doel van je sketch. variabelen Daarna komen de variabelen. int ledpin = 13; // LED connected to digital pin 13 Dit is de eerste regel van de echte Arduino instructies. Het gedeelte aan de rechterkant is het commentaar. Als je een enkele commentaarregel of een deel daarvan wilt schrijven, dan kun mag je het achter // zetten. Het gedeelte voor de // noemen we een statement, ofwel een computer opdracht. In het Nederlands eindigen we een zin met een. (punt), maar in veel computertalen gebruiken we de ; (puntkomma). De computer regel hierboven is een opdracht voor de computer om een variabele, een speciaal soort doosje, te maken die ledpin heet, en waar de waarde 13 in gestopt wordt. Het heet een variabele, omdat de inhoud gedurende de uitvoering van de sketch kan veranderen; de inhoud is "variabel". - 9 -

Het eerste gedeelte van de regel is int, dit geeft aan wat voor soort variabele we gaan maken; we noemen dit het type. Het is de afkorting van integer en dat betekent geheel getal. Dit wil zeggen dat in deze variabele alleen gehele getallen gestopt kunnen worden. Als je er iets anders is stopt dan faalt het compileren. opgave 3.1 Verander de waarde 13 bij de variabele ledpin in "Jantje" en druk op de Verify knop. Kijk wat er gebeurt. Het tweede gedeelte van de regel is ledpin, dit is de naam van de variabele. Het derde gedeelte van de regel is de =, dit geeft aan dat de variabele ledpin de waarde krijgt die aan de rechterkant van de = staat. Deze = spreek je uit als "wordt", omdat het aangeeft dat de waarde van de variabele verandert. Het vierde gedeelte van de regel is 13, een geheel getal dat aan ledpin toegekend wordt. functies Het volgende, en laatste, stuk van de sketch bestaat uit functies. In iedere sketch worden twee speciale functies verwacht namelijk: void setup() en void loop() Daarnaast kun je ook zelf functies maken. void setup() { pinmode(ledpin, OUTPUT); } // run once, when the sketch starts // sets the digital pin as output Het woord void slaan we even over. Daarna staat de naam van de functie, in dit geval setup. Na de naam staan ALTIJD een openings- en een sluithaakje. Tussen deze haakjes mag iets staan, maar dat hoeft niet. Daarna staat wat de functie moet doen, dit staat altijd tussen accolades. Wat de functie moet doen wordt aangegeven door middel van instructies/statements. Dit alles noemen we een functiedeclaratie. De instructie in deze functie geeft aan dat de ledpin in de output modus staat, dat wil zeggen dat de Arduino verwacht dat we waardes gaan schrijven naar deze pin. - 10 -

pinmode is de naam van een functie die binnen de Arduino ontwikkelomgeving al voor ons gemaakt is en die we daarom kunnen gebruiken. Als we de pinmode functie gebruiken noemen we dat een functieaanroep. Ook bij een functieaanroep zetten we ALTIJD een openings- en een sluithaakje na de naam van de functie. Meestal staat er iets tussen de haakjes, maar dat hoeft niet! In het geval van pin- Mode staan er twee dingen tussen haakjes. Dit zijn de argumenten die we aan de functie doorgeven. Je scheidt de argumenten door middel van komma's. Je kunt dit vergelijken met wat je in de wiskunde gebruikt. Bijvoorbeeld sin(30), die de sinus van 30 graden voor je uitrekent. Een overzicht van functies die je kunt gebruiken vind je bijvoorbeeld op de Arduino website. De volgende functie heet loop en ziet er als volgt uit. void loop() // run over and over again { digitalwrite(ledpin, HIGH); // sets the LED on delay(1000); // waits for a second digitalwrite(ledpin, LOW); // sets the LED off delay(1000); } In deze functie worden 4 instructies uitgevoerd. De tweede en de vierde regel zijn identiek en hebben met wachten te maken. Deze instructie zegt: Arduino, doe 1000 milliseconden niets. De instructie roept de functie delay aan die ook bekend is binnen de Arduino ontwikkelomgeving. Dit is handig, want dan hoeven we niet zelf de code te schrijven om de Arduino te laten wachten. De eerste instructie bevat ook een functie aanroep. Ditmaal wordt de functie digitalwrite aangeroepen, die uiteraard ook bekend is in de Arduino ontwikkelomgeving. Hiermee kun je de spanning op een pin van de Arduino zetten of weghalen. Wanneer die pin met een LED verbonden is kun je daarmee die LED aan- en uitzetten. Aanzetten doe we met de speciale waarde HIGH en uitzetten met LOW. opgave 3.2 Als het in het vorige hoofdstuk niet gelukt is, pas dan nu de code van de Blink sketch zo aan, dat het indicatie LED twee keer zo snel gaat knipperen. - 11 -

de speciale functies setup en loop De functies setup en loop zijn speciaal voor de Arduino. De setup functie wordt altijd helemaal aan het begin aangeroepen, dus vanaf het moment dat er spanning op de Arduino staat. Nadat de setup functie is uitgevoerd, wordt telkens opnieuw de loop functie aangeroepen. De loop functie wordt dus steeds weer en net zolang aangeroepen totdat de spanning van de Arduino wordt gehaald. opslaan van je code Nu we de hele sketch geanalyseerd en aangepast hebben is het tijd om de veranderingen op te slaan. Als je dat probeert, dan krijg je de melding dat de sketch read-only is, zie de afbeelding hieronder. Sla hem nu op in een eigen map onder een zinvolle naam. Vervolgens ga je de volgende opdrachten uitvoeren. opgave 3.3 Verander de sketch zodat de code ervan er precies hetzelfde uitziet als de code aan het begin van dit hoofdstuk. Sla de sketch vervolgens op onder een nieuwe naam. opgave 3.4 Verander de sketch zo, dat de indicatie LED 100ms aan is en 900ms uit. Sla de sketch vervolgens op onder een nieuwe naam. - 12 -

uitdaging 1: Blink In deze uitdaging ga je spelen met de aan en uit duur van het LED. Benodigdheden: Arduino Verander de Blink sketch zo, dat de LED 50 ms aan is en 50 ms uit. Sla de sketch vervolgens op onder een nieuwe naam. Verander de zojuist gemaakte sketch zo, dat de LED 10 ms aan is en 10 ms uit. Sla de sketch vervolgens op onder een nieuwe naam. Verklaar wat je ziet, en vergelijk het met het resultaat van de vorige sketch uit deze uitdaging. Als alles werkt, laat het je leraar dan even zien! In je verslag neem je het volgende op: De uitleg van je observaties. De code die je gemaakt hebt (met voldoende commentaar). - 13 -

4. breadboards en elektronica Je gaat in de rest van deze module aan de slag met elektronica in de vorm van sensoren en actuatoren. In dit hoofdstuk krijg je uitleg over de basis van de elektronicacomponenten die we gaan gebruiken. Hiernaast zie je een breadboard. Dit gebruik je om componenten op elkaar aan te sluiten. Belangrijk om te weten is dat de verschillende gaatjes in een patroon met elkaar verbonden zijn. Zoek zelf uit hoe dit bij jouw breadboard zit. Hiernaast zie je enkele enkel kleurige LED lampjes, in dit geval rode. Zo'n LED lampje heeft twee pootjes. Het ene pootje (positieve pootje) sluit je aan op een hoge spanning, bijvoorbeeld 3,3 of 5 volt. Het andere pootje (negatieve pootje) sluit je aan op de 0 volt. Je sluit het positieve pootje via een weerstand aan op een digitale poort van de Arduino. Deze stuurt ongeveer 3,3 volt uit. Het negatieve pootje sluit je op de GND (ground, oftewel 0 volt) van de Arduino aan. Het lange pootje van het LED lampje is het positieve pootje, het korte is het negatieve pootje. Je kunt dit ook zien aan het hoedje, de platte kant zit bij het negatieve pootje. Hiernaast zie je drie weerstanden van 220Ω (Ohm). Een weerstand heeft geen positieve en negatieve kant, dus het maakt niet uit hoe je hem aansluit. Hiernaast zie je M/M jump wires afgebeeld. Dit zijn draadjes met aan weerszijden pinnetjes, die je in Arduino's en breadboards kunt steken. M/M staat voor male/male en dat betekent dat er pinnetjes aan de uiteinden zitten. - 14 -

opgave 4.1 Bouw de schakeling na die je hieronder ziet. Het rode LED lampje zit via het rode draadje op poort 12 aangesloten en via het zwarte draadje op de "gnd" (ground, oftewel aarde). Pas vervolgens de Blink sketch uit het vorige hoofdstuk zo aan, dat je niet het indicatie LED op het Arduino bord laat knipperen, maar het LED lampje op het breadboard. opgave 4.2 Breid de schakeling die je in de vorige opgave hebt gebouwd uit. Voeg een groen LED lampje toe en sluit dat aan op Arduino poort 11. Maak een nieuwe sketch om beide LED lampjes aan te sturen. Neem de Blink sketch als uitgangspunt. Zorg ervoor dat de LED lampjes om en om een seconde aan zijn. Er mag dus maar 1 LED lampje tegelijkertijd branden. - 15 -

5. verder met programmeren Tot nu toe heb je enkel een vast aantal regels code uitgevoerd. Deze regels worden niet beïnvloed door de omgeving, maar uiteindelijk wil je dit natuurlijk wel graag. Je hebt immers veel meer mogelijkheden als jouw sketch kan reageren op een actie van de gebruiker (bijvoorbeeld een druk op de knop) of de verandering van een sensor. Om dit te kunnen heb je controle structuren nodig, zoals de if-else (de selectie). Door een if-else structuur te gebruiken, voer je een stukje code conditioneel uit zoals je ooit geleerd hebt. Dit betekent dat het stukje code enkel wordt uitgevoerd indien er aan een voorwaarde (de conditie) voldaan wordt. Je kunt hierdoor reageren op bijvoorbeeld het indrukken van een knop. Wanneer je code, zonder controle structuren, binnen de loop functie wordt uitgevoerd, dan wordt alle code in de loop functie continue herhaald. Door de if-else constructie te gebruiken kun je hier controle op uitoefenen. Je kunt bijvoorbeeld code uitvoeren elke derde keer dat de loop functie doorlopen wordt. Een voorbeeld hiervan, zie je in de code hieronder. 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 Figuur 2: Voorbeeld van een if-else constructie. - 16 -

uitdaging 2: LED lampjes In deze uitdaging ga je spelen met de aan en uit duur van het LED. Benodigdheden: Arduino breadboard 2 LED lampjes (groen en rood) 2 weerstanden van 220Ω (Ohm) M/M jump wires (draadjes) Pas de code van opgave 4.2 aan met een if-else controle structuur, zodat de delay functie maar één keer in de code voorkomt. Zet voldoende commentaar in je code! Als alles werkt, laat het je leraar dan even zien! In je verslag neem je het volgende op: Een foto van je opstelling. De code die je aangepast hebt (met voldoende commentaar). - 17 -

6. flowcharts Aangezien dit een module over modellering is, wordt het tijd om de flowcharts modelleringsmethode te gaan bekijken. Wie de comedy serie The Big Bang Theory kent, herkent misschien het diagram uit Figuur 3. Figuur 3: "The friendship algorithm" diagram. 2 In Figuur 3 zie je de flowchart van het "friendship algorithm" uit de aflevering "Stu the Cockatoo is New at the Zoo". De clip met, een deel van, de uitleg over deze flowchart vind je op YouTube. Je ziet dat flowcharts handig zijn om diagrammen te maken die processen voorstellen. Feitelijk is de uitvoering van een computerprogramma ook een proces. En daarom worden flowcharts gebruikt om computerprogramma's te modelleren. 2 www.ripleysclothing.co.uk/at-bbt-4-amaster-official-t-shirt-big-bang-theory-sheldonfriendship-algorithm-all-sizes.html - 18 -

opgave 6.1 Bekijk de flowchart uit Figuur 3 (en eventueel de uitleg in het YouTube filmpje) en zorg dat je precies snapt wat er gebeurt. Je ziet dat in Figuur 3 een aantal symbolen worden gebruikt. Deze symbolen hebben een afgesproken betekenis in het diagram. Op die manier leest iedereen een flowchart op dezelfde manier. Er staan ook pijlen en lijnen in het diagram die aangeven welke symbolen een volgordelijke relatie met elkaar hebben. Zij laten de flow van het diagram zien. In Figuur 4 zie een overzicht van veel voorkomende flowchart symbolen en een beknopte uitleg van elk van deze symbolen. Figuur 4: Overzicht van veel gebruikte flowchart symbolen. 3 3 www.conceptdraw.com/how-to-guide/flowchart-design - 19 -

Je zult in deze module niet alle in Figuur 4 afgebeelde symbolen gaan gebruiken. De symbolen die je mogelijk nodig gaat hebben zijn de: Terminator, Proces, Decision, Delay, Data en Subroutine. In Figuur 3 worden al deze symbolen gebruikt behalve de Terminator en de Delay. In Figuur 5 staan nog meer symbolen, daarvan heb je alleen de Merge nodig. Figuur 5: Overzicht van minder gebruikte flowchart symbolen. 4 flowcharts kun je met de hand tekenen op papier, maar het is handiger om het via een tekentool op de computer te doen. Een gratis online tool is GliffyOnline. In het menu aan de linkerkant van dit tool, kun je, onder Basic Shapes, kiezen voor flowchart. Daar vind je veel van de symbolen uit Figuur 4 en Figuur 5 5. 4 www.conceptdraw.com/how-to-guide/flowchart-design 5 De naamgeving is iets anders, zo gebruikt Gliffy start end i.p.v. Terminator, input/output i.p.v. data en predefined proces i.p.v. Subroutine. - 20 -

opgave 6.2 Probeer zelf een flowchart te maken van het Blink algoritme. Laten we eens kijken naar de sketch uit Figuur 2. Een mogelijke flowchart voor deze sketch zie je in Figuur 6. Figuur 6: Een mogelijke flowchart voor de sketch in Figuur 2. - 21 -

Hierbij is het essentieel om op te merken dat we bij informatica standaard beginnen te tellen bij 0! Verder betekent tellen dat we met 1 omhoog gaan. En reset betekent dat we weer bij 0 beginnen te tellen. Bij het aan- en uitzetten gebruiken we de Subroutine, omdat we een (hulp)functie nodig hebben om dit te realiseren. Deze kan in theorie weer in detail gemodelleerd worden een aparte flowchart. Er zitten geen Terminator symbolen in de flowchart, omdat het programma oneindig lang door blijft gaan vanwege de eigenschap van de loop functie op de Arduino. opgave 6.3 Ga voor jezelf na dat de flowchart uit Figuur 6 inderdaad klopt bij de sketch uit Figuur 2. Toch is Figuur 6 geen model voor het probleem dat de sketch oplost. De reden is dat het eigenlijk een vertaling is van de sketch in een symbolische notatie. Een model hoort een vereenvoudigde weergave van de werkelijkheid te zijn. Een model van een computerprogramma moet dan ook niet alle details van het programma bevatten; oftewel, het moet een abstractie zijn van het computerprogramma. Je zou vanuit een model meerdere verschillende computerprogramma's moeten kunnen maken die hetzelfde resultaat hebben en daarbij ook nog verschillende programmeertalen moeten kunnen gebruiken. Een model is dan ook iets dat je moet maken vóór je een computerprogramma maakt. Een model maak je op basis van de beschrijving (vaak de specificatie met producteisen) van het probleem dat je wilt oplossen. Laten we eens naar het probleem kijken dat we op proberen te lossen met de sketch uit Figuur 2. We willen zorgen dat de built-in LED 3 seconden uit is, dan 1 seconde aan en dat zich dat oneindig lang herhaalt. Een goed model voor dit probleem zie je in Figuur 7. Je ziet in Figuur 7 als het goed is ook meteen, dat je een eenvoudigere sketch (zie Figuur 8) kunt maken om het probleem op te lossen dan we hebben in Figuur 2. De sketch in Figuur 2 is zo complex omdat we maar 1 keer de delay functie wilden gebruiken. Je ziet nu dat je daar beter niet naar kunt streven, omdat het de sketch onnodig veel complexer maakt. Door eerst een goed model te maken van je probleem, kun je ervoor zorgen dat je een zo eenvoudig mogelijk computerprogramma maakt. - 22 -

Figuur 7: Een goede flowchart voor de sketch in Figuur 2. int ledpin = 13; // LED connected to digital pin 13 void setup() { pinmode(ledpin, OUTPUT); // sets the digital pin as output } void loop() { } digitalwrite(ledpin, LOW); // sets the LED off delay(3000); digitalwrite(ledpin, HIGH); // sets the LED on delay(1000); Figuur 8: Een eenvoudigere sketch dan in Figuur 2. Maar zoals gezegd kun je nog meer verschillende sketches maken die het probleem oplossen op basis van het model. - 23 -

int ledpin = 13; // LED connected to digital pin 13 void setup() { pinmode(ledpin, OUTPUT); // sets the digital pin as output } int teller = 0; // counter to determine even or odd int delaymult = 0; // multiplier for delay function void loop() { if (teller % 2 == 0) // when teller is even, turn light off { delaymult = 3; // multiplier of 3 for delay when off digitalwrite(ledpin, LOW); // sets the LED off } else // when teller is odd, turn light on { delaymult = 1; // multiplier of 1 for delay when on digitalwrite(ledpin, HIGH); // sets the LED on } } teller = teller + 1; delay(1000 * delaymult); // wait correct amount of time Hier kiezen we er weer voor om maar 1 keer de delay functie te gebruiken. Ook deze oplossing is weer onnodig veel complexer dan de oplossing in Figuur 8. opgave 6.4 Maak zelf een flowchart voor het systeem van opgave 4.2. opgave 6.5 Is de flowchart in Figuur 3 helemaal correct of kun je Dr. Sheldon Cooper, Ph. D verbeteren? Zo ja, hoe dan? - 24 -

uitdaging 3: verkeerslicht In deze uitdaging ga je een werkend driekleurig verkeerslicht bouwen. Benodigdheden: Arduino breadboard 3 LED lampjes (groen, oranje/geel en rood) 3 weerstanden van 220Ω (Ohm) M/M jump wires (draadjes) Maak een verkeerslicht bestaande uit drie LED lampjes (groen, oranje/geel en rood). Maak hiervoor zelf een opstelling. In de afbeelding hierna zie je een voorbeeldopstelling: Maak eerst flowcharts om het gedrag van het verkeerslicht te modelleren. Het gedrag is als volgt: het stoplicht staat 4 seconden op groen, vervolgens 1 seconde op oranje en tot slot 6 seconden op rood. 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 je flowcharts 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! - 25 -

Je resultaat moet aan de volgende eisen voldoen: 1. De opstelling en code werken correct. 2. De modellen voldoen aan de voorgeschreven notaties. 3. De modellen beelden het bedachte systeem uit, niet de implementatie ervan. 4. De modellen bevatten voldoende uitleg. 5. De code bevat voldoende commentaar. In je verslag neem je het volgende op: De initiële flowcharts met uitleg waar nodig. De uiteindelijke flowcharts 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 cruise control systeem van een auto modelleren. Maak flowcharts om het gedrag van het cruise control systeem te modelleren. Leg uit waarom het model er zo uitziet. Je mag natuurlijk op het internet opzoeken hoe een cruise control systeem werkt. Let wel op, dat je niet een flowchart 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 met uitleg waar nodig. - 26 -

7. appendix A: Arduino IDE configureren Je moet altijd controleren of het juiste Arduino bord en de juiste USB poort zijn ingesteld in de Arduino omgeving. Wij werken met Arduino Uno borden. De Arduino bord instellingen vind je bij Tools Board, zie hieronder. - 27 -

De USB poort instellingen vind je bij Tools Port, zie hieronder. Welke USB poort je nodig hebt kan per computer verschillen en zelfs per keer dat je de Arduino omgeving opstart. Meestal staan er twee COM poorten waaruit je kunt kiezen, 1 daarvan is COM1 en dat is de verkeerde, je moet de andere kiezen. - 28 -