In de Arduino IDE zijn veel voorbeeld programma’s beschikbaar. Deze programma’s kunnen we gebruiken om te leren hoe we met een Arduino werken. We kunnen deze bijvoorbeeld gebruiken als startpunt voor ons eigen programma of om te bekijken hoe een ander iets voor elkaar heeft gekregen.
In dit lab gebruik je het blink voorbeeld om te testen hoe je programma’s op je Arduino zet.
Wat heb je nodig?
Voor dit lab heb je een laptop nodig waarop de Arduino IDE geïnstalleerd staat. Hier hebben we twee keuzes voor je:
- Als je mee doet aan de Junior IOT GPS Challenge of het Junior-IOT-in-a-box Project.
- We gebruiken hierbij de portable Arduino omgeving die wij voor je hebben klaargezet. De folders staan al klaar met alle settings en met de aangepaste libraries.
- Download deze zip-file: https://junoriotchallenge.nl/downloads/arduino_port.zip
- Zet de zipfile in de lokale schijf van je computer: C:\ Daarna pak je alle bestanden uit. Je hebt nu ook de folder C:\arduino_port\
- In de arduino_port folder klik je op Arduino.bat om de IDE te starten. Het helpt op een SNELKOPPELING te maken op je desktop naar deze Arduino.bat
- Als je zelf aan de slag gaat:
- Heb je de Arduino IDE nog niet geïnstalleerd? Dan kun je het volgende lab volgen: ‘Arduino installeren’.
En je hebt natuurlijk een Arduino board nodig. Wij gebruiken vaak een Arduino Nano, maar het lab werkt voor elk type Arduino waar een USB-kabel op aangesloten kan worden.
Je hebt de USB-kabel nodig die bij jouw Arduino past. Kijk daarom goed wat voor stekker er op aangesloten kan worden. Bij de Arduino Nano die wij gebruiken gebruik je een USB kabel met een USB nano stekker.
Optioneel: De Arduino Nano klaar maken voor het breadboard
Als je de headers nog niet op de Arduino hebt gesoldeerd, doe dat dan alsnog volgens deze instructie: https://junioriot.nl/headers-op-arduino-nano-solderen/
Plaats je Arduino Nano in het breadboard. zorg dat er wat extra ruimte zit aan de kant van de D2-D3-D4… aansluitingen.
Hieronder lees je welk deel van de Blink Extreme we opnieuw opbouwen. De RGB led laat je weg.
Waar vinden we de voorbeelden
Je begint met het blink voorbeeld te openen. Kies in het menu voor ‘Bestand’, en dan ‘Voorbeelden’. Als de computer op Engels staat ingesteld kies je ‘File’ en dan ‘Examples’. Hier zie je de lijst met alle voorbeelden die geïnstalleerd zijn.
Onder ‘Ingebouwde Voorbeelden’ staan de voorbeelden die je waarschijnlijk het meest zult gebruiken. De meeste voorbeelden zullen op ieder Arduino apparaat werken.
Onder ‘Voorbeelden voor ieder board’ zie je vaak nog veel meer voorbeelden. Wat je hier te zien krijgt hangt af van het type Arduino dat je hebt geselecteerd en of je zelf nog meer hebt toegevoegd.
Het kan zijn dat er helemaal onderaan extra voorbeelden zijn toegevoegd. Als de lijst te lang is dan zie je een pijl helemaal onderaan de lijst. Hier beweeg je met de muis overheen om te scrollen.
Open het ‘Blink’ voorbeeld
Je begint met het ‘Blink’ voorbeeld programma te openen. Kies in het menu voor ‘Bestand’, en dan ‘Voorbeelden’. Kies nu ’01.Basics’ en dan ‘Blink’.
Er opent een nieuwe editor met het ‘Blink’ voorbeeld.
Verbinden met jouw Arduino
Nu je ‘Blink’ hebt geopend, moet je nog aangeven welk type Arduino je gebruikt. Kies in het menu ‘Hulpmiddelen’, en dan ‘Board’. Kies vervolgens het type Arduino wat jij gebruikt. Meestal gebruiken we een Arduino Nano, en in deze uitleg hebben wij deze gekozen.
Weet je niet welk type Arduino je hebt? Kijk dan op de Arduino website: arduino.cc/en/main/products.
Daarna kiezen we de juiste processor. Hiervoor kies je bij ‘Hulpmiddelen’ (Engels: ‘Tools’) voor ‘Processor’. Bij sommige typen Arduino’s kan je dit niet instellen, en dan sla je deze stap over. Bij de Arduino Nano hebben we drie keuzes. ‘ATmega328P’, ‘ATmega328P (Old Bootloader)’ en ‘ATmega168’. In onze werkplaats hebben we twee soorten: de rode Arduino Nano met een ‘ATmega168’ processor, en de gele met de ‘ATmega328P (Old Bootloader)’. Kies de juiste processor.
Als je niet weet van welke processor je moet kiezen, probeer dan de bovenste, en als het niet werkt kies je telkens de volgende in de lijst.
Daarna moeten we nog de USB-poort kiezen. De naam van zo’n poort is verschillend bij Windows of Linux. Op Windows is de naam van de poort telkens ‘COM’ en een getal. Als je meerdere poorten ziet, dan is de kans groot dat de Arduino het apparaat is met het hoogste getal. Als het straks niet werkt, probeer dan een andere poort te selecteren.
In onze werkplaats geven onze dunne HP-laptops ook altijd COM3 in de lijst. Dit nummer is bij deze machines nooit verbonden met je Arduino. Kies de poort met het hoogste nummer.
Je programma uploaden naar jouw Arduino
Nu je alle instellingen goed hebt gezet, kan je jouw programma naar je Arduino sturen. Kies linksboven de tweede ronde knop, de upload knop om ons programma op de Arduino te zetten.
Als jouw programma goed naar de Arduino is gestuurd, dan zie je boven de zwarte terminal de tekst ‘Uploaden voltooid’ (Engels: ‘Done uploading.’). Je programma zorgt ervoor dat er elke seconde een LED-lichtje knippert op onze Arduino.
Als de upload niet geslaagd is, kun je het opnieuw proberen met andere processor en poort instellingen. Als geen enkele combinatie werkt, is het probleem misschien te vinden onder het kopje ‘Verschillende problemen oplossen’ verder in dit artikel.
Het ‘Blink’ voorbeeld slopen en weer repareren – om te leren wat er mis kan gaan
De tekst van jouw programma zie je in de Arduino IDE. Dit is de computercode van het voorbeeld. Laten we hier eens naar kijken. Je gaat ook wat aanpassen, je hoeft niet bang te zijn om daarbij iets stuk te maken, want je kan het voorbeeld altijd opnieuw openen.
Het ‘Blink’ voorbeeld begint met een aantal regels lichtgrijs gekleurde tekst. Dit is commentaar, en dit wordt bij het uitvoeren van de code genegeerd. Ook tekst wat na ‘//’ komt, is commentaar. Commentaar is voor de computer niet belangrijk voor het uitvoeren van jouw programma, maar is voor de programmeurs erg belangrijk om later elkaars keuzes te begrijpen. Verder naar beneden zie je regels waar telkens wat gekleurde woorden staan, daar staat je programma.
Op de allereerste regel begint de lichtgrijze tekst met: /*
Haal het eerste streepje weg. Je ziet dat de lichtgrijze tekst nu zwart wordt. Stuur je programma nu weer naar de Arduino (met de tweede ronde knop linksboven).
Gaat het goed? Nee, we krijgen onderin het scherm een knal oranje error. Goed!
Gelukkig weet jij hoe je de fout hebt gemaakt, en je kunt het herstellen. Zorg dat de eerste regel weer goed is, door er weer /* te typen, zoals in het plaatje. De tekst kleurt weer licht grijs. Stuur je programma weer naar de Arduino om te controleren dat het goed is.
Gefeliciteerd, je hebt je eerste softwarefout opgelost!
Het ‘Blink’ voorbeeld bekijken en aanpassen
Haal het eerste stuk met de lichtgrijze regels weg. Ook de regel met /* haal je weg, en ook de regel met */. Jouw programma zal er na de verandering als volgt uitzien:
void setup() { pinMode(LED_BUILTIN, OUTPUT); } void loop() { digitalWrite(LED_BUILTIN, HIGH); delay(1000); digitalWrite(LED_BUILTIN, LOW); delay(1000); }
In dit lab kijken we naar de structuur van het voorbeeld. In een ander lab kan je op een ander moment leren wat elk stukje code precies doet.
We zien bovenin de eerste gekleurde woorden: ‘void setup()’. Je ziet daarnaast een krulhaakje { of accolade-openen. Een paar regels daaronder zie je aan het begin van de regel een krulhaakje } of accolade-sluiten. Zet je cursor nu naast het krulhaakje op de regel waar ‘void setup()’ staat. Er verschijnt een paar regels lager nu een vierkantje om het bijbehorende haakje-sluiten. De code tussen deze accolades {} horen bij elkaar, en zijn deel van de ‘setup’ functie. Alle code die hoort bij de ‘setup’ wordt maar één keer uitgevoerd, bijvoorbeeld als de Arduino wordt aangezet.
Daarna zie je nog een keer iets wat daarop lijkt: ‘void loop()‘. Zet je cursor eens naast de laatste accolade op deze regel. Je ziet dat er een aantal regels hoort bij de ‘loop’ functie. Als de ‘setup’ klaar is, dan wordt de ‘loop’ uitgevoerd, en deze wordt dan telkens herhaald tot iemand de Arduino weer uitzet.
Elk Arduino programma heeft daarom één ‘void setup()‘ en één ‘void loop()‘ nodig. In het blink programma zie jein beide functies een aantal regels code. Bij de loop zie je bijvoorbeeld op twee plaatsen een regel met het getal 1000:
delay(1000);
Deze regel laat de Arduino duizend milliseconden (dus een seconde) wachten, waarna de volgende regel wordt uitgevoerd. We kunnen deze wachttijd veranderen. Probeer dit eens! Verander het eerste getal 1000 in 200, en het tweede getal 1000 in 2000. Stuur je programma dan naar jouw Arduino, en kijk of het ritme verandert.
Let op, de Arduino vindt het niet lekker als je een getal kiest wat kleiner is dan 17, het resultaat is dan dat je hem niet meer kunt programmeren.
Vergeet niet om iedere keer wanneer je klaar bent, opnieuw je programma naar je Arduino te sturen. Het is handig om dit vaak te doen om na een paar aanpassingen al te controleren of jouw programma nog werkt.
En nu? Verder met Blink Dubbel Extreme en andere labs.
Wanneer je klaar bent kun je een van onze andere labs volgen. Het is mooi om nu via een uitgebreide uitleg een ingewikkelde Blink te maken met extra Leds. We noemen dit de Blink Extreme: https://junioriot.nl/blink-extreme-breadboard/
Maar als je de uitgebreide uitleg al kent, ga dan meteen door naar de extra dubbel ingewikkelde blink met super compacte instructie: https://junioriot.nl/blink-dubbel-extreme/
LET OP:
- Als je een rustige, langzame uitleg zoekt, dan kijk je hier: https://junioriot.nl/arduino-nano-2/
- Hoe elke regel en elke opdracht van je programma werkt, dat lees je op: https://junioriot.nl/arduino-programma-leren/
En er is nog veel meer! Kijk eens in onze verzameling van labs: ‘Labs’. Een mooie serie waar je een aantal labs op volgorde ziet staan vind je op https://junioriot.nl/start/ en https://junioriot.nl/electronica-arduino-cursus/
We schrijven steeds meer nieuwe labs en uitleg hoe je jouw eigen Arduino programma’s kan maken, en het vervolg op dit lab is nu nog in ontwikkeling.
Video
Een voorbeeld les (dit filmpje duurt 22 minuten, de hele les is bijna een uur).
Verschillende problemen oplossen
Niets is perfect. Er kunnen altijd wel problemen ontstaan. In onze werkplaats hebben we gemerkt dat de problemen die hieronder genoemd worden het vaakst voorkomen.
Ik kan de poort niet vinden
Het komt soms voor dat onze Arduino niet in de lijst van USB-poorten te vinden is, dit kan meerdere oorzaken hebben:
- De lijst met poorten moet herladen worden.
Als je jouw Arduino aansluit wanneer het hulpmiddelen menu is geopend, zal de Arduino niet in de lijst met poorten te vinden zijn. Open de lijst dan opnieuw. Om dit voor elkaar te krijgen sluit je het hulpmiddelen menu door ergens ander op het scherm te klikken. Vervolgens open je het menu weer door op ‘Hulpmiddelen’ (Engels ‘Tools’) te klikken.
Als dit het probleem niet heeft opgelost, dan kan je de Arduino IDE opnieuw opstarten. Sluit dan het programma af door op het kruisje rechts boven te klikken. Open vervolgens het programma opnieuw.
Als dit je probleem nog steeds niet heeft verholpen, dan kan je proberen of het opnieuw opstarten van de computer het probleem oplost.
- Windows verslikt zich in de poort.
Soms lijkt het erop dat onze laptops en de Arduino even geen zin in elkaar hebben. Steek eerst de USB-kabel in een andere USB-aansluiting in de computer. Kijk daarna of je bij Hulpmiddelen wel weer een poort kunt kiezen.
- Oeps, een USB-kabel zonder data verbinding
Sommige USB-kabels hebben geen data verbinding. Deze data verbinding is voor het uploaden van ons programma juist hard nodig. Probeer eens of een andere USB-kabel wel werkt.
- De CH340 drivers zijn niet geïnstalleerd
Bepaalde Arduino’s maken gebruik van een CH340 chip om met de computer te communiceren. Om met deze chip te communiceren heb je een driver nodig. Sommige Windows computers zullen deze drivers niet geïnstalleerd hebben. In het lab ‘Arduino installeren’ wordt onder het kopje ‘Drivers’ uitgelegd hoe je deze drivers installeert.
‘Er trad een error op’
Wanneer je een oranje balk krijgt met ‘Er trad een error op gedurende het laden van de sketch’ (Engels: ‘Problem uploading to board’), dan betekent dit vaak dat je instellingen verkeerd staan. Check dan of je het juiste board, processor en poort hebt gekozen. Wanneer je niet weet welke processor of poort je gebruikt, zal je elke mogelijke optie uit moeten testen. Weet je niet welke board je hebt? Kijk dan op de Arduino website: arduino.cc/en/main/products.
Als helemaal niets werkt, betekent dit waarschijnlijk dat de juiste USB-poort niet in de lijst van poorten staat. Waarschijnlijk helpt een van de oplossingen onder het kopje ‘Ik kan de poort niet vinden’.
Lang bezig en dan ‘programmer is not responding’
Deze foutcode komt bij dezelfde soort problemen voor als ‘Er trad een error op’, probeer dan eerst de oplossingen die bij dat kopje worden gegeven.
Ook komt deze foutcode voor wanneer we gebruikmaken van een type Arduino zonder de auto-reset functionaliteit. Misschien heb jij er zo een. Probeer eens om kort op de reset knop van de Arduino te drukken zodra je het volgende in de Arduino IDE ziet verschijnen:
‘Probleem bij het uploaden naar board’
Dit probleem komt voor wanneer we geen of de verkeerde poort hebben geselecteerd. Probeer eens een andere poort te selecteren.
Gebruik je een Linux besturingssysteem? Heb je de Arduino IDE wel toestemming gegeven om met USB-apparaten te communiceren? Kijk hier, onder het kopje ‘Linux’, hoe je dit voor elkaar krijgt: ‘Arduino installeren’.
Probleem met code
Soms zit er een foutje in de code. De oranje error zal er dan ongeveer zo uitzien als in het plaatje hierboven. Probeer eens opnieuw het ‘Blink’ voorbeeld te openen en deze te uploaden. Werkt dat wel? Dan zal je in jouw code dus grondig moeten zoeken naar het foutje! Vergeet niet om de tekst van de error melding te lezen, omdat daarin meestal te zien wat er ongeveer fout is gegaan en waar de fout gemaakt is.
Andere problemen
Als er een probleem is met het verbinden, dan helpt het soms om je Arduino IDE helemaal af te sluiten en opnieuw te openen.
Als je andere problemen tegen bent gekomen kun je kijken of de oplossing hier te vinden is: arduino.cc/en/guide/troubleshooting. Of je kunt het probleem op internet opzoeken. Vraag ook eens aan andere mensen in het lab of zij weten hoe het probleem opgelost kan worden!