projekt:python_projekt_gpio
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende Überarbeitung | ||
| projekt:python_projekt_gpio [2026/02/09 10:16] – torsten.roehl | projekt:python_projekt_gpio [2026/02/24 07:40] (aktuell) – torsten.roehl | ||
|---|---|---|---|
| Zeile 6: | Zeile 6: | ||
| Ein Raspberry Pi kann LEDs, Sensoren, Taster oder Displays direkt über seine GPIO-Pins ansteuern. Diese Pins sind jedoch empfindlich, | Ein Raspberry Pi kann LEDs, Sensoren, Taster oder Displays direkt über seine GPIO-Pins ansteuern. Diese Pins sind jedoch empfindlich, | ||
| + | {{ : | ||
| ====== Überblick ====== | ====== Überblick ====== | ||
| * Hardware ansteuern | * Hardware ansteuern | ||
| - | * Programmstruktur | + | * Environment |
| - | * Projekt: LED mit Python | + | * Minimalprogramm |
| - | * Projekt: | + | * [[project: |
| ---- | ---- | ||
| Zeile 50: | Zeile 52: | ||
| | Raspberry Pi Layout und Orientierung. | | | Raspberry Pi Layout und Orientierung. | | ||
| |{{ : | |{{ : | ||
| - | |< | + | |< |
| - | * **GND** | + | * <color # |
| - | * <color # | + | * Masse: |
| - | * <color # | + | |
| + | * <color # | ||
| + | * Versorgungsspannung: | ||
| + | * Masse: **GND** | ||
| + | | ||
| - | In diesem Kurs werden die oben aufgelisteten Pins verwendet! | ||
| </ | </ | ||
| + | |{{ : | ||
| + | |Adapterplatine zur Nutzung auf einem Steckbrett.| | ||
| + | |{{ : | ||
| + | |Alle Bauteile LED-Ampel und Temperatursensor die im Kurs verwendet werden sind angeschlossen| | ||
| + | ==== Verwendete Hardware | ||
| + | * Hardware-Anbindung LED-Ampel-Modul (R/G/Y + GND) | ||
| - | ===== Programmstruktur anlegen ===== | + | Dieses LED-Modul besitzt vier Anschlüsse: |
| - | === Programmstruktur === | + | Wir verwenden folgende GPIO-Nummern. Falls andere gewählt werden muss der Quellcode entsprechend angepasst werden. |
| - | Folgende Programmstruktur wird verwendet. | + | |
| - | * '' | + | ^ Modul ^ Raspberry Pi GPIO ^ |
| - | | + | | GND |
| - | * '' | + | | **<color # |
| - | * '' | + | | **<color # |
| + | | **<color # | ||
| - | <code bash> | ||
| - | gpio_led/ | ||
| - | ├── gpio_env | ||
| - | └── src | ||
| - | ├── core | ||
| - | │ | ||
| - | │ | ||
| - | │ | ||
| - | └── ledcontrol.py | ||
| - | </ | ||
| - | Lege alle Verzeichnisse so an, wie oben dargestellt. | ||
| - | Alle Dateien – bis auf '' | ||
| - | Die '' | + | ++++ Technisches Prinzip | |
| - | <code bash> | + | Auf dem Modul sind bereits Vorwiderstände (Kennzeichnung „331“ = 330 Ohm) verbaut. |
| - | touch __init__.py | + | Es ist daher **kein zusätzlicher Widerstand erforderlich**. |
| - | </ | + | |
| - | <note tip>**Bevor weitergearbeitet werden kann, sollte die Programmstruktur überprüft werden.** | + | |
| - | {{ : | + | * **OFF** GPIO-Pin wird auf **LOW (0)** gesetzt, um die jeweilige LED auszuschalten. |
| - | </ | + | |
| - | === Pakete & Bibliotheken installieren === | + | < |
| - | Systemweit GPIO-Unterstützung über '' | + | |
| - | <code bash> | + | Strom bei 3,3 V: |
| - | sudo apt install python3-rpi.gpio | + | |
| - | </ | + | |
| - | Jetzt die **ENV** aktivieren und '' | + | (3,3 V − ca. 2,0 V LED) / 330 Ω ≈ 4 mA |
| + | |||
| + | Dies ist für den Raspberry Pi unkritisch. | ||
| + | </ | ||
| - | <code bash> | + | ++++ |
| - | source ~/ | + | ===== Environment anlegen ===== |
| - | pip install RPi.GPIO | + | <WRAP center round box 80%> |
| - | </code> | + | **Aufgabe: Anlegen einer Python-Environment** |
| + | Lege eine Umgebung | ||
| + | * '' | ||
| + | Hierfür muss der Ordner '' | ||
| - | ===== Projekt: LED mit Python ===== | + | </ |
| - | ==== Quellcode (Sourcecode) ==== | + | <note tip> |
| - | Der Sourcecode besteht aus drei Dateien: das eigentliche Programm %%ledcontrol.py%% sowie die Dateien im Hintergrund (im Verzeichnis %%core%%), die für die Programmlogik | + | Das Anlegen |
| - | === gpio_hw.py === | + | [[python_python-umgebung_env_einrichten_vorbereitungen_fuer_projekte_schaffen|Python ENV]] |
| + | ausführlich | ||
| + | </ | ||
| - | < | + | <note important> |
| - | import RPi.GPIO as GPIO | + | **Wechsle in die Environment** |
| + | Die Programmierung erfolgt nun immer mit der gewählten Umgebung! | ||
| + | < | ||
| + | source ~/ | ||
| + | </ | ||
| + | * Für alle **Python-Projekte** im Kurs verwenden wir diese eine Umgebung: **course_env**! | ||
| + | </ | ||
| + | ==== Pakete & Bibliotheken installieren ==== | ||
| - | PIN = 17 | ||
| - | GPIO.setmode(GPIO.BCM) | ||
| - | GPIO.setup(PIN, | ||
| - | def on(): | + | Systemweit GPIO-Unterstützung über '' |
| - | GPIO.output(PIN, | + | |
| - | def off(): | + | <code bash> |
| - | GPIO.output(PIN, GPIO.LOW) | + | sudo apt install python3-rpi.gpio |
| - | + | ||
| - | def status(): | + | |
| - | return GPIO.input(PIN) | + | |
| - | + | ||
| - | def cleanup(): | + | |
| - | GPIO.cleanup() | + | |
| </ | </ | ||
| - | === logic.py === | + | Jetzt die **ENV** aktivieren (falls noch nicht geschehen) und dann erst '' |
| - | < | + | < |
| - | from core import gpio_hw | + | source ~/ |
| - | + | pip install RPi.GPIO | |
| - | def turn_on(): | + | |
| - | gpio_hw.on() | + | |
| - | return " | + | |
| - | + | ||
| - | def turn_off(): | + | |
| - | gpio_hw.off() | + | |
| - | return " | + | |
| - | + | ||
| - | def get_status(): | + | |
| - | | + | |
| </ | </ | ||
| + | ===== Minimal Programm ===== | ||
| + | Dieses Programm ('' | ||
| + | Pin und Befehl werden im **ADJUST AREA** angepasst. | ||
| + | '' | ||
| - | === ledcontrol.py === | + | <code python |
| - | <code python ledcontrol.py> | ||
| # | # | ||
| - | from core import | + | import |
| - | from core import gpio_hw | + | |
| + | # START ADJUST AREA | ||
| + | PIN = 17 # PIN wählen | ||
| + | VALUE = GPIO.HIGH | ||
| + | # END ADJUST AREA | ||
| def main(): | def main(): | ||
| - | print(" | ||
| - | | + | |
| - | while True: | + | |
| - | cmd = input("on / off / status > ").strip() | + | GPIO.setup(PIN, GPIO.OUT) # Als Ausgabe PIN festlegen |
| - | if cmd == " | + | GPIO.output(PIN, VALUE) # Output setzen! |
| - | print(logic.turn_on()) | + | |
| - | elif cmd == " | + | |
| - | print(logic.turn_off()) | + | |
| - | elif cmd == " | + | |
| - | print(logic.get_status()) | + | |
| - | | + | |
| - | pass | + | |
| - | | + | |
| - | gpio_hw.cleanup() | + | |
| if __name__ == " | if __name__ == " | ||
| main() | main() | ||
| </ | </ | ||
| + | |||
| + | === Programm ausführen === | ||
| + | <code bash> | ||
| + | chmod 775 led_simple.py | ||
| + | ./ | ||
| + | </ | ||
| + | Hierfür muss das Programm ausführbar gemacht werden ('' | ||
| + | |||
| + | ===== Projekt: LED mit Python ===== | ||
| + | * [[project: | ||
projekt/python_projekt_gpio.1770632219.txt.gz · Zuletzt geändert: von torsten.roehl
