Bekijk de 38 andere Arduino lessen

Ik vind het belangrijk dat Bas on Tech door iedereen kosteloos gebruikt kan worden.

Help mij de toekomst van Bas on Tech te verzekeren. Je donatie zal o.a. worden gebruikt voor hosting, video's en onderhoud.

Alvast bedankt!

PS. iDEAL en Bancontact vind je onder het "Direct Debit" tabblad in de 4e stap.

1 · Ingebouwde Arduino LED laten knipperen


Leerdoelen

  • Ingebouwde Arduino LED laten knipperen
  • Werken met de Arduino IDE
  • Weten hoe je een sketch naar je Arduino upload

Benodigdheden

  • 1× Arduino
  • 1× USB kabel

Introductie

Toen ik mijn eerste Arduino kocht bestond YouTube nog niet. Ik zag chips, pennetjes, een knopje en lampjes. Ik wilde meteen aan de slag zonder iets te lezen, gewoon proberen. Uitleg sloeg ik over want ik wilde meteen een LCD scherm laten werken. Al snel ontdekte ik dat dit niet zo makkelijk ging, en als ik draden verkeerd aansloot dan de onderdelen zelfs stuk konden gaan. Maakt dat je niet uit? Ga ervoor en ontdek! Wil je toch iets meer informatie? Lees dan nog even verder 😉

Ik zou een eindeloos theoretisch verhaal kunnen houden over stroomschema's en signalen. Maar dat is precies wat Bas on Tech niet doet. Deze informatie kun je prima zelf online vinden. Wij gaan zo snel mogelijk aan de slag. Omdat dit de eerste les is, moet ik helaas toch een paar dingen uitleggen. Dit helpt je net even makkelijker op weg dan gewoon de code copy/pasten (kun je echt niet wachten? Onder de lesmateriaal knop vind je de code).

Lesmateriaal

Onderaan op deze pagina vind je de knop lesmateriaal waarmee je het lesmateriaal kunt downloaden. Dit materiaal bestaat uit de code, schakelschema en andere bestanden die in de les worden gebruikt.

Wat is een Arduino?

De Arduino is een zogenaamde microcontroller. Deze verwerkt analoge en digitale signalen en kan hier acties aan koppelen. Het hart van de Arduino is de AVR-chip. Wat deze chip precies moet wordt bepaald door een programma. Dit programma stuur je vanaf je computer via een USB-kabel naar de Arduino. De mogelijkheden zijn eindeloos: mp3 speler, telefoon, robot, weerstation, spelcomputer, radiografische auto's, domotica en nog veel meer!

Het ontwerp van de Arduino is open source. Dit houdt in dat elke fabrikant zelf een eigen Arduino op de markt mag zetten. In China worden vaak "Arduino klonen" verkocht. Deze kunnen precies hetzelfde als de "echte" Arduino, maar maken gebruik van goedkopere componenten. Dit is niet altijd een voordeel. Zo moeten er voor klonen vaak aparte drivers worden geïnstalleerd, terwijl dit voor een originele niet nodig is.

In deze tutorial gebruik ik de Arduino Uno, maar er zijn nog veel meer soorten zoals de Nano, Pro Mini, Micro en Mega. Elke soort Arduino heeft zijn eigen voor- en nadelen. Dat kan het aantal inputs / outputs of snelheid zijn, maar ook het formaat speelt een rol. In deze video ga ik meer in op de verschillen tussen de verschillende modellen.

Programmeren in de Arduino IDE

In deze Nederlandse Arduino tutorial leer ik je om de ingebouwde LED te programmeren. We maken hiervoor gebruik van de Arduino IDE. Deze is gratis te downloaden op de Arduino website

IDE is de afkorting van Integrated Development Environment. Dit is een programma waarmee je Arduino code omgezet kan worden naar code die de chip op de Arduino begrijpt. De IDE bevat daarnaast handige controles waardoor fouten sneller worden opgemerkt. In de volgende lessen leer je hier steeds meer over.

Arduino CH340/CH341 drivers

Sommige niet originele Arduino's werken mogelijk pas nadat je drivers hebt geinstalleerd. Dit komt omdat ze een CH340/CH341 chip gebruiken voor de USB verbinding met de computer. Meer informatie vind je op de Sparkfun website.

Welke pins zitten er op de Arduino?

Voor deze les gebruik ik de Arduino UNO, deze heeft verschillende pins waarop je componenten kun aansluiten. Bij het woord pins zou je wellicht pennetjes verwachten. Bij de UNO is dit niet het geval en zijn het vrouwelijke headers. Bij de Nano zijn dit wel echte pennen. Omdat het per Arduino kan verschillen wordt over het algemeen over pins gesproken.

Arduino UNO met grote AVR-chip
Arduino UNO met grote AVR-chip door Arduino.cc

Bovenaan zie je de digitale pins. Deze kunnen kunnen maar één van deze twee waarden hebben: HIGH (hoog) of LOW (laag). Bij hoog loopt er een stroompje door de pin, bij laag niet. Op een 5V Arduino is dit stroompje 5V, bij de 3.3V variant is dit 3.3V.

Rechtsonder zie je de analoge pins, deze kunnen 1024 verschillende waarden hebben: van 0 tot en met 1023. Linksonder zitten de stroom pins zoals de 5V, 3.3V, aarde (GND van ground) en de reset pin (RES).

Op de Arduino UNO zitten ook een paar speciale pins. Eén hiervan is digitale pin 13 (bovenaan rechts). Deze is verbonden met de ingebouwde LED. Dat is de LED die we in deze tutorial gaan laten knipperen. Je herkent de LED aan het label L op de printplaat.

Op de foto zie je een grote chip. Dit is de AVR-chip, het hart van de Arduino. Het kan zijn dat je deze, maar een kleine chip in het midden van de Arduino ziet. Dan heb je de zogenaamde SMD-versie van de Arduino. Deze chip is veel kleiner en niet te vervangen.

Arduino Code

Tijd om de code in te duiken 🤓 Voor deze les maken we gebruik van de kant-en-klare voorbeeldcode. Als je de IDE opent kun je bovenin het menu kiezen voor:

Bestand â–¸ Voorbeelden â–¸ 01. Basics â–¸ Blink

De IDE opent automatisch de code om het ingebouwde LED te laten knipperen. Bekijk de code even voordat je verder leest.

🎓 Kun je de code zonder uitleg al een beetje ontcijferen?

1 // the setup function runs once when you press reset 
2 // or power the board
3 void setup() {
4     // initialize digital pin LED_BUILTIN as an output.
5     pinMode(LED_BUILTIN, OUTPUT);
6 }
7 
8 // the loop function runs over and over again forever
9 void loop() {
10     digitalWrite(LED_BUILTIN, HIGH);   // turn the LED on (HIGH is the voltage level)
11     delay(1000);                       // wait for a second
12     digitalWrite(LED_BUILTIN, LOW);    // turn the LED off by making the voltage LOW
13     delay(1000);                       // wait for a second
14 }

In de code zie je allerlei commando's staan. Deze commando's zijn zo geschreven zodat een computer ze begrijpt. Een punt of komma op de verkeerde plek kan zorgen dat je code niet werkt. Geen zorgen, in mijn dagelijks leven als programmeur loop ik hier heel vaak tegenaan en het hoort bij programmeren.

Commentaar in code

Regel 1, 2 en 8 beginnen met twee slashes //. Deze code is commentaar en zal door de computer genegeerd worden. Commentaar is handig om een toelichting te geven op je code. Een andere vorm van commentaar begint met /* en eindigt met */ alles wat hiertussen staat wordt genegeerd. Dit werkt zelfs als er meerdere regels tussen staan:

1 /*
2     Dit is commentaar
3     over 
4     meerdere regels
5 */

Maar je mag het evengoed voor een enkele regel gebruiken:

1 /* Dit is commentaar op één regel */

De setup() functie

Je ziet in de code twee blokjes: setup en loop. Deze blokjes noemen we functies. In een andere tutorial ga ik hier dieper op in. Door inspringen houd je overzicht van welke code bij de functie hoort.

Zodra je programma start wordt de setup() één keer uitgevoerd. Hierna gaat het programma verder met de loop(). In de setup() stel je vaak dingen in zoals welke pin er gebruikt moet worden.

In dit voorbeeld stellen we via de pinMode functie, de LED_BUILTIN in als OUTPUT. Voor de Arduino UNO is LED_BUILTIN gelijk aan pin 13 (de ingebouwde LED). Je zou LED_BUILTIN dus kunnen verangen door 13. Het voordeel van LED_BUILTIN is dat het voor alle Arduino's werkt. Ook als de LED niet op pin 13 zit.

De loop() functie

Na de setup() gaat het programma verder met de loop(). Deze wordt oneindig lang uitgevoerd. Het programma stopt alleen als je de stroom eraf haalt of een nieuw programm upload.

Als je goed naar de code kijkt zie je twee functies aangeroepen worden: digitalWrite() en delay(). digitalWrite() schrijft een digitale waarde (dus LOW of HIGH) naar een bepaalde pin. Welke pin dit is wordt als eerste parameter aan de functie meegeven: LED_BUILTIN. De tweede parameter geeft aan welke waarde we gaan schrijven, in dit geval HIGH. digitalWrite() zorgt er dus voor dat op pin 13 de LED gaat branden.

Hierna zie je de functie delay() met slechts één parameter.

🎓 Kun je bedenken wat de waarde van deze parameter is?

De waarde is het aantal milliseconden dat het programma op pauze gezet moet worden. In dit geval is dat 1000 milliseconden, wat gelijk staat aan 1 seconde.

Na het wachten gaat het programma verder en wordt LOW naar de LED_BUILTIN geschreven. Hierdoor gaat de LED uit.

Code uploaden naar Arduino

Ons programma is nu klaar om naar de Arduino te worden gestuurd. Om dit te doen koppel je de Arduino via de USB kabel aan je computer. Controleer in het menu of je het goede Arduino board hebt geselecteerd:

Hulpmiddelen â–¸ Board â–¸ Arduino/Genuino UNO

en daarnaast of je ook de goede poort hebt gekozen. Dit vind je in het menu:

Hulpmiddelen â–¸ Poort

Als je hier niet weet welke poort je nodig hebt is het een kwestie van ze allemaal proberen.

Linksboven zie je een ronde knop met een vinkje erop. Als je hierop drukt kijkt de IDE of je code in orde is. De IDE kijkt hier alleen of hij de code kan lezen. Hij weet dus niet of je de juiste code voor jouw programma hebt geschreven.

Als alles goed is gegaan staat er onderaan de tekst Compileren voltooid. Uploaden doe je met de ronde knop met het pijltje naar rechts. Als er onderaan Avrdude done. Thank you. staat weet je dat de code naar de Arduino is gestuurd. Na het uploaden start het programma meteen. In ons geval zie de LED knipperen met pauzes van 1000ms.

Uitdaging 🚀

Goed dat je tot hier gekomen bent! Wil je een stap verder? Dan heb ik een uitdaging voor je:

🎓 Maak een programma waarbij de LED aan gaat, 0.5 seconde wacht, uit gaat en 2 seconden wacht.

Succes!

Bas van Dijk

Over Bas on Tech


Mijn naam is Bas van Dijk, ondernemer, freelance frontend developer en maker. Onder de naam "Bas on Tech" bied ik op YouTube videolessen aan over technische onderwerpen zoals Arduino en 3D-printen.

De video’s zijn in het Nederlands met ondertiteling, zodat mensen met een gehoorbeperking ze ook kunnen volgen.

Jaren geleden toen ik mijn eerste Arduino kocht had ik maar één doel: zo snel mogelijk een LCD schermpje aansluiten en er een tekst op laten zien. Na allerlei bronnen te hebben geraadpleegd kwam ik er na veel puzzelen eindelijk uit. Ik was als een kind zo blij met die paar letters op een geel schermpje.

Met Bas on Tech wil ik mijn kennis delen zodat ook anderen deze blijheid kunnen ervaren. Ik heb gekozen voor kort en krachtige YouTube video’s, met een duidelijke vaste opbouw en één onderwerp per video. Daarnaast staan onder elke video links naar de broncode en webshops waar de onderdelen te koop zijn.