Lampjes knipperen
Tot nu toe hebben we de microcontroller code laten uitvoeren en een resultaat terug laten sturen, zou het niet leuker zijn als we ook iets fysieks zien gebeuren? Dit word de eerste stap, tijd om een LED te laten knipperen!
Houd je muis boven een term met een gestippelde onderlijning om meer informatie te krijgen
De theorie
De Raspberry Pico heeft standaard een LED ingebouwd:
Voordat we deze LED aan en uit kunnen zetten moeten we het concept van Pinnen / een Pin
begrijpen.
Wat je voor je hebt liggen is meer dan alleen een microcontroller, er zit namelijk een heel board met extra electronica om heen. Alleen de "grote" zwarte chip in het midden is de microcontroller, de rest zijn extra's of benodigde elektronische componenten voor bijvoorbeeld de stroom voeding.
Op een chip zitten vaak veel pinnetjes, dit zijn vaak in-/uitgangen voor een signaal (zoals het aanzetten van een LEDje) of voor stroom (de + en de -). In de onderstaande afbeelding zijn deze pinnen erg goed te zien.
Op het microcontroller boardje dat voor je ligt kan je vanuit de chip verschillende lijnen zien lopen naar - bijvoorbeeld - de gouden pinnen aan de zijkant van het board, maar ook naar de LED.
De gouden pinnen aan het zijkant van het board maken het makkelijker om te gebruiken, in tegenstelling tot de bijna microscopische pinnen op een chip.
Informatie achterhalen
Omdat een microcontroller veel verschillende functionaliteiten op de pinnen heeft moeten we goed kijken welke we gaan gebruiken. Veel van deze informatie staat op een "pin-map" of "pinout diagram". Gelukkig biedt je ontwikkelomgeving zo een diagram aan:
- Klik CTRL+SHIFT+P, dit opent een "commando" scherm in je omgeving, door wat termen te typen die lijken op wat je wilt doen krijg je alle soortgelijke functionaliteiten van je omgeving te zien.
- Begin met het typen van: "pico pin map" of "pin map" of "pico". Zoals je waarschijnlijk kan zien krijg je een lijst met commandos/functies van je ontwikkelomgeving.
- Gebruik je muis of de pijltjestoetsen + enter om de juiste functie te selecteren.
In dit geval moeten we hebben:Pico-Go > Help > Show Pico Pin Map
Eenmaal geklikt op het juiste commando zul je een nieuwe tabblad krijgen met een pin-diagram van je microcontroller board. Hier staat veel informatie in, maar voor nu zijn we geintereseerd in het bovenste label met: "LED (GP25)".
Elk groene label is in de vorm van GPxx
waarbij xx
een getal is. Dit is het nummer voor algemeen gebruik, of in het engels "General Purpose". Dit betekend niks meer dat we zelf deze pin aan en uit kunnen zetten.
Voor het aansturen van de LED gebruiken we dus GP25.
Aansturen van pinnen (en de LED)
Om een Pin aan te sturen in de code moeten we wat externe functionaliteit importeren. Veel functies rondom het microcontroller boardje bevind zich in de machine
module. Deze kan geimporteerd worden via import machine
of een specifieke functie via from machine import <functie>
.
Open het volgende workshop bestand: 4_blink.py
4_blink.py | |
---|---|
1 2 3 |
|
Als we deze code regel voor regel "vertalen" naar het nederlands krijgen we:
van de module machine, gebruik de Pin functionaliteit.
variabele led is een Pin met parameters 25 (GP25) en deze pin is een output.
van de variabele led, voer de functie on() uit.
Bij een output sturen wij het signaal aan (aan/uit), bij een input lezen we het signaal uit
klassen en objecten
Tot zo ver hebben we variabelen gehad met een "primitieve" waardes: een getal, een stuk tekst of een decimaal getal.
Naast primitieven zijn er ook klassen en objecten dit kan je zien als een groep aan data en functies in één variabele. Het aanroepen van Pin(25, Pin.OUT)
geeft een object terug die geconfigureerd staat om GP25 te besturen als OUTPUT. Daarnaast heeft dat object ook extra functies zoals on()
, off()
, high()
, low()
en toggle()
.
Oefening A: Knipperen
Naast de machine
module wordt er in jouw workshop code ook een andere functie geimporteerd uit een andere module. Lees hiervan de beschrijving door er met je muis over te hangen (en/of lees de comment erboven).
Kan je met behulp van de functies op het led
object het LEDje laten knipperen (aan/uit/aan/uit/etc...)?