Die Erweiterung funktioniert auch am RPi Nano, RP2040 oder ESP32 Benötigte Verbindungen
- SDA I²C Datenleitung
- SCL I²C Taktleitung
- 3V3 Versorgungsspannung
- GND Masse
- 5V
Folgende 5 Leitungen habe ich zwischen RP2040-USB und IO-Pi-Plus verbunden
RP2040-USB <-> IO-Pi-Plus
--------------------------------
- SDA (1) I²C Datenleitung -> (3)
- SCL (2) I²C Taktleitung -> (5)
- 3V3 Versorgungsspannung -> (1)
- GND Masse -> (6)
- 5V -> (2)
- Thonny installiert und das IO-Pi-Plus -Board in Betrieb genommen
- Mit Hilfe von DeepSeek eine Klasse ippi_plus.py geschrieben und dies auf dem RP2040 gespeichert
- ein Erstes Testprogramm als main.py gesichert (wird beim Booten automatisch gestartet)
Code: Alles auswählen
from iopi_plus import IOPiPlusimport time
print("TESTMODUS - main.py wurde überschrieben")
io = IOPiPlus()Code: Alles auswählen
io.set_pin_direction(1, 0)
while True:
io.write_pin(17, 1)
time.sleep(0.5)
io.write_pin(17, 0)
time.sleep(0.5)Testprogramm erweitert, dass sowohl interne LED von RP2040 als auch externer Ausgang blinken
Code: Alles auswählen
from iopi_plus import IOPiPlus
from machine import Pin, PWM
import time
try:
io = IOPiPlus()
print("IO-Pi-Plus erfolgreich initialisiert")
# Warte kurz damit alles bereit ist
time.sleep(0.1)
# interne LED auf RP2040
led = PWM(Pin(22))
led.freq(1000)
HELL = 245 # ~96%
AUS = 255 # 100% (invertierte Logik)
# Pin 17 konfigurieren
io.set_pin_direction(17, 0) # Output
print("Pin 17 als Output konfiguriert")
# Sicherheitshalber erstmal ausschalten
io.write_pin(17, 0)
time.sleep(0.1)
print("Starte Blink-Programm...")
while True:
io.write_pin(17, 1)
led.duty_u16(int(HELL / 255 * 65535))
print("✓ LED AN")
time.sleep(1)
io.write_pin(17, 0)
led.duty_u16(int(AUS / 255 * 65535))
print("✗ LED AUS")
time.sleep(1)
except Exception as e:
print(f"Fehler: {e}")
# Programm läuft weiter aber ohne Fehlersetup-io.py
Code: Alles auswählen
# setup_io.py
# ------------------------------------
# Lädt die IOPiPlus-Klasse und erstellt ein Testobjekt
# für interaktive Eingabe in Thonny.
# ------------------------------------
from iopi_plus import IOPiPlus
from machine import Pin, PWM
import time
io = IOPiPlus()
print("IO-Pi-Plus erfolgreich initialisiert")
# Warte kurz damit alles bereit ist
time.sleep(0.1)
# interne LED auf RP2040
led = PWM(Pin(22))
led.freq(1000)
ON = 245 # ein / nicht so hell, 0 = sehr Hell (invertierte Logik)
OFF = 255 # aus / 255 = Aus
# Pin 17 konfigurieren
io.set_pin_direction(17, 0) # Output
print("Pin 17 als Output konfiguriert")
# Sicherheitshalber erstmal ausschalten
io.write_pin(17, 0)
led.duty_u16(int(ON / 255 * 65535))
time.sleep(0.1)
print("✅ IOPiPlus bereit – du kannst jetzt im REPL z. B. eingeben:")
print(" io.set_pin_direction(17, 0)")
print(" io.write_pin(17, 1)")
print(" io.read_pin(17)")
print(" led.duty_u16(int(ON / 255 * 65535))")
print(" led.duty_u16(int(OFF / 255 * 65535))") Code: Alles auswählen
>>> io.write_pin(17, 1)Code: Alles auswählen
>>> led.duty_u16(int(ON / 255 * 65535))