Raspberry Pi Pico: CircuitPython-Programmier-Kurs

CircuitPython ist ein Fork von MicroPython und damit eine Software-Implementierung der Programmiersprache Python 3 für Mikrocontroller. CircuitPython weist an manchen Stellen Vereinfachungen und Verbesserungen gegenüber MicroPython auf. Allerdings sind ein paar Dinge anders. Im folgenden Programmier-Kurs wird die Programmierung wichtiger Hardware-naher Komponenten gegenübergestellt. Wer MicroPython beherrscht kann so die entsprechende Lösung für CircuitPython vergleichen und adaptieren.

Wenn auf Deinem Raspberry Pi Pico die CircuitPython-Firmware noch nicht installiert ist, dann solltest Du diese zuerst installieren.

Übersicht: CircuitPython

  1. Onboard-LED einschalten und ausschalten
  2. Onboard-LED blinken lassen
  3. Mit einem Taster die Onboard-LED einschalten und ausschalten
  4. GPIO-Eingang als ADC
  5. GPIO-Ausgang mit PWM-Signal

1. Onboard-LED einschalten und ausschalten

Programmcode für MicroPython

# Bibliotheken laden
from machine import Pin
from time import sleep

# Initialisierung von GPIO25 als Ausgang
led_onboard = Pin(25, Pin.OUT)

# LED einschalten
led_onboard.on()

# 5 Sekunden warten
sleep(5)

# LED ausschalten
led_onboard.off()

Programmcode für CircuitPython

# Bibliotheken laden
import time
import board
import digitalio

# Initialisierung der Onboard-LED
led_onboard = digitalio.DigitalInOut(board.LED)
led_onboard.direction = digitalio.Direction.OUTPUT

# LED einschalten
led_onboard.value = True

# 5 Sekunden warten
time.sleep(5)

# LED ausschalten
led_onboard.value = False

2. Onboard-LED blinken lassen

Programmcode für MicroPython

# Bibliotheken laden
from machine import Pin
from time import sleep

# Initialisierung von GPIO25 als Ausgang
led_onboard = Pin(25, Pin.OUT)

# Wiederholung (Endlos-Schleife)
while True:
    # LED einschalten
    led_onboard.on()
    # halbe Sekunde warten
    sleep(0.5)
    # LED ausschalten
    led_onboard.off()
    # 1 Sekunde warten
    sleep(1)

Programmcode für CircuitPython

# Bibliotheken laden
import time
import board
import digitalio

# Initialisierung der Onboard-LED
led_onboard = digitalio.DigitalInOut(board.LED)
led_onboard.direction = digitalio.Direction.OUTPUT

# Wiederholung (Endlos-Schleife)
while True:
    # LED einschalten
    led_onboard.value = True
    # halbe Sekunde warten
    time.sleep(0.5)
    # LED ausschalten
    led_onboard.value = False
    # 1 Sekunde warten
    time.sleep(1)

3. Mit einem Taster die Onboard-LED einschalten und ausschalten

Programmcode für MicroPython

# Bibliotheken laden
from machine import Pin

# Initialisierung von GPIO25 als Ausgang
led_onboard = Pin(25, Pin.OUT)

# Initialisierung von GPIO14 als Eingang mit internem PULLDOWN-Widerstand
btn = Pin(14, Pin.IN, Pin.PULL_DOWN)

# Funktion zur Taster-Auswertung
while True:
    if btn.value() == 1:
        led_onboard.on()
    else:
        led_onboard.off()

Programmcode für CircuitPython

# Bibliotheken laden
import time
import board
import digitalio

# Initialisierung der Onboard-LED
led_onboard = digitalio.DigitalInOut(board.LED)
led_onboard.direction = digitalio.Direction.OUTPUT

# Initialisierung von GPIO 14 als Eingang
btn = digitalio.DigitalInOut(board.GP14)
btn.switch_to_input(pull=digitalio.Pull.UP)

# Wiederholung
while True:
    if btn.value:
        led_onboard.value = False
    else:
        led_onboard.value = True
    time.sleep(0.1)

4. GPIO-Eingang als ADC

Programmcode für MicroPython

# Bibliotheken laden
from machine import ADC

# Initialisierung des ADC0 (GPIO26)
adc = ADC(0)

# ADC0 als Dezimalzahl lesen
read = adc.read_u16()

# Spannung berechnen
voltage = read * 3.3 / 65536

# Daten ausgeben
print('ADC:', read, '/', voltage, 'V')

Programmcode für CircuitPython

# Bibliotheken laden
import board, analogio

# Initialisierung des ADC0 (GPIO26)
adc = analogio.AnalogIn(board.GP26)

# ADC0 als Dezimalzahl lesen
read = adc.value

# Spannung berechnen
voltage = read * 3.3 / 65536

# Daten ausgeben
print('ADC:', read, '/', voltage, 'V')

5. GPIO-Ausgang mit PWM-Signal

Hinweis: Die Ansteuerung der Onboard-LED funktioniert nur bei einem Raspberry Pi Pico ohne WLAN-Chip.

Programmcode für MicroPython

# Bibliotheken laden
from machine import Pin, PWM

# GPIO25 mit PWM initialisieren (Onboard-LED)
pwm = PWM(Pin(25))

# Frequenz in Hertz (Hz) einstellen
pwm.freq(8)

# Tastgrad (Duty Cycle) einstellen
pwm.duty_u16(1000)

Programmcode für CircuitPython

# Bibliotheken laden
import board, pwmio

# GPIO25 mit PWM initialisieren (Onboard-LED)
pwm = pwmio.PWMOut(board.GP25, variable_frequency=True)

# Frequenz in Hertz (Hz) einstellen (Default: 500 Hz)
pwm.frequency = 8

# Tastgrad (Duty Cycle) einstellen
pwm.duty_cycle = 1000

Weitere verwandte Themen:

Frag Elektronik-Kompendium.de

Hardware-nahes Programmieren mit dem Raspberry Pi Pico und MicroPython

Elektronik-Set Pico Edition

Das Elektronik-Set Pico Edition ist ein Bauteile-Sortiment mit Anleitung zum Experimentieren und Programmieren mit MicroPython.

  • LED: Einschalten, ausschalten, blinken und Helligkeit steuern
  • Taster: Entprellen und Zustände anzeigen
  • LED mit Taster einschalten und ausschalten
  • Ampel- und Lauflicht-Steuerung
  • Elektronischer Würfel
  • Eigene Steuerungen programmieren

Elektronik-Set jetzt bestellen Online-Workshop buchen

Online-Workshop: Programmieren mit dem Raspberry Pi Pico

Programmieren mit dem Raspberry Pi Pico

Gemeinsam mit anderen und unter Anleitung experimentieren? Wir bieten unterschiedliche Online-Workshops zum Raspberry Pi Pico und MicroPython an. Einführung in die Programmierung, Sensoren programmieren und kalibrieren, sowie Internet of Things und Smart Home über WLAN und MQTT.

Online-Workshop buchen

Besuchen Sie unser fast monatlich stattfindendes Online-Meeting PicoTalk und lernen Sie uns kennen. Die Teilnahme ist kostenfrei.

Termine und Newsletter-Anmeldung

 

Elektronik-Sets für das Hardware-nahe Programmieren