Les 1: Schakelen en programmeren van een led

Programmeren van een led? Voor veel mensen een onmogelijke opdracht… Toch is het eigenlijk zeer eenvoudig! Met Arduino kunnen tal van schakelingen gemaakt worden, met allerlei componenten. Het begint echter wel allemaal met het schakelen en programmeren van een ledje. Led staat voor light-emitting diode. Ze worden ook vaak gebruikt als vervanging van oude gloeilampen! Bij arduino gebruiken we kleine ledjes om onze schakelingen te maken. 

Waarom een ledje? Het is de perfecte basiscode om zaken mee uit te proberen, je krijgt namelijk een visuele bevestiging van de werking van je code. Denk maar aan een eenvoudige schakeling met een knop of een ingewikkeld parkingsysteem. Een testschakeling met een ledje maakt de werking van je code visueel.

In onze sectie programmeeromgeving kan je nog eens kijkje nemen naar de basisstructuur van Arduino. Daar vindt je een duidelijke beschrijving van de functie void setup en de void loop. De datatypes worden er ook uitgelegd. 

Programmeren Led:

Nu gaan we echt aan de slag met het programmeren van onze led! Velen denken dat moeilijke woorden deel uitmaken van het programmeren. Niets is verder van de waarheid. Tijdens het programmeren kunnen we namelijk zelf onze woorden bepalen.

Daarom onderwijzen we vóór de ‘setup’ steeds de Arduino, zo leert hij onze woorden. De Arduino herkent namelijk onze woorden niet vanzelf! De Arduino kent enkel getallen, bepaalde vaste commando’s en datatypes. Zo weet de Arduino niet wat wij schakelen aan een bepaalde poort. Hij zal ook geen onderscheidt maken tussen bijvoorbeeld  de woorden ‘led’ of ‘motor’, omdat hij deze woorden niet kent! Daarom moeten we elk woord een datatype en optioneel een waarde toewijzen. 

Zo weet Arduino welke waarde hij moet gebruiken als ‘led’ vermeld word in de code. Het datatype zegt de Arduino wat de minimale en maximale waarden zijn van het interval waartussen deze onbekende zal liggen. Wanneer we er direct een getal aan toekennen, dan wordt dit de startwaarde van de variabele.

int led = 12;

Hier is dus ‘led’ een ‘integer‘ datatype met als startwaarde 12. Dit wil zeggen: Als we de waarde van onze led nooit veranderen, zal deze dus constant een waarde van 12 hebben. Bij het programmeren van een led zal dit het geval zijn! 12 is ook een poortnummer, dus we kunnen het woord ‘led’ ook gebruiken als poort… 

Dat is dan ook de bedoeling. Wanneer we willen dat de led een actie onderneemt, kunnen we in de code ook het woord ‘led’ gebruiken. Anders zouden we steeds de waarde 12 moeten gebruiken. Dit zou het extreem moeilijk maken om alles uit elkaar te houden. 

Opbouw:

pinMode (poort, functie);

pinMode (led, OUTPUT);

Met het commando pinMode(); declareer we onze ‘led’ als een uitvoerende poort, als een OUTPUT. Dit doen we in de ‘setup’. Deze code zal slechts eenmaal doorlopen worden en wordt gebruikt om zaken te declareren. Nu weet de arduino dat, wat er ook geschakeld is aan deze poort, het iets is waar hij signalen/spanning naar toe moet sturen. Hij zal dus geen rekening houden met inkomende signalen van deze poort. In ons geval zal dit geen enkel probleem geven. Toch nemen we direct de juiste gewoonte aan om elke gebruikte poort te declareren naar zijn functie.

digitalWrite (poort, toestand);

digitalWrite (led, HIGH);

digitalWrite (led, LOW);

Met het commando digitalWrite(); schrijven we de toestand dat we willen realiseren. Bij HIGH zal de led gaan branden, bij LOW gaat de led uit. Dit zijn de enigste toestandsmogelijkheden bij dit commando. Alles of niets, aan of uit, 1 of 0 … digitaal dus! Bij het programmeren van een led is dit commando essentieel. Het geeft ons namelijk de mogelijkheid om onze led aan te sturen.

delay (tijd);

delay (1000);

Het delay(); commando zorgt voor een pauze uitgedrukt in milliseconden. Dit commando pauzeert de leessnelheid van arduino. Zonder dit commando zou arduino de loop zo snel uitvoeren dat onze ogen het activeren van oner led niet zouden kunnen waarnemen!

Het resultaat van deze code is een ledje dat blijft knipperen. Tussen elke puls zou er één seconde pauze moeten zijn.

Code:

// Eerst zetten we onze woorden om in taal die Arduino begrijpt.

int led = 12;
void setup() {
// Aangezien dat deze “loop” slechts eenmaal doorlopen wordt, declareer je hier jouw poorten.
pinMode (led, OUTPUT);
}
void loop() {
// Vervolgens zetten we hier de opdrachten die uitgevoerd moeten worden. Deze “loop” wordt dus steeds herhaald.
digitalWrite (led, HIGH);
delay (1000);
digitalWrite (led, LOW);
delay (1000);
}

Schakeling:

Voor deze code hebben we uiteraard ook een schakeling nodig. Deze bestaat uit een arduino, die verbonden is met je computer, en een breadbord. Meer informatie over deze onderdelen vindt je in onze arduino voor dummies sectie. Het ledje is een polaire component. Dit wil zeggen dat deze component slechts op één manier in een schakeling geschakeld mag worden. Deze heeft namelijk een positieve kan, de anode, en een negatieve kant, de cathode. De les is in serie geschakeld met een weerstand van 220 ohm om de stroomsterkte te beperken.

Programmeren ledje

Het apart aankopen van verschillende componenten in zeer kostelijk. Daarom raden we jullie aan om een totaalpakket aan te schaffen dat voor alle lessen en veel meer zal voldoen. De componenten die dit pakket bezit zijn erop gedoeld om beginners te ondersteunen, maar ook om later volwaardige projecten mee te kunnen maken. We kunnen dit pakket gebruiken bij het programmeren van een led, maar ook bijvoorbeeld voor het fabriceren van een boot op afstandbediening. 

Al bij al is het vinden van een officiële en kwalitatieve Arduino onderdelen niet eenvoudig. Via onderstaande link kan je op bol.com met korting jouw pakket bestellen!

-> Bestel hier je pakket!

8.3%

Probeer ook zeker eens sommige waarden te veranderen of commando’s weg te laten. Zo wordt het snel duidelijke welke invloed een commando heeft op de werking van de schakeling.

Als je het ondertussen het werken met het ledje voldoende beheerst, ga dan over naar les 2!

Geplaatst in Programmeren Arduino voor dummies.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *