Ingebouwd lampje
Op de Nano RP2040 Connect zit een ingebouwd lampje met de naam LED, dus je hoeft niets aan te sluiten. Daarnaast zit er een RGB-lampje op het bord dat rood, groen of blauw kan oplichten.
Lampje aanzetten
Je eerste programma. Het hele programma is drie regels — en je bouwt het regel voor regel op, zodat je van elke regel weet wat hij doet.
Hier bouw je op verder: Variabelen en Aanroepen met een punt
Weet je dit niet meer zeker? Lees het terug voordat je verdergaat.
- Python Variabelen
- Python Aanroepen met een punt
Stap 1: Haal het gereedschap op
Typ deze regel in je editor en druk op Run:
from machine import Pin
- Regel 1:
machineis een module: een verzameling kant-en-klaar gereedschap die al op je bord zit. Metfrom machine import Pinpak je er één stuk uit,Pin, waarmee je de pinnen van het bord kunt bedienen.
Er gebeurt na Run niets zichtbaars. Dat klopt: je hebt alleen gereedschap klaargelegd, je gebruikt het nog nergens.
Stap 2: Kies een pin en bewaar hem
Voeg de tweede regel toe en druk weer op Run:
from machine import Pin
pin_van_lampje = Pin('LED', Pin.OUT)
Pin('LED', Pin.OUT) maakt een pin-object aan. Tussen de haakjes geef je twee dingen mee:
'LED'is de naam van de pin op het bord waar het ingebouwde lampje aan hangt.Pin.OUTzegt dat je de pin als uitgang gebruikt: het bord stuurt er stroom naartoe, in plaats van iets te meten.
Dat object bewaar je in de variabele pin_van_lampje, zodat je er in de volgende regel iets mee kunt doen.
Ook nu zie je nog niets gebeuren. De pin staat klaar, meer niet.
Stap 3: Zet het lampje aan
Voeg de derde regel toe en druk op Run:
from machine import Pin
pin_van_lampje = Pin('LED', Pin.OUT)
pin_van_lampje.on()
pin_van_lampje.on() roept met de punt de methode on() aan op jouw pin-object. Nu loopt er stroom naar de pin — het lampje brandt.
Weer uit
Uitzetten is dezelfde variabele met een andere methode:
pin_van_lampje.off()
Controlevraag
Wat doet Pin.OUT?
Antwoord
Pin.OUT vertelt de microcontroller dat deze pin een uitgang is. De microcontroller stuurt dan stroom naar buiten (om bijvoorbeeld een lampje aan te zetten) in plaats van iets te lezen.
Laat het lampje knipperen
Je script van hierboven stopt zodra de laatste regel is uitgevoerd. Knipperen is iets anders: aan, even wachten, uit, even wachten — en dat steeds opnieuw. Daarvoor heb je twee nieuwe dingen nodig: herhaling (een loop) en tijd (een pauze).
Hier bouw je op verder: De while-loop
Weet je dit niet meer zeker? Lees het terug voordat je verdergaat.
- Python De while-loop
Stap 1: Een tweede import
Pauzeren kan met sleep, een functie uit de module time. Zet de nieuwe import onder de eerste:
from machine import Pin
from time import sleep
pin_van_lampje = Pin('LED', Pin.OUT)
De regel pin_van_lampje.on() heb je hier weggehaald; die komt zo in de loop terecht.
Stap 2: De loop erbij
Voeg de loop toe en druk op Run. Let op het inspringen: de regel onder while True: staat een tab naar rechts, en dat is niet voor de sier — zo weet Python welke regels bij de loop horen.
from machine import Pin
from time import sleep
pin_van_lampje = Pin('LED', Pin.OUT)
while True:
pin_van_lampje.on()
while True: betekent: blijf de ingesprongen regels herhalen, voor altijd. Het lampje lijkt nu stil te branden, maar onder water zet de loop het duizenden keren per seconde opnieuw aan.
Stap 3: Uit, en wachten
Vul de loop aan tot vier regels en druk op Run:
from machine import Pin
from time import sleep
pin_van_lampje = Pin('LED', Pin.OUT)
while True:
pin_van_lampje.on()
sleep(1)
pin_van_lampje.off()
sleep(1)
sleep(1) pauzeert één seconde. De loop doet nu steeds: aan, seconde wachten, uit, seconde wachten. Je lampje knippert tot je op Stop drukt of de stekker eruit trekt.
Voorspel: wat als je de twee sleep-regels weghaalt?
Antwoord
De loop draait dan duizenden keren per seconde. Het lampje gaat nog steeds aan en uit, maar zo snel dat je ogen er één zwak brandend lampje van maken. De code is niet kapot — hij is alleen te snel om te zien.
Controlevraag
Waarom staat pin_van_lampje = Pin('LED', Pin.OUT) boven de loop en niet erin?
Antwoord
De pin hoeft maar één keer klaargezet te worden. Alles wat eenmalig is staat boven de loop; alles wat steeds opnieuw moet gebeuren staat erin.
Een kleur kiezen
Naast het gewone lampje zit er ook een RGB-lampje op het bord. Daarmee kun je kiezen of het rood, groen of blauw oplicht via drie speciale pinnen: LED_RED, LED_GREEN en LED_BLUE.
Code
Het script is je knipperscript uit Laat het lampje knipperen, met twee verschillen: een andere pinnaam, en value() in plaats van on() en off(). Kies zelf een van de drie kleurnamen:
from machine import Pin
from time import sleep
kleur_pin = Pin('LED_RED', Pin.OUT)
while True:
kleur_pin.value(0)
sleep(1)
kleur_pin.value(1)
sleep(1)
Let op: 0 is aan, 1 is uit
value() is een methode waar je een getal aan meegeeft. Bij de ingebouwde RGB-LED zit het omgedraaid:
.value(0)zet het lampje aan.value(1)zet het lampje uit
Tip
Verander 'LED_RED' in 'LED_BLUE' of 'LED_GREEN' om een andere kleur te krijgen.
Opdracht: meerdere kleuren tegelijk
Kun je rood en blauw allebei tegelijk aan zetten? Welke kleur krijg je dan?
Oplossing
from machine import Pin
rood = Pin('LED_RED', Pin.OUT)
blauw = Pin('LED_BLUE', Pin.OUT)
rood.value(0)
blauw.value(0)
Rood en blauw samen geeft paars/magenta. Probeer ook rood + groen (geel) en groen + blauw (cyaan).
Er gaat iets mis
Foutmelding: ImportError: no module named 'machine'
Oorzaak: Je code draait op je computer in plaats van op het bord. De module machine bestaat alleen in MicroPython.
Oplossing: Controleer in MicroPython kiezen dat je interpreter op MicroPython staat en dat je bord verbonden is.
Foutmelding: NameError: name '...' isn't defined
Oorzaak: De naam in regel 3 is niet precies dezelfde als de naam in regel 2. Python ziet pin_van_lampje en pin_van_lampie als twee verschillende variabelen.
Oplossing: Vergelijk de twee namen letter voor letter en maak ze gelijk.
Foutmelding: IndentationError: expected an indented block
Oorzaak: De regels onder while True: springen niet in.
Oplossing: Zet één tab (of vier spaties) voor elke regel die bij de loop hoort. Gebruik overal hetzelfde — tabs en spaties mengen geeft ook fouten.
Het lampje knippert niet, het blijft branden
Oorzaak: Eén van de twee sleep-regels ontbreekt, of pin_van_lampje.off() staat buiten de loop.
Oplossing: Vergelijk je script letterlijk met het blok bij Stap 3 van Laat het lampje knipperen.
Zelf vinden: zet print("rondje") in de loop. Komen er in de Shell wél regels voorbij maar knippert er niets, dan draait de loop en zit de fout in de aan/uit-regels; zie je niets, dan draait de loop zelf niet.