Micro Python Tutorial Teil 1 - Basics
| MicroPython
Als erstes brauchen wir eine IDE der MicroPython versteht und der mit dem RaspberryPi kommunizieren kann und die Community hat sich für Thonny entschieden. Der Vorteil, den gibt es auch als Portable Version, perfekt um es im Netzwerk auf mehreren PCs zu verwenden!
Nach der Installation verbinden wir den Raspberry Pi mit dem PC und setzen die Konfiguration von Thonny auf MicroPython für Raspberry Pi Pico. Danach müssen wir noch MicroPython installlieren und es kann los gehen!
Endlosschleife
Folgender Code erzeugt eine Endlosschleife, der die OnBoard Led des Picos blinken lässt. Dabei passiert folgendes:
- Bibliotheken laden
- Erstellen eines Pin Objekts für Pin 25(OnBoard LED) und setzt diesen als Ausgangspin. Dadurch keinn er eine Spannung (High/Low) an externe Komponenten weitergeben.
- Definieren einer Endlosschleife
- Led einschalten
- warte 0.5 Sekunden
- Led ausschalten
- warte 1 Sekunde
# Bibliotheken laden
from machine import Pin
from time import sleep # Initialisierung von GPIO25 als Ausgang
led = Pin(25, Pin.OUT) # Wiederholung (Endlos-Schleife)
while True:
# LED einschalten
led.on()
# halbe Sekunde warten
sleep(0.5)
# LED ausschalten
led.off()
# 1 Sekunde warten
sleep(1)
Statt led.on() und led.off() können wir auch led.toggle() verwenden um den Status einfach zu wechseln ohne darauf zu achten, ob die LED nun leuchtet oder nicht.
Timer
Selber Code wie vorher, nur dieses mal lassen wir einen Timer für uns arbeiten, statt einer Endlosschleife. Die Vorteile des Timers sind einfach, dieser rennt auch weiter, sollte es sonst irgendwo zu Fehlern kommen.
Die ersten 2 Codeteile sind noch gleich, jedoch definieren wir hier unsere erste Funktion blink als Parameter bekommt diese den Timer übergeben, den brauchen wir jetzt nur nicht. In der Funktion lassen wir die LED blinken und das in einer Frequenz von 1.5Hz, dass sind etwa alle 0,67 Sekunden ( Sekunde = 1/1.5). Timer.PERIODIC bedeutet wiederholend und callback ist ein Funktionsaufruf.
# Bibliotheken laden
from machine import Pin, Timer # Initialisierung von GPIO25 als Ausgang
led_onboard = Pin(25, Pin.OUT) # Definition einer Funktion, die der Timer aufruft
def blink(x):
led_onboard.toggle() # Timer initialisieren
Timer().init(freq=1.5, mode=Timer.PERIODIC, callback=blink)
Anstelle der Frequenz kann auch eine Periode angegeben werden:
Timer().init(period=500, mode=Timer.PERIODIC, callback=blink)
Hier wird alle 500ms die blink Funktion aufgerufen
Ampelsteuerung
Für die Ampelsteuerung habe ich 3 LEDs mit den Eingängen des Raspberry Pi Pico verbunden und diese dann über den GPIO gesteuert. Nicht vergessen einen Widerstand danach zu setzen, da ansonsten die LED kaputt geht:
Der Code beinhaltet alles was wir in den vorherigen Teilen gelernt haben. Statt der Endlosschleife könnten wir auch einen Timer nutzen.
from machine import Pin
from time import sleep
# Pins initialisieren
r = Pin(18, Pin.OUT)
y = Pin(17, Pin.OUT)
g = Pin(16, Pin.OUT) def greenPhase():
g.on()
sleep(2)
g.off()
sleep(0.5) def yellowPhase(duration=0.5):
y.on()
sleep(duration)
y.off()
sleep(0.5) def blinkYellow(times=3):
for _ in range(times):
yellowPhase(0.5) def redPhase():
r.on()
sleep(1)
r.off()
sleep(0.5) def trafficLight():
greenPhase() # Grünphase: 2,5 Sekunden
blinkYellow() # Blinkgelb: 3 x 0,5 Sekunden
redPhase() # Rotphase: 1,5 Sekunden
yellowPhase(1) # Gelbphase: 1 Sekunde
# Hauptschleife für Ampelsteuerung
while True:
trafficLight()
Gib mir Feedback!
Hab ich Blödsinn geschrieben oder etwas vergessen? Dann zögere nicht weiter und lass es mich sofort wissen indem du hier einen Kommentar hinterlässt!