Search Code

Cursus Les 2 van 10: Basiskennis Python om de Raspberry Pi Pico 4WD Smart Car Kit aan te sturen

Deze les maakt deel uit van: Raspberry Pi Pico 4WD Smart Car

Cursus Les 2 van 10: Basiskennis Python om de Raspberry Pi Pico 4WD Smart Car Kit aan te sturen

In deze tweede les van de Robojax Raspberry Pi Pico 4WD Smart Car-cursus duiken we in de fundamentele Python-programmeerconcepten die je in staat stellen om je robot te besturen. Deze gids is ontworpen om je van nul codeerervaring te brengen naar het vol vertrouwen schrijven van scripts die hardware aansturen. In plaats van alleen syntaxis te onthouden, verkennen we het "waarom" achter elk concept, waardoor je de tools krijgt om je eigen projecten te bouwen en aan te passen. Aan het einde van deze les heb je een solide begrip van variabelen, control flow, functies en lijsten—de bouwstenen voor alle toekomstige projecten.

Deze kennis is niet alleen voor een slimme auto. De principes die je hier leert, zijn dezelfde die worden gebruikt in talloze praktijktoepassingen. Je zou deze vaardigheden kunnen toepassen op:

  • Het automatiseren van een huiskas om ventilatoren, pompen en lampen te regelen op basis van sensorgegevens.
  • Het bouwen van een aangepast beveiligingssysteem dat alarmen activeert of meldingen verzendt.
  • Het creëren van interactieve kunstinstallaties die reageren op de omgeving.
  • Het ontwikkelen van je eigen aangepaste robotgedragingen naast de voorgeprogrammeerde.

Hardware/Componenten

Om de hardwarevoorbeelden in deze les te volgen, heb je de volgende componenten nodig. Deze maken allemaal deel uit van de SunFounder Raspberry Pi Pico 4WD Smart Car Kit, maar kunnen afzonderlijk worden gekocht voor zelfstandige experimenten.

  • Raspberry Pi Pico: De microcontroller-hersenen van het project.
  • Een LED: Gebruikt om digitale uitvoerbesturing te demonstreren.
  • Een weerstand (150Ω - 330Ω): Om de stroom te beperken en de LED te beschermen.
  • Jumperdraden: Voor het maken van verbindingen op een breadboard.
  • Een breadboard: Voor het prototypen van je circuit.

Bekabelingsgids

Voor de hardwaredemonstratie in deze les bouwen we een eenvoudig circuit om een LED te besturen met een Raspberry Pi Pico. De bedrading is eenvoudig en is een klassieke eerste stap in fysiek computergebruik. De sleutel is het gebruik van een stroombegrenzende weerstand om te voorkomen dat de LED doorbrandt. De weerstand wordt in serie met de LED aangesloten. Het lange been van de LED (de anode) is de positieve verbinding, en het korte been (de kathode) is de negatieve verbinding.

In de video gebruikt de instructeur een weerstand die is aangesloten op de aardingspin en het korte been van de LED. Het lange been is verbonden met GPIO-pin 22. Deze opstelling stelt de Pico in staat om een hoog signaal (3,3V) naar de pin te sturen om de LED in te schakelen en een laag signaal (0V) om deze uit te schakelen.

Opmerking: Het bedradingsschema wordt in de video getoond. Raadpleeg de visuele gids voor de exacte plaatsing.

Code-uitleg

Deze les richt zich op de kern van Python-syntaxis en -logica, die essentieel is voor het besturen van je robot. Laten we de belangrijkste concepten uit de video opsplitsen. De codevoorbeelden zijn geschreven in MicroPython, een versie van Python die is ontworpen om te draaien op microcontrollers zoals de Raspberry Pi Pico.

Variabelen en gegevenstypen

Variabelen zijn als gelabelde dozen waarin je informatie opslaat. In Python hoef je het type van een variabele niet te declareren; het wordt afgeleid uit de waarde die je toewijst. (in video op 03:33)


leeftijd = 23  # Dit is een geheel getal
naam = "Ahmad"  # Dit is een string (tekst)
pi = 3.14  # Dit is een float (decimaal)

Je kunt deze variabelen gebruiken in berekeningen en hun waarden afdrukken. Om bijvoorbeeld het aantal dagen bij een bepaalde leeftijd te berekenen, kun je dagen = leeftijd * 365 gebruiken. De functie print() wordt gebruikt om uitvoer op de console weer te geven.

Voorwaardelijke statements (If/Else)

Voorwaardelijke statements stellen je code in staat om beslissingen te nemen. Dit is cruciaal voor een robot om te reageren op zijn omgeving, zoals stoppen wanneer hij een obstakel detecteert. (in video op 07:39)


leeftijd = 16
if leeftijd >= 17:
    print("Je mag rijden")
else:
    print("Te jong om te rijden")

Het if-statement controleert een voorwaarde. Als de voorwaarde True is, wordt het ingesprongen codeblok eronder uitgevoerd. Als het False is, wordt de code onder het else-statement uitgevoerd. De inspringing (spaties aan het begin van een regel) is cruciaal in Python; het bepaalt welke code bij welk blok hoort.

Loops (For en While)

Loops worden gebruikt om een codeblok te herhalen. Dit is ideaal voor taken zoals het scannen van sensorwaarden of het bewegen van een motor door een reeks stappen. (in video op 09:04)

For-loop: Deze loop herhaalt een specifiek aantal keren.


for x in range(5):  # x zal 0, 1, 2, 3, 4 zijn
    print(x)

While-loop: Deze loop blijft doorgaan zolang een voorwaarde waar is. Dit is handig voor het maken van een hoofdprogrammalus die voor altijd blijft draaien totdat een specifieke gebeurtenis plaatsvindt. (in video op 12:13)


x = 9
while x > 5:
    print("Waarde van x is:", x)
    x = x - 1  # Verlaag x
print("Loop voltooid")

Wees voorzichtig met while True:-loops. Ze blijven voor altijd draaien, tenzij je een break-statement gebruikt om de loop te verlaten of het programma stopt.

Functies

Functies zijn herbruikbare codeblokken die een specifieke taak uitvoeren. Ze helpen je code georganiseerd te houden en herhaling te voorkomen. (in video op 14:52)


def bereken_dagen(jaren):
    dagen = jaren * 365
    return dagen

# Nu kunnen we deze functie meerdere keren gebruiken
dagen_in_10_jaar = bereken_dagen(10)
print("Dagen in 10 jaar:", dagen_in_10_jaar)

Hier is calculate_days een functie die een argument (years) neemt en een waarde retourneert. Dit is efficiënter dan dezelfde berekening steeds opnieuw te schrijven. De video laat ook zien hoe een functie een andere functie kan aanroepen, waardoor je complexe bewerkingen kunt opbouwen uit eenvoudige, testbare onderdelen.

Lijsten

Lijsten worden gebruikt om een geordende verzameling items op te slaan. Dit is perfect voor het opslaan van een reeks commando's voor je robot, zoals "vooruit", "achteruit", "links" en "rechts". (in video op 19:15)


move = ["vooruit", "achteruit", "links", "rechts", "stop"]
print(len(move))  # Drukt het aantal items in de lijst af (5)
print(move[0]) # Drukt het eerste item af, "vooruit"

# Je kunt items toevoegen
move.append("klif")
# Je kunt items verwijderen
move.pop()  # Verwijdert "klif"
# Je kunt items wijzigen
move[2] = "vliegen"  # Wijzigt het derde item naar "vliegen"

Lijsten zijn nul-geïndexeerd, wat betekent dat het eerste item op index 0 staat. De len()-functie geeft je de lengte van de lijst, en je kunt een for-lus gebruiken om door alle items te itereren. De enumerate()-functie wordt ook geïntroduceerd, die je zowel de index als de waarde geeft tijdens een lus, wat handig is voor het werken met meerdere pinnen of sensoren.

Werken met pinnen en tijd

Dit is waar je Python-logica verbindt met de fysieke wereld. Je gebruikt de machine-bibliotheek om de GPIO-pinnen van de Pico te besturen. (in video op 25:16)


from machine import Pin
import time

# Stel pin 22 in als uitgang
led = Pin(22, Pin.OUT)

# Zet de LED aan en uit
led.on()
time.sleep(1)
led.off()
time.sleep(1)

Je kunt ook van een pin lezen door deze in te stellen als ingang met Pin(2, Pin.IN). De time-bibliotheek is essentieel voor het toevoegen van vertragingen (time.sleep()) en voor het meten van verstreken tijd met time.ticks_ms() of het converteren tussen tijdformaten met time.localtime() en time.mktime(). Dit is cruciaal voor op tijd gebaseerde logica, zoals het creëren van een pulsbreedtemodulatie (PWM)-signaal om de motorsnelheid te regelen.

Live project/demonstratie

In de video geeft de instructeur een live demonstratie van deze concepten. Hij begint met het tonen van eenvoudige print()-instructies en variabeletoewijzingen in een Python-interpreter. Vervolgens gaat hij verder met complexere voorbeelden, waarbij hij visueel laat zien hoe if-instructies de programmastroom veranderen op basis van de waarde van een variabele.

De instructeur demonstreert vervolgens een praktisch hardwarevoorbeeld door een LED aan te sluiten op de Raspberry Pi Pico. Hij schrijft een eenvoudig MicroPython-script dat de LED aan en uit zet met een vertraging van één seconde, wat het directe resultaat laat zien van het besturen van een fysieke uitgang met code. Dit praktische voorbeeld versterkt de verbinding tussen de programmeerlogica en actie in de echte wereld. De les wordt afgesloten met het tonen van hoe je enumerate gebruikt om meerdere pinnen te beheren en hoe je de time-module gebruikt voor geavanceerdere timing- en planningsbewerkingen.

Hoofdstukken

  • [00:00] Introductie tot de Raspberry Pi Pico Smart Car-cursus
  • [01:31] Cursusoverzicht en mogelijkheden van de kit
  • [03:33] Variabelen en datatypes in Python
  • [07:39] Conditionele instructies (If/Else)
  • [09:04] For-lussen begrijpen
  • [12:13] While-lussen verkennen
  • [14:52] Functies definiëren en gebruiken
  • [19:15] Werken met lijsten en datastructuren
  • [25:16] GPIO-pinnen besturen met MicroPython
  • [29:54] Praktisch voorbeeld: een LED laten knipperen
  • [31:15] Geavanceerde pinbesturing met Enumerate
  • [31:24] Werken met tijdfuncties
Geen code bijgevoegd.

Hulpmiddelen en referenties

Nog geen middelen.

Bestanden📁

Geen bestanden beschikbaar.