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/16 18:34] – [Environment anlegen] torsten.roehl | projekt:python_projekt_gpio [2026/02/24 07:40] (aktuell) – torsten.roehl | ||
|---|---|---|---|
| Zeile 10: | Zeile 10: | ||
| ====== Überblick ====== | ====== Überblick ====== | ||
| * Hardware ansteuern | * Hardware ansteuern | ||
| - | * Programmstruktur | + | * Environment |
| - | * Projekt: LED mit Python | + | * Minimalprogramm |
| - | * Projekt: | + | * [[project: |
| ---- | ---- | ||
| Zeile 51: | 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 | ==== Verwendete Hardware | ||
| Zeile 94: | Zeile 102: | ||
| ++++ | ++++ | ||
| - | + | ===== Environment | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | + | ||
| - | ===== Programmstruktur anlegen ===== | + | |
| - | + | ||
| - | ==== Programmstruktur ==== | + | |
| - | Folgende Programmstruktur wird verwendet. | + | |
| - | + | ||
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | * '' | + | |
| - | + | ||
| - | <code bash> | + | |
| - | gpio_led/ | + | |
| - | ├── gpio_env | + | |
| - | └── src | + | |
| - | ├── core | + | |
| - | │ | + | |
| - | │ | + | |
| - | │ | + | |
| - | └── ledcontrol.py | + | |
| - | </ | + | |
| - | + | ||
| - | + | ||
| - | Lege alle Verzeichnisse so an, wie oben dargestellt. | + | |
| - | Alle Dateien – bis auf '' | + | |
| - | + | ||
| - | Die '' | + | |
| - | + | ||
| - | <code bash> | + | |
| - | touch __init__.py | + | |
| - | </ | + | |
| - | + | ||
| - | <note tip> | + | |
| - | {{ : | + | |
| - | </ | + | |
| - | ==== Environment anlegen | + | |
| <WRAP center round box 80%> | <WRAP center round box 80%> | ||
| **Aufgabe: Anlegen einer Python-Environment** | **Aufgabe: Anlegen einer Python-Environment** | ||
| Lege eine Umgebung | Lege eine Umgebung | ||
| - | * '' | + | * '' |
| - | Hierfür muss der Ordner '' | + | Hierfür muss der Ordner '' |
| </ | </ | ||
| Zeile 152: | Zeile 118: | ||
| </ | </ | ||
| + | <note important> | ||
| + | **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 ==== | ==== Pakete & Bibliotheken installieren ==== | ||
| + | |||
| + | |||
| + | |||
| Systemweit GPIO-Unterstützung über '' | Systemweit GPIO-Unterstützung über '' | ||
| Zeile 160: | Zeile 136: | ||
| </ | </ | ||
| - | Jetzt die **ENV** aktivieren und '' | + | Jetzt die **ENV** aktivieren |
| <code bash> | <code bash> | ||
| - | source ~/devel/gpio_led/gpio_env/ | + | source ~/devel/projects/course_env/ |
| pip install RPi.GPIO | pip install RPi.GPIO | ||
| </ | </ | ||
| + | ===== Minimal Programm ===== | ||
| + | Dieses Programm ('' | ||
| + | Pin und Befehl werden im **ADJUST AREA** angepasst. | ||
| + | '' | ||
| - | ===== Projekt: LED mit Python ===== | ||
| - | ==== Hardware ==== | ||
| - | ==== Quellcode (Sourcecode) ==== | ||
| - | Der **Sourcecode** besteht aus drei Dateien: das eigentliche Programm **%%ledcontrol.py%%** sowie die Dateien im Hintergrund (im Verzeichnis **%%core%%**), | ||
| - | === gpio_hw.py === | ||
| - | <code python | + | <code python |
| - | import RPi.GPIO as GPIO | + | |
| - | PIN = 17 | + | # |
| - | GPIO.setmode(GPIO.BCM) | + | import RPi.GPIO as GPIO |
| - | GPIO.setup(PIN, GPIO.OUT) | + | |
| - | def on(): | + | # START ADJUST AREA |
| - | | + | PIN = 17 # PIN wählen |
| - | + | VALUE = GPIO.HIGH | |
| - | def off(): | + | # END ADJUST AREA |
| - | GPIO.output(PIN, | + | |
| - | + | ||
| - | def status(): | + | |
| - | return GPIO.input(PIN) | + | |
| - | + | ||
| - | def cleanup(): | + | |
| - | GPIO.cleanup() | + | |
| - | </code> | + | |
| - | + | ||
| - | === logic.py === | + | |
| - | + | ||
| - | <code python logic.py> | + | |
| - | from core import gpio_hw | + | |
| - | + | ||
| - | def turn_on(): | + | |
| - | gpio_hw.on() | + | |
| - | return " | + | |
| - | + | ||
| - | def turn_off(): | + | |
| - | gpio_hw.off() | + | |
| - | return " | + | |
| - | + | ||
| - | def get_status(): | + | |
| - | return " | + | |
| - | </ | + | |
| - | + | ||
| - | + | ||
| - | + | ||
| - | === ledcontrol.py === | + | |
| - | + | ||
| - | <code python ledcontrol.py> | + | |
| - | #!/ | + | |
| - | + | ||
| - | from core import logic | + | |
| - | from core import gpio_hw | + | |
| 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__ == " | ||
| Zeile 246: | Zeile 177: | ||
| </ | </ | ||
| - | + | === Programm ausführen | |
| - | ==== Testen des Programms | + | |
| - | + | ||
| - | Bevor mit dem Projekt weitergearbeitet wird, muss überprüft werden, ob das LED-Programm korrekt gestartet werden kann. | + | |
| - | + | ||
| - | Dazu müssen folgende Voraussetzungen erfüllt sein: | + | |
| - | + | ||
| - | * die Python-Environment ist aktiviert, | + | |
| - | * die Programmstruktur wurde korrekt angelegt, | + | |
| - | * der Abschnitt **„Pakete & Bibliotheken installieren“** wurde vollständig gelesen und umgesetzt. | + | |
| - | + | ||
| - | Anschließend wird in den Quellcode-Ordner gewechselt und das Programm gestartet: | + | |
| <code bash> | <code bash> | ||
| - | cd ~/ | + | chmod 775 led_simple.py |
| - | ./ledcontrol.py | + | ./led_simple.py # Script ausführen! |
| </ | </ | ||
| + | Hierfür muss das Programm ausführbar gemacht werden ('' | ||
| - | Bei erfolgreichem Start erscheint die Eingabeaufforderung von '' | + | ===== Projekt: LED mit Python |
| - | + | * [[project: | |
| - | < | + | |
| - | + | ||
| - | === Verhalten bei Eingaben testen | + | |
| - | + | ||
| - | * **on** → die LED wird eingeschaltet und „on“ ausgegeben. | + | |
| - | * **off** → die LED wird ausgeschaltet und „off“ ausgegeben. | + | |
| - | * **status** → der aktuelle Zustand wird angezeigt. | + | |
| - | * unbekannte Eingabe → das Programm bleibt aktiv und fordert erneut zur Eingabe auf. | + | |
| - | + | ||
| - | Wenn das Verhalten wie beschrieben ist, läuft das Programm korrekt und die Einrichtung war erfolgreich. | + | |
| - | + | ||
| - | + | ||
| - | <note tip> | + | |
| - | Falls beim Start des Programms die Fehlermeldung | + | |
| - | + | ||
| - | <color # | + | |
| - | + | ||
| - | erscheint, wurde der Abschnitt **„Pakete & Bibliotheken installieren“** vermutlich nicht vollständig beachtet. Bitte diesen Abschnitt erneut sorgfältig durchgehen. | + | |
| - | </ | + | |
| - | + | ||
projekt/python_projekt_gpio.1771266847.txt.gz · Zuletzt geändert: von torsten.roehl
