Codewerkplaats Les 1 (LED-koplampen)
In deze eerste les maken we kennis met de Arduino en hoe je deze kan programmeren. De eerste onderdelen die we gaan aansluiten zijn de twee LED-koplampen.
Wat is een Arduino? [↑]
Het hart van het karretje is een Arduino.
De Arduino is een microcontroller die je met een laptop kan programmeren. Op de pennen van de Arduino kan je van alles aansluiten.
Er zijn allerlei verschillende soorten Arduino’s:
Arduino Nano [↑]
In de Codewerkplaats gaan we aan de slag met de Arduino Nano:
Op de Arduino zitten vier LED’s
- De LED’s RX en TX knipperen als je een programma naar de Arduino laadt.
- De LED PWR geeft aan of de Arduino is aangesloten op een voedingsbron. In dit voorbeeld krijgt de Arduino de spanning via de USB-kabel die op de laptop is aangesloten.
- De LED L kunnen we zelf aan- en uitzetten. Deze LED is aangesloten op PIN13 van de Arduino.
Hoe programmeer je een Arduino? [↑]
Misschien heb je al een geprogrammeerd met Scratch of MakeCode (micro:bit):
Scratch | MakeCode |
In Scratch en MakeCode bouw je een programma door programmablokjes te slepen.
We gaan het programma op twee verschillende manier bouwen:
- Door programmablokjes te slepen. Dit doen we online met Leaphy Easybloqs.
- Door het programma te schrijven. Hiervoor moeten we het programma Arduino IDE op de laptop installeren.
Leaphy – Easybloqs | Arduino IDE |
Programmeren door blokjes te slepen | Programmeren door te typen |
Nederlands | Engels |
Easyblocqs werkt (ook) online | Arduino IDE moet je downloaden en installeren op je laptop |
Beperkte mogelijkheden | Enorm veel mogelijkheden |
https://leaphyeasybloqs.com/ | https://www.arduino.cc/en/software |
Gratis | Gratis |
Je leert in de Codewerkplaats te programmeren met blokjes (Leaphy Easybloqs) maar ook met de Arduino IDE (Integrated Development Environment). Deze moet je op je laptop installeren en schrijft de code via het toetsenbord.
Programmeren met Leaphy Easybloqs [↑]
De website van Leaphy Easybloqs is https://leaphyeasybloqs.com/
Je ziet nu dit scherm (het programma moeten we nog bouwen):
Aan de linkerkant staan de groepen met de verschillende opdrachten:
Sensoren
Deze blokken hebben te maken met waarnemen (INPUT). Bijvoorbeeld schakelaars en lijnsensoren.
|
|
Actuatoren
Deze blokken zorgen dat je iets met de Arduino kan besturen of een actie kan starten (OUTPUT). Actuatoren zijn bijvoorbeeld: LED’s, motoren en een zoemer (buzzer). |
|
Denkstappen
Hierin zitten de blokken waarmee je het programma kan besturen |
|
Functies
Hier vind je alle blokken die met getallen en tekst te maken hebben. Hier staan ook de blokken die je gebruikt om getallen of teksten met elkaar vergelijken. |
|
Variabelen
Variabelen zijn ‘doosjes’ met een naam waarin je dingen zoals getallen of woorden opslaat en terugvindt. |
|
Lijsten
Soms is het handig om in je programma gegevens en een lijst kunt zetten of gegevens uit een lijst kan halen. In de Codewerkplaats gebruiken we geen lijsten. |
|
Eigen blokken
Als een stukje programma vaker wordt gebruikt dan is het handig een ‘Eigen blok’ te maken. Eigen blokken zijn ook handig om een uitgebreid programma overzichtelijker te maken. |
Bekijk maar eens welke blokken er in de groepen zitten en bouw dan dit programma:
Programma op Arduino zetten
- Sluit de Arduino met de USB-kabel aan op de laptop
- Klik op de knop ‘Verbinden’
- Je ziet nu dit venster. Hier staat dat er een Arduino is aangesloten op de seriële communicatiepoort 10. Dit kan ook een heel ander poortnummer zijn!
- Selecteer de poort en klik op de knop ‘Verbinding maken’
Klik nu op de knop ‘Upload naar robot’:
Je ziet nu hoe ver het programma al naar de Arduino is geüpload:
Als het programma helemaal op de Arduino staat zie je dit:
Gelukt? Kan je de LED ook sneller of langzamer laten knipperen?
Geschreven code
In Leaphy Easybloqs zit ook een knop waarmee je de geschreven versie van de blokjescode kan bekijken:
Links zie je de blokjescode en rechts staat de geschreven code.
Leaphy Easybloqs heeft een eigen manier bedacht om de code op te schrijven. Bij de Codewerkplaats werken we met de ‘echte’ geschreven code die wordt gebruikt door miljoenen mensen die de Arduino gebruiken voor school, kunst of hobby.
Programmeren met de Arduino IDE [↑]
De Arduino IDE (spreek uit “AaiDieEee”) is een gratis programma dat je op je laptop moet installeren. Op de laptops van Huis73 die we in de Codewerkplaats gebruiken is de Arduino IDE al geïnstalleerd.
Als je de Arduino IDE op je eigen laptop wilt gebruiken dan kan je het downloaden op de website van Arduino:
Op de website staat ook een (Engelse) handleiding voor het installeren:
- https://docs.arduino.cc/software/ide-v2/tutorials/getting-started/ide-v2-downloading-and-installing/
In de Arduino IDE ziet de code voor het laten knipperen van de LED er zo uit:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// Codewerkplaats - Knipperende led op de Arduino int pinLed = 13; // de functie setup wordt één keer uitgevoerd bij het // (opnieuw) starten van de Arduino void setup() { // Stel pin 13 in als OUTPUT pinMode(pinLed, OUTPUT); } // de functie loop wordt de hele tijd uitgevoerd void loop() { digitalWrite(pinLed, HIGH); // Zet de LED aan delay(500); // wacht 500 milliseconde digitalWrite(pinLed, LOW); // Zet de LED UIT delay(1000); // wacht 1 seconde } |
Voor we dit kunnen gebruiken moeten we eerst een paar dingen in de IDE instellen.
Arduino IDE instellen [↑]
- We beginnen met het starten van de IDE. Klik op deze snelkoppeling:
- Je komt nu in dit scherm
- Sluit de Arduino Nano nu met de USB-kabel aan op jouw laptop.
Foto door Karolina Grabowska: https://www.pexels.com/nl-nl/foto/kabel-verbinding-vervagen-connector-4219867/ - We gaan nu aangeven wat voor soort Arduino we gebruiken. Klik op ‘Select Board’:
Het nummer van de poort kan telkens anders zijn. In dit voorbeeld ziet de IDE dat er een Arduino is aangesloten op COM7. - Klik op ‘Unknown’ en selecteer ‘Arduino Nano’:
klik op de knop ‘OK’. - Stel juiste processor in:
Er zijn verschillende soorten Arduino Nano’s. Wij gebruiken een versie met de processor ‘ATmega328P’ OF ‘ATmega328P (Old Bootloader)’.Dit stellen we in via het menu Tools > Processor:
Programma schrijven (liever kopiëren) [↑]
Voor deze eerste les hoeven we het programma niet zelf te schrijven, maar kan je het hieronder kopiëren en plakken in de IDE.
Kopieer de code hieronder:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// Codewerkplaats - Knipperende led op de Arduino int pinLed = 13; // de functie setup wordt één keer uitgevoerd bij het // (opnieuw) starten van de Arduino void setup() { // Stel pin 13 in als OUTPUT pinMode(pinLed, OUTPUT); } // de functie loop wordt de hele tijd uitgevoerd void loop() { digitalWrite(pinLed, HIGH); // Zet de LED aan delay(500); // wacht 500 milliseconde digitalWrite(pinLed, LOW); // Zet de LED UIT delay(1000); // wacht 1 seconde } |
En plak die in de IDE:
Bovenin het scherm zie je twee knoppen:
- Met de eerste knop (het vinkje) controleer je er schrijffouten of onlogische dingen in het programma staan.
- Met de tweede knop (het pijltje) doe je dezelfde controle, maar upload je het programma (als er geen fouten in staan) ook naar de Arduino.
Klik op het pijltje om het programma te controleren en te uploaden:
De LED op de Arduino knippert, maar hoe is het programma eigenlijk opgebouwd?
Opbouw van het programma (sketch) [↑]
Stel je voor dat je een robot aan het programmeren bent met Arduino. Je programma (of ‘sketch’) is als een recept dat vertelt wat de robot moet doen. Dit recept bestaat uit drie delen:
Declaraties – Het klaarzetten
- Dit is zoals het klaarzetten van je ingrediënten voordat je gaat koken.
- Je vertelt de Arduino welke ‘ingrediënten’ (zoals speciale sensoren of lichtjes) je gaat gebruiken in je project.
- Soms vertel je de Arduino ook over speciale ‘kookboeken’ (bibliotheken) die uitleggen hoe je met deze ingrediënten kunt werken.
- Dit is ook het deel van het programma waar je de Arduino vertelt welke variabelen je gaat gebruiken en hoe die heten (int PinLed = 13).
- Je ziet ook nog ‘int’. Hiermee geef je aan wat voor soort getal in de variabele wordt opgeslagen. We komen hier later nog een keer op terug.
functie Setup() – De voorbereiding
- Dit is als het klaarzetten van je keuken. Je doet dit één keer voordat je begint met koken.
- Je vertelt de Arduino hoe deze zich moet voorbereiden, zoals welke pinnetjes deze moet gebruiken en of die pinnetjes iets moeten lezen (INPUT) of schrijven (OUTPUT).
functie Loop() – Het koken
- Nu begint het echte koken! Dit gedeelte blijft steeds opnieuw gebeuren, net zoals wanneer je blijft roeren in een pot.
- Je vertelt de Arduino wat hij steeds opnieuw moet doen, zoals het meten van de temperatuur (lezen van een sensor) of het aanzetten van een lampje.
- Deze stappen blijven zich herhalen, net zolang totdat je de Arduino uitzet.
Speciale tekens [↑]
Je ziet in de code ook allerlei speciale tekens: (), {}, ; , //
Puntkomma | ; | Dit is als een stopbord in je code. Het vertelt de Arduino dat je klaar bent met je zin (een instructie) en dat het tijd is voor de volgende. |
Accolades | {} | Deze zijn als een knuffel, ze houden alle stappen die samen horen stevig bij elkaar. Bijvoorbeeld, alles wat je Arduino moet doen in een spelletje zit tussen deze knuffels. |
Haakjes | () | Deze gebruik je om te vertellen in welke volgorde je dingen wilt doen. Net als wanneer je eerst je sokken en dan je schoenen aantrekt. |
Commentaartekens | // | Deze zijn als geheime berichtjes die alleen voor mensen zijn, niet voor de Arduino. Met // vertel je iets kort, en met /* ... */ kun je een langer verhaal kwijt. |
Door deze tekens goed te gebruiken, kan je leuke dingen programmeren met de Arduino, zoals lichtjes laten knipperen, geluidjes maken, of zelfs kleine robotjes besturen! Het is als een geheime taal om met de Arduino te praten.
Void
Je ziet in het programma ook twee keer het woord ‘void‘. Wat betekent dit?
Stel je voor dat je een robot, zoals een Arduino, aan het vertellen bent wat hij moet doen. Als je de robot opdrachten geeft, noemen we die ‘functies’. Functies zijn een soort speciale taken die je de robot laat uitvoeren. Je zag hierboven al de functies Setup() en Loop().
Vóór deze functies staat het woord ‘void’. Dit is een beetje een gek woord, maar in de wereld van het programmeren met Arduino betekent ‘void’ dat een functie geen ‘bedankje’ of iets teruggeeft nadat deze het werk heeft gedaan. Het is net alsof je een iemand vraagt om je te helpen met iets, en als deze klaar is, niets terug wilt. Hij doet gewoon de taak en dat is alles.
Overzicht Arduino programmeertaal
Op https://www.arduino.cc/reference/en/ staat een handig overzicht van alle opdrachten die mogelijk zijn.
Dingen aansluiten op de Arduino Nano [↑]
Voor het aansluiten van de andere onderdelen hebben we een speciale aansluitprint gemaakt.
De Arduino Nano wordt op de aansluitprint geprikt:
Je ziet drie kleuren aansluitpinnen (headers):
- Zwart is voor de min, deze noemen ze vaak de Ground (GND).
- Rood is voor de plus (bij de Arduino Nano is dit 5 Volt).
- Geel is voor de ingang of uitgang. In het programma geef je voor iedere poort aan of deze wordt gebruikt voor INPUT (bijvoorbeeld een lijnsensor) of OUTPUT (bijvoorbeeld een motor of de LED-koplamp.
We gaan hierna een LED aansluiten op de Arduino.
Wat zijn leds? [↑]
Een LED, of Light Emitting Diode, is een speciaal lampje dat licht geeft als er stroom doorheen loopt. Het heeft een plus- (+) en een min-kant (-). De pluskant moet verbonden zijn met de positieve kant van de stroombron en de min-kant met de negatieve (GND). Dit is belangrijk, want als je het andersom doet, werkt de LED niet. LED’s zijn zuinig met energie en worden niet snel warm, wat ze erg handig maakt in allerlei apparaten, zoals speelgoed en verkeerslichten.
Plus en min
De plus (+) is de lange draad van de LED en de min (-) is de korte aansluiting. Plus en min worden ook vaak ‘positief’ en ‘negatief’ of ‘Vcc’ en ‘GND’ genoemd
Leds aansluiten op een Arduino [↑]
Een blauwe led werkt op een spanning van ongeveer 3 Volt. Uit de Arduino komt echter 5 Volt. Tussen de LED en de Arduino schakelen we een weerstand. Deze weerstand (100 Ohm) beperkt de stroom die door de LED loopt.
Dit is het schema waarop je ziet hoe de LED is aangesloten op de Arduino.
De LED en de weerstand zijn al op een handig printplaatje gemonteerd:
Het printje waarop de grote blauwe LED’s zitten hebben drie aansluitingen. De middelste aansluiting wordt niet gebruikt en zit er alleen maar omdat we straks ook andere dingen gaan aansluiten die wel alle drie de aansluitingen nodig hebben.
Twee LED’s aansluiten
- Schema A heb je hierboven al gezien.
- In schema B is er ook een LED aangesloten op Pin 5.
- In schema C is duidelijker aangegeven wat de ground (GND) is. De twee LED’s gebruiken dezelfde ground.
En zo ziet her in het echt uit:
Opdracht
Laat de LED’s om de beurt aan- en uitgaan.
Onderdelen monteren
In de eerst les monteren we de Aansluitprintplaat (met de Arduino) en de twee LED-koplampen op het houten chassis.
We gebruiken hiervoor M3-schroeven, -moertjes, -ringen en afstandsbusjes.
M3 is de afkorting voor Metrisch 3 mm.
M3-schroeven
We gebruiken kruiskopschroeven. In de naam van de schroef staat de lengte. Een schroef M3x16 is heeft een diameter van 3 mm en is 16 mm lang.
|
|
M3-moertjes
Je kan deze aandraaien met een dopschroevendraaier (5,5 mm). |
|
M3-ringen
Deze gebruik je om het (zachte) hout te beschermen. |
|
Afstandsbusjes
Deze zijn van kunststof en zorgen voor de afstand tussen de onderdelen en het chassis. |
Materiaal en gereedschap les 1 [↑]
Materiaal | Gereedschap |
|
|
Download pdf en website
Codewerkplaats 2024 - Les 1
Colofon
Huis73 | maakte het mogelijk om deze lessen te schrijven en organiseert de lessen. | |
Digitaal Atelier | had de spullen voor het lasersnijden en 3d-printen van de onderdelen en is ook nog eens een hartstikke leuke ruimte waar iedereen hartstikke leuke dingen kan doen. | |
Stichting Leaphy | was de eerste die in Nederland op grote schaal Arduino-robotkarretjes beschikbaar stelde en ook nog eens de programmeeromgeving Leaphy Easybloqs ontwikkelde en voor iedereen beschikbaar stelt. | |
CodeKids | bedacht de lessen, ontwikkelde een eigen (goedkoper) karretje en verzorgt de lessen. | |
Iedereen mag materiaal uit deze lessen (her)gebruiken als daarbij de bron (www.codekids.nl) wordt vermeld. |
2 comments