Code - Alberdingk-Thijm-College/4-vwo-arduino-2018-2019-hidde-isabel GitHub Wiki

Basisopdracht

Om deze situatie na te bootsen op de Arduino zijn er vier rode en vier groene LED lampjes nodig. Deze worden op de Arduino bevestigd zoals op de pinout te zien is. Op de pinout zijn ook de andere opdrachten bevestigd, maar voor de basisopdracht worden alleen de eerste acht lampjes gebruikt en geen van de knoppen. Deze acht lampjes geef je aan in de code. De code bestaat altijd uit een 'void setup' en 'void loop'. De 'void setup' geeft aan welke variabelen er worden gebruikt op de Arduino. De 'void loop' is het deel van de code dat zich steeds herhaalt. In de 'void setup' staan de pins op de Arduino die gebruikt worden, in dit geval 1, 2, 3, 4, 8, 9, 10 en 11. De lampjes die verbonden zijn aan 1, 2, 3 en 4 zijn rood en de lampjes die verbonden zijn aan 8, 9, 10 en 11 zijn groen. Bij deze pins wordt aangegeven dat er geen signaal vanaf komt, maar dat de code er een signaal aan moet geven, bijvoorbeeld dat een lampje aangaat. Dit wordt aangegeven door de verwijzing 'pinmode', door aan te geven dat dit 'output' is. In de 'void loop' van de basisopdracht staat vaak 'Digitalwrite'. Dit kan in dit geval aangeven of er wel of niet een lampje aangaat. 'High' betekent aan en 'Low' betekent uit. 'Delay' betekent dat de situatie even stil staat. De tijd dat de situatie stil staat wordt aangegeven in millisecondes, dus als er 0,5 seconde gewacht moet worden is de 'Delay' 500.

Eerst wordt aangegeven in onze 'void loop' dat de pins 2, 3 en 4 'High' zijn verklaard. Deze lampjes zijn dan rood en vervolgens wordt met een 'delay' van 500 gewacht. Daarna worden pin 1 'Low' verklaard en pin 8 'high' verklaard. Het lampje dat behoort tot pin 1 is uit en het lampje dat behoort tot pin 8 is aan. Dit heeft een 'delay' van 1000 dus er is tijd voor de auto's bij dit stoplicht om door groen te rijden. Na deze 'delay' wordt pin 8 weer 'Low' verklaard en pin 1 wordt 'high' verklaard: pins 1, 2, 3 en 4 zijn allemaal rood en aan en er zijn geen andere lampjes aan. Hier zit een 'delay' op van 500 dus de situatie staat 0,5 seconde stil. Vervolgens worden pin 9 'high' verklaard en pin 2 'low' verklaard. Lampjes die bij pins 1, 3, 4 en 9 horen zijn nu aan: drie rode en een groene. Hier zit een 'delay' op van 1000. Op dezelfde mannier worden de rest van de pins gecodeerd zodat de nummers 1, 2, 3 en 4 allemaal een keer rood zijn geweest en de pins 8, 9, 10 en 11 allemaal een keer groen zijn geweest. De 'void loop' zorgt dat dit steeds wordt herhaald.

Voetganger-opdracht

Deze situatie op de Arduino ziet er hetzelfde uit als in die van de basisopdracht. Deze code begint alleen niet met de 'void setup', maar met 'int remember = 0'. Dit geeft aan dat het variabel dat is aangemaakt 'remember' heet. Daarvan wordt de waarde meteen op 0 gezet. Na de 'int remember = 0' volgt de 'void setup'. Deze situatie heeft er twee LED lampjes bij, een rode en een groene, en een knop. De nieuwe lampjes staan op pin 5 en pin 12. Het knopje staat op pin 13. Alle rode en groene lampjes zijn in de 'void setup' verklaard met de 'pinmode' als 'output'. Het knopje is verklaard met de 'pinmode' als 'input' dus het knopje geeft een signaal. De code van de 'void loop' komt overeen met de code van de basisopdracht. De voetganger-opdracht heeft alleen tien lampjes in plaats van acht, maar de code werkt hetzelfde wanneer pin 5, als rood lampje, en pin 12, als groen lampje worden toegevoegd. Het eerste deel van de code in de 'void loop' laat de lampjes afwisselen, waarbij ze om beurten groen worden. Er is ook een 'if' en een 'void wait'. De 'if' geeft aan dat wanneer het knopje ingedrukt wordt, dan verandert het variabel 'remember' van 0 naar 1, de pin 12 'High' wordt en pin 5 'Low' wordt met een 'delay' van 1000, het stoplicht van de voetganger wordt groen. Vervolgens wordt 12 weer 'Low' en 5 weer 'high' en gaat de routine van voordat de knop werd ingedrukt weer verder. De 'void wait' zorgt ervoor dat er constant gecontroleerd wordt of het variabel 'remember' 1 of 0 is. Serial.begin(9600) zorgt ervoor dat onze steriele monitor is afgesteld op een 'baud rate' van 9600 Hz.

Buslijn

De buslijnsituatie heeft evenals de basisopdracht vier rode en vier groene LED lampjes op het bord. De buslijn bevat echter ook nog een knop die aangeeft dat de bus eraan komt. De code start met 'int remember=0', 'int RoadA = 13' en 'int RoadB = 7'. 'Int RoadA = 13' geeft aan dat de term RoadA instructies geeft voor de verbindingen op pin 13. Dit geldt ook voor 'int roadB = 7': de instructies van RoadB worden uitgevoerd op pin 7. Naast de 'int RoadA = 13' en 'int RoadB = 7' komt de rest van de code bijna volledig overeen met de code van de voetganger-opdracht. De buslijn heeft in de code bij 'if', in plaats van wat bij de code van de voetganger-opdracht staat, instructies staan om het stoplicht dat behoort tot RoadA groen te laten worden. Pin 8 wordt 'High' en pin 1 wordt 'Low'.

Extra opdracht

Deze opdracht is bij de 'void setup' gelijk aan die van de voetganger-opdracht. Wanneer de ambulance eraan komt, wordt dit aangegeven met een knop die verbonden is met pin 13. Wanneer deze knop wordt ingedrukt gaan de lampjes op pins 1, 2, 3, 4 en 5 aan en de lampjes op nummer 8, 9, 10, 11 en 12 uit. Aan en uit wordt aangegeven met 'High' voor aan en met 'Low' voor uit. De 'if' geeft in dit geval aan wat moet gebeuren wanneer de knop wordt ingedrukt.

Pinout:

Op de pinout is te zien dat er tien lampjes bevestigd zijn. Elk lampje is via een kabeltje bevestigd aan een pin op de Arduino. Bij elk lampje is een weerstand bevestigd. Deze weerstand wordt weer via een kabeltje bevestigd aan de 'ground'. Dit zorgt ervoor dat de stroomkring compleet is.