Anders

Leren programmeren op de Arduino?!

Uw maakdocent is sinds een jaar of twee bezig met de Arduino. Zo’n Arduino is niet veel meer dan een programmeerbare microcontroller. Maar ik begrijp dat jullie dat mogelijk niet veel zegt.  Een microcontroller is niks anders dan een computerchip die dingen uitleest (sensoren zoals een temperatuursensor) en dingen aanstuurt (actuatoren zoals lampjes, ledjes), en de Arduino kun je zelf programmeren. Je kunt er in een handomdraai je eigen digitale thermometer mee maken, of een robotje mee aansturen. En omdat je direct ziet wat je gedaan hebt, is leren programmeren op de Arduino heel erg leuk.

Maar, dit stukje gaat niet over wát je doet op de Arduino, maar hoe je leert programmeren op de Arduino. Want het heeft me enige tijd gekost voordat ik doorkreeg wát ik jullie moet uitleggen.

Allereerst: leren programmeren op de Arduino vraagt altijd dat je ook een schakeling(etje) bouwt. Als je een lampje wilt laten knipperen, eeew dan moet je een lampje aansluiten op de Arduino, en een programmaatje fixen dat het lampje laat knipperen. Niet toevallig is dit de éérste les die beginnende Arduino programmeurs altijd doen, en die heet geheel toepasselijk: Blink.

Er zijn drie stappen:

  1. Bouw het circuit (met de onderdelen in de ‘kit’ van school, van funmetelectronica.nl)

    Schrik niet als je dit niet snapt, doe het gewoon, en let op de + en – kant van de LED
  2. Zet het volgende programma op de Arduino, dat je kunt vinden op de website  Funmetelectronica.nl/
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    /*
      Autheur:      Fun met Electronica
      Link:         https://training.funmetelectronica.nl/docs/arduino-basis/lessen/les-1-led/
      Beschrijving: Laat een led knipperen
    */
     
    int led = 13;               // De led is aangesloten op pin 13
     
    /*
      Het programmablok void setup wordt eenmaal beschreven
    */
    void setup() {
      pinMode(led, OUTPUT); // We geven aan dat de led-pin-aansluiting een output is (spanning moet geven)
    }
     
    /*
      Het programmablok void loop herhaalt zich keer op keer
    */
    void loop() {
      digitalWrite(led, HIGH);   // zet spanning op de led-pin
      delay(1000);               // wacht een seconde (1000 miliseconden)
      digitalWrite(led, LOW);    // zet de spanning van de led-pin af
      delay(1000);               // wacht een seconde
    }
    /*
      Opdracht 1:
      Probeer de tijd eens te veranderen
     
      Opdracht 2:
      maak er extra stappen bij..
    */

    Je zult merken dat je wat hobbels moet nemen om het programma te kunnen compileren en uploaden naar de Arduino. Neem die hobbels, onthoud ze (want de volgende keer moet je weer hobbels nemen) het hoort er bij. 

  3. Pas je programma aan naar eigen inzicht
    Kijk eens naar de opdrachten in dit programma: je gaat klooien met het programma dat je gekregen hebt. Verander die 1000 eens in 100 (of in 5000) en kijk wat er gebeurt, laat het lampje kort / lang / kort knipperen, etc. Je zult zien dat deze ‘rare’ code best te snappen is.
  4. Oja, stap 4 😉 Stap 4 is dat je leert wat er fout gaat, en hoe je dat oplost. Er gaat vanalles mis. Ledje verkeerd, Com poort niet goed, verkeerde Arduino geselecteerd, draadje in het verkeerde gaatje etc. Leer hoe je gemakkelijk achterhaalt of er in je circuit een foutje zit. (tip: gaan alle lampjes uit, en wordt er iets heel erg warm (let op, je brandt je vingers!) vlak naast de USB aansluiting? Dan heb je kortsluiting in je schakeling!)

Je ziet hier direct het ALLER ALLER BELANGRIJKSTE van Arduino:

JE HOEFT NIET ZELF HET WIEL UIT TE VINDEN!!!!!
JE MOET OP DE SCHOUDERS VAN ANDEREN GAAN STAAN!!!!!

Je kunt  bijna altijd gebruik maken van de schema’s en code van anderen . . .
En in plaats dat je zelf moeizaam leert programmeren door de taal te bestuderen (zo deed ik het vroeger, tot mijn spijt), leer je door te kijken wat een ander heeft gedaan, en daar mee te fröbelen.
Eén ding kun je niet goed van anderen leren: fouten zoeken. Ik kan het voordoen, je kunt bij anderen kijken, maar ik heb nog geen cursus fouten zoeken gezien. . . Als jij die nou eens voor ons schrijft?!

Nu je het aller aller belangrijkste weet, is het tijd om je nog twee belangrijke dingen te vertellen.

Ten eerste: arduino.cc
Dit is DE website waarop ‘alles’ over de Arduino staat. Je vindt er ‘getting started‘, uitleg over de programmeer taal (talen), lessen (!), leuke projecten, en er is een forum waarop je vragen kunt stellen. Op het forum kun je ook antwoorden vinden, want geloof me, alle vragen die je in het begin hebt zijn daar al lang een keer beantwoord!

Ten tweede: denk in modules
Huh? Denken in modules? Ja. Denken in modules. Er zijn honderden zo niet duizenden soorten LCD displays, maar eigenlijk stuur je ze allemaal op ongeveer dezelfde manier aan. Als je er ééntje hebt leren programmeren, is de rest relatief eenvoudig. En andersom: als je een digitale thermometer hebt gemaakt met een LCD display, kun je hetzelfde LCD display (electronica, code) gebruiken als Arduino gestuurd Twitter message board. Moet je wel de ‘hoe kan ik een bericht van Twitter in mijn Arduino hengelen’ module leren gebruiken. Als je die twittermodule eenmaal hebt gevonden, dan kun je ook de Glow in the dark cilinder op een draaitafel maken. Alleen moet je voor die laatste nog een rijtje ledjes in de juiste volgorde laten knipperen (ook weer een module, zoek maar eens op POV display!).
Maar ook hier geldt: je kijkt steeds weer opnieuw naar stukken code van anderen, die je aanpast voor jouw programma.

Arduino maakt, net zoals veel programmeertalen, gebruik van libraries, include en header files. Geeft niet als je dat niet snapt, maar begrijp het volgende. Als je een LCD display aansluit, neem je de bijbehorende library, include en/of header files op in je programma. Nu heb je, door de fabrikant geleverd, ineens allerlei mogelijkheden tot je beschikking om dat display aan te sturen. Simpelweg door de code aan te roepen die de fabrikant voor je heeft geschreven. Natuurlijk zijn er ook mensen die zoiets zelf header files schrijven, en die met je delen. (de ledjes kubus die ik maakte heeft een ‘open source MD_Cubo library’)

Nog wat nabranders:

Als je eenmaal de basis doorhebt (gebruik wat anderen voor je gemaakt hebben, gebruik www, denk in modules en oefen met fout zoeken) . . . 

Dan snap je en kun je meer dan genoeg om met leuke Arduino projecten te starten.

Bijvoorbeeld op:
https://playground.arduino.cc/Projects/Ideas
https://create.arduino.cc/projecthub
Instructables.com
Hackster.io

En:
Zélf een elektronisch circuit tekenen kun je doen met Fritzing
Zélf online een electronisch circuit maken, inclusief Arduino, EN die Arduino programmeren? Circuits

Oja, de afbeelding van de handtas is natuurlijk ook van een arduino project

 

Leave a Reply