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

Übersicht: Weitere Lösungen mit CircuitPython

Raspberry Pi mit CircuitPython programmieren

Ein Raspberry Pi, der Einplatinen-Computer, lässt sich auch mit CircuitPython programmieren. Das Besondere dabei ist, dass mit CircuitPython eine native Unterstützung der HDMI-Schnittstelle vorhanden ist und somit ein HDMI-Bildschirm zur Text- und Bildausgabe verwendet werden kann. Außerdem hat ein Raspberry Pi mehr Rechenleistung und Speicher als ein Mikrocontroller-Board wie der Raspberry Pi Pico.

Weitere verwandte Themen:

Elektronik-Sets für das Hardware-nahe Programmieren

Elektronik-Sets für das Hardware-nahe Programmieren

Programmieren mit dem Raspberry Pi Pico
Online-Meeting

Programmieren mit dem Raspberry Pi Pico

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

Termine und Newsletter-Anmeldung

Frag Elektronik-Kompendium.de