<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>http://wiki.spad-it.nl/index.php?action=history&amp;feed=atom&amp;title=Arduino_-_Verkeerslicht</id>
		<title>Arduino - Verkeerslicht - Revision history</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.spad-it.nl/index.php?action=history&amp;feed=atom&amp;title=Arduino_-_Verkeerslicht"/>
		<link rel="alternate" type="text/html" href="http://wiki.spad-it.nl/index.php?title=Arduino_-_Verkeerslicht&amp;action=history"/>
		<updated>2026-07-03T06:56:11Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.27.3</generator>

	<entry>
		<id>http://wiki.spad-it.nl/index.php?title=Arduino_-_Verkeerslicht&amp;diff=14&amp;oldid=prev</id>
		<title>WikiAdmin: Created page with &quot;In dit project sluiten we drie LEDs aan op de Arduino en sturen we die aan als een verkeerslicht.   Lessen: *Gebruik van het '''breadboard''' en aansluitdraden *Eigenschappen...&quot;</title>
		<link rel="alternate" type="text/html" href="http://wiki.spad-it.nl/index.php?title=Arduino_-_Verkeerslicht&amp;diff=14&amp;oldid=prev"/>
				<updated>2017-09-11T19:12:41Z</updated>
		
		<summary type="html">&lt;p&gt;Created page with &amp;quot;In dit project sluiten we drie LEDs aan op de Arduino en sturen we die aan als een verkeerslicht.   Lessen: *Gebruik van het &amp;#039;&amp;#039;&amp;#039;breadboard&amp;#039;&amp;#039;&amp;#039; en aansluitdraden *Eigenschappen...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;In dit project sluiten we drie LEDs aan op de Arduino en sturen we die aan als een verkeerslicht. &lt;br /&gt;
&lt;br /&gt;
Lessen:&lt;br /&gt;
*Gebruik van het '''breadboard''' en aansluitdraden&lt;br /&gt;
*Eigenschappen van '''LEDs''' en weerstanden&lt;br /&gt;
*Begin met programmeren&lt;br /&gt;
*De '''setup()''' en '''loop()''' functies&lt;br /&gt;
*De '''for loop'''&lt;br /&gt;
*De '''delay()''' functie&lt;br /&gt;
&lt;br /&gt;
===Het breadboard===&lt;br /&gt;
Een '''breadboard''' is een hulpmiddel waarmee, zonder solderen, heel gemakkelijk elektronische schakelingen kunnen worden gemaakt en weer afgebroken. Met een breadboard kun je dus gemakkelijker experimenteren. In Nederland wordt een &amp;quot;breadboard&amp;quot; soms ook wel een ''broodplankje'' genoemd, maar ik denk dat het beter is om het woord ''breadboard'' te blijven gebruiken. Boord snijden we op een ''broodplank'' en elektronische schakelingen testen we op een ''breadboard''. Op die manier komen er geen kruimels in de gaatjes en werkt de elektronica zoals bedoeld.&lt;br /&gt;
&lt;br /&gt;
Een breadboard is een plaatje vol met gaatjes. De meeste elektronische componenten kun je zo in die gaatjes steken. Ook kun je er speciale verbindingsdraadjes insteken om dingen met elkaar te verbinden. De in- en uitgangen van Arduino's beschikken ook over connectoren waar dergelijke verbindingsdraadjes gemakkelijk in geprikt kunnen worden. Het handige van breadboards is dat een bepaalde series gaatjes van binnen al met elkaar verbonden zijn. Als je het allemaal precies wilt weten kun je bijvoorbeeld [https://learn.sparkfun.com/tutorials/how-to-use-a-breadboard hier] kijken, maar ik denk dat een korte uitleg voldoende is. Boven- en onderaan het breadboard zitten twee rijen die over de hele lengte vanbinnen aan elkaar zitten. Dit wordt ''de rails'' genoemd. Vaak wordt zowel boven als onder een van de twee rijen met rood aangegeven en de andere met zwart of blauw. Het idee is dat een rode rij &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;plus spanning&amp;lt;/span&amp;gt; heeft (meestal 5 Volt) en de blauwe &amp;lt;span style=&amp;quot;color:#0099ff&amp;quot;&amp;gt;nul spanning&amp;lt;/span&amp;gt;. Door ergens in een van de twee rode randen een draadje te steken met 5 Volt spanning, staat overal op die regel 5 Volt. De blauwe regel kunnen we dan met de nul verbinden, waarna we overal gemakkelijk stroom vandaan kunnen halen. Het is een goed gebruik om draden e gebruiken met een kleur die past bij hun functie. Dus rood voor draden die 5 Volt &amp;quot;voeding&amp;quot; dragen en zwart voor draden die aan de nul zitten. Als je genoeg draden en kleuren hebt zou je bij het verkeerslicht hier een groene draad kunnen gebruiken voor het groene lampje, een gele draad voor het gele lampje en dan een oranje draad voor het rode lampje - deze kan beter niet rood zijn want dat wijst op een plus. Het is een goede gewoonte, maar doe gerust wat anders als dat zo uitkomt.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Breadboard.png]] | [[File:Breadboard_rails.png]]&lt;br /&gt;
|-&lt;br /&gt;
|Verbindingen in het breadboard&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
De andere gaatjes zijn juist vertikaal verbonden, waarbij de verbinding in het midden met een grote opening is verbroken. Voorbeelden van deze verbindingen zijn aangegeven met de oranje en blauwe pijlen in bovenstaand plaatje (dat met een groene pijl ook de rails aangeeft).&lt;br /&gt;
&lt;br /&gt;
===LEDs===&lt;br /&gt;
De term LED betekent '''L'''ight '''E'''mitting '''D'''iode. Het is dus een diode die licht geeft. Een diode is een elektronisch onderdeeltje waar de stroom maar in één richting doorheen kan: alleen van de plus-kant naar de nul-kant; andersom kan er geen stroom doorheen. Dit betekent dat een LED alleen licht geeft als het juiste pootje aan de plus zit en het andere aan de nul. Normale LED's hebben een spanning nodig van '''1,5 Volt''' waarna er een heel klein stroompje gaat lopen van '''20 mA''' (dat is 20 milli Ampère: 0,020 Ampère). Nu zijn LEDjes tamelijk kwetsbare diodes. Als de spanning of de stroom te groot wordt gaan ze snel kapot. Ook als er een te grote spanning verkeerd om wordt aangesloten gaan ze kapot. Arduino werkt (meestal) met 5 Volt en dat is teveel voor een LEDje. LEDjes moeten dus beschermd worden tegen deze te hoge spanning en dat doen we met een weerstand. Weerstanden remmen de stroom die kan lopen. Grote weerstanden remmen heel sterk, en kleine weerstanden remmen maar een beetje. Vrijwel alle weerstanden zien er klein uit; het gaat om de weersandswaarde en niet om het aantal centimeters. Het is van belang om de juiste weerstand te gebruiken. Bij gebruik van 5 Volt en een normaal LEDje is een weerstand van 180 Ω (Ω spreek je uit als &amp;quot;oom&amp;quot;) ideaal. Iets meer, bijvoorbeeld 220 Ω mag ook, maar het moet niet minder dan 150 Ω worden. Bij correct gebruik gaan LEDjes heel erg lang mee. &lt;br /&gt;
&lt;br /&gt;
'''LET OP:''' Een ander ding dat in dit opzicht best belangrijk is, is dat Arduino's maar weinig stroom kunnen leveren. Per uitgang kunnen ze zo'n 20 mA wel aan, maar veel meer moet het niet worden. Je kunt best dus een LED aansluiten op één, of zelfs elke uitgang van de Arduino, maar veel meer moet je per uitgang niet aansluiten want anders gaat de Arduino kapot. Dat gebeurt dus ook als zo'n LED niet beschermd is met een weerstand!&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[File:LEDs.png]][[File:LED_aansluiten.png]]&lt;br /&gt;
|-&lt;br /&gt;
|LEDjes in allerlei kleuren; '''lange''' pootje aan de &amp;lt;span style=&amp;quot;color:#ff0000&amp;quot;&amp;gt;plus&amp;lt;/span&amp;gt;, '''korte''' aan de &amp;lt;span style=&amp;quot;color:#0099ff&amp;quot;&amp;gt;min&amp;lt;/span&amp;gt;!&lt;br /&gt;
|}&lt;br /&gt;
Tegenwoordig heb je LEDjes in allerlei kleuren. In bovenstaande figuur kun je goed zien dat LEDjes twee pootjes hebben. Het lange pootje moet aan de &amp;quot;plus&amp;quot; en het korte pootje aan de &amp;quot;min&amp;quot;. Ideaal is het als de spanning op het lange pootje 1,5 Volt hoger is dan op het korte pootje. &lt;br /&gt;
&lt;br /&gt;
Om een LEDje correct aan te sluiten heb je dus een weerstand nodig. Het maakt daarbij niet uit of de stroom eerst door de LED gaat en daarna door de weerstand, of eerst door de weerstand en daarna door de LED. Je kunt dus, vanaf de plus gerekend, de stroom eerst door de weerstand laten gaan, dan naar het lange pootje van de LED en daarna naar de nul, of je verbind juist eerst het lange pootje van de LED direct met de plus, het korte pootje met de weerstand om tenslotte de andere kant van de weerstand met de nul te verbinden. Beide is goed.&lt;br /&gt;
&lt;br /&gt;
===De verkeerslichten aansluiten===&lt;br /&gt;
Benodigdheden:&lt;br /&gt;
&lt;br /&gt;
Altijd (gaan we niet steeds noemen):&lt;br /&gt;
*1 Arduino bord&lt;br /&gt;
*1 geschikte USB kabel&lt;br /&gt;
*1 breadboard&lt;br /&gt;
*diverse aansluitdraden&lt;br /&gt;
Extra:&lt;br /&gt;
*1 rode LED&lt;br /&gt;
*1 gele of oranje LED&lt;br /&gt;
*1 groene LED&lt;br /&gt;
*3 weerstanden van 180Ω-220Ω&lt;br /&gt;
&lt;br /&gt;
Prik de drie LEDjes op het breadboard en wel zo dat elk pootje in een aparte kolom zit. Bijvoorbeeld: rood in kolommen 22 en 23, geel in kolommen 26 en 27 en groen in kolommen 30 en 31. Zorg daarbij dat de lange pootjes rechts zitten (oneven kolommen). Leg nu met een oranje draadje verbinding tussen kolom 23 en pin 10 van de Arduino, leg een geel draadje tussen kolom 27 en pin 7 van de Arduino, en leg met een groen draadje verbinding tussen kolom 31 en pin 4 van de Arduino. Leg nu verbinding tussen de korte pootjes en de nul-rij met behulp van de drie weerstanden. Verbind vervolgens de nul-rij met een zwart (of blauw) draadje met een van de GND pinnetjes op de Arduino.&lt;br /&gt;
&lt;br /&gt;
Het geheel ziet er dan schematisch alsvolgt uit:&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[File:Project2.png]]&lt;br /&gt;
|-&lt;br /&gt;
|Aansluitingen &amp;quot;Verkeerslicht&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Het programma uploaden===&lt;br /&gt;
In onderstaand vernster staat weer het programma. Selecteer de hele tekst met de muis en kopieer het naar het clipboard met Crtl+c. Vergeet niet om in de Arduino software eerst alles te selecteren met Crtl+a om '''over de geselecteerde tekst''' heen te plakken met Crtl+v. Als je wilt mag je meteen het resultaat uploaden om te zien wat er gebeurt.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int redled = 10;    // de rode LED zit aan pin 10&lt;br /&gt;
int yellowled = 7;  // de gele LED zit aan pin 7&lt;br /&gt;
int greenled = 4;   // de groene LED zit aan pin 4&lt;br /&gt;
&lt;br /&gt;
void setup()&lt;br /&gt;
{&lt;br /&gt;
  // zorg ervoor dat de LED-pins gezien worden als OUTPUT&lt;br /&gt;
  // OUTPUT pins worden door de processor aan- en uitgezet&lt;br /&gt;
  pinMode(redled, OUTPUT);&lt;br /&gt;
  pinMode(yellowled, OUTPUT);&lt;br /&gt;
  pinMode(greenled, OUTPUT);&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop()&lt;br /&gt;
{&lt;br /&gt;
  // groen&lt;br /&gt;
  digitalWrite(greenled, HIGH);  // zet de groene LED aan&lt;br /&gt;
  delay(10000);                  // wacht 10 000 milli seconde = 10 seconden!&lt;br /&gt;
  digitalWrite(greenled, LOW);   // zet de groene LED uit&lt;br /&gt;
&lt;br /&gt;
  // oranje&lt;br /&gt;
  digitalWrite(yellowled, HIGH); // zet de oranje LED aan&lt;br /&gt;
  delay(1000);                   // wacht 1 seconde!&lt;br /&gt;
  digitalWrite(yellowled, LOW);  // zet de oranje LED uit&lt;br /&gt;
&lt;br /&gt;
  // rood&lt;br /&gt;
  digitalWrite(redled, HIGH);    // zet de oranje LED aan&lt;br /&gt;
  delay(10000);                  // wacht 10 seconden&lt;br /&gt;
  digitalWrite(redled, LOW);     // zet de oranje LED uit&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Uitleg van het programma===&lt;br /&gt;
Elk Arduino programma heeft minimaal twee functies: '''select()''' en '''loop()'''. In de code staan die als:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
void setup() {&lt;br /&gt;
  // put your setup code here, to run once:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
void loop() {&lt;br /&gt;
  // put your main code here, to run repeatedly:&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Een '''functie''' is een blok opdrachten die achter elkaar worden uitgevoerd en die aangeroepen kan worden met de naam van de functie. Zo'n naam kan van alles zijn, maar mag geen bekende naam zijn, mag geen spaties bevatten en moet met een gewone letter beginnen. Een functie voert niet allleen opdrachten uit, maar kan ook een resultaat berekenen. Dat resultaat is dan van een bepaald type: een getal, een tekst, of wat anders. De term '''void''' betekent echter dat er geen resultaat zal zijn. Na de naam van de functie staan er twee ronde haakjes. Dat is het deel waar parameters meegegeven kunnen worden. We komen daar in een later hoofdstuk op terug. setup() en loop() hebben geen parameters, maar de haakjes zijn toch noodzakelijk. Daarna volgt er een '''accolade opnenen''', dan de opdrachten die de functie moet uitvoeren, en tenslotte een '''accolade sluiten'''. Die accolades worden vrij veel grbruikt: meerdere opdrachten die tussen accolades staan worden steeds als een bij elkaar horend cluster opdrachten gezien. Bovenstaande functies hebben overigens nog geen opdrachten, de functies zijn leeg, maar de structuur is daardoor des te helderder. Een onzichtbaar programma achter de schermen zorgt ervoor dat '''setup()''' als eerste wordt doorlopen. Daarna zorgt hetzelfde programma ervoor dat '''loop()''' continue wordt aangeroepen. Als de loop() functie dus klaar is, wordt hij meteen opnieuw aangeroepen en begint loop() dus weer aan het begin.&lt;br /&gt;
&lt;br /&gt;
In het programma van verkeerslichten zien we de volgende dingen:&lt;br /&gt;
*Er worden drie variabelen gedefinieerd, de pin van elk van de drie LEDs&lt;br /&gt;
*In de functie setup() worden de pootjes van de LED-lampjes ingesteld als OUTPUT poorten&lt;br /&gt;
*De loop() functie zorgt voor het verkeerslicht patroon dat continu doorloopt&lt;br /&gt;
De setup functie roept drie maal de standaard (oranje) functie '''pinMode()''' aan. Bij deze functie moet je opgeven van welke pin dje de pinmode wilt instellen. In de eerste aanroep is dat '''redled''', waarvan de waarde 10 is. Nadat setup() zijn werk heeft gedaan kan de Arduino de LEDjes aan en uitzetten. Dat gebeurt in de loop() functie. Je ziet hier drie stukken code:&lt;br /&gt;
* Een stuk waarin de groene LED voor 10 seconden wordt aangezet en daarna weer uit&lt;br /&gt;
* Een stuk waarin de oranje LED voor 1 seconden wordt aangezet en daarna weer uit&lt;br /&gt;
* Een stuk waarin de rode LED voor 10 seconden wordt aangezet en daarna weer uit&lt;br /&gt;
Hierna is loop() klaar, maar zoals we nu weten wordt loop() meteen weer aangeroepen. Daardoor gaat, nadat de rode LED is uitgezet de groene meteen weer aan.&lt;br /&gt;
&lt;br /&gt;
De functie delay() laat de Arduino een aantal milliseconden wachten: delay(10000) wacht 10 seconden. Dankzij deze wachttijd blijft het betreffende LEDje gedurende die tijd aan.&lt;br /&gt;
&lt;br /&gt;
Zie je dat de loop() precies 21 seconden duurt? Hoewel niet helemaal precies: de delays duren bij elkaar 21 seconden, maar de andere opdrachten vragen ook een beetje tijd. Een heeeeel klein beetje: zo'n Arduino kan miljoenen opdrachtjes verwerken per seconde!&lt;br /&gt;
&lt;br /&gt;
Het commentaar in het programma is bedoeld als uitleg over de werking ervan. Uitleg zal steeds vooral in het commentaar zitten. Probeer dus steeds de code te lezen en te begrijpen. De tekst van de cursus zal hoofdzakelijk nieuwe elementen bespreken.&lt;br /&gt;
&lt;br /&gt;
===Beetje spelen===&lt;br /&gt;
Je hebt nu het een en ander gezien. Om het meer in de vingers te krijgen is hetbelangrijk dat je er zelf mee aan de slag gaat. In deze sectie '''Beetje spelen''' staan wat extra ideetjes en opdrachtjes die je kunt proberen. Probeer zelf die opdrachtjes uit door de programmaatjes aan te passen.&lt;br /&gt;
&lt;br /&gt;
* Stel dat uit onderzoek blijkt dat het verkeerslicht te kort op oranje staat. Kun jij die tijd verlengen naar 1,5 seconde? &lt;br /&gt;
* Stel nu dat dit het programma is voor de lichten van een drukke, doorgaande route en dat het hier langer groen moet worden. Kun jij dat aanpassen?&lt;br /&gt;
* Gefeliciteerd: Duitsland is ook geintereseerd in jouw verkeerslichtregeling! Maar daar geven ze een extra signaal dat het snel groen gaat worden. Automobilisten kunnen dan alvast hun auto in de versnelling zetten om zo net iets eerder op te trekken dan bij ons. Een seconde voor het groen wordt gaat dan naast het groen ook het oranje licht aan. Kun jij het programma zo aanpassen dat dit ook gebeurt?&lt;br /&gt;
* Aannemende dat dit het verkeerslicht is van een bepaalde kruising, dan staat het licht van de kruisende weg natuurlijk op rood als het hier groen of oranje is en vice versa. Denk je dat jij dat kunt maken met een paar extra LEDjes, weerstandjes en wat extra programma regels?&lt;br /&gt;
&lt;br /&gt;
===Navigatie===&lt;br /&gt;
*[[Arduino - LED blinking|Vorige project]]&lt;br /&gt;
*[[Arduino cursus|Cursus overzicht]]&lt;br /&gt;
*[[Arduino - Communiceren met de PC|Volgende project]]&lt;/div&gt;</summary>
		<author><name>WikiAdmin</name></author>	</entry>

	</feed>