- HTML 94.6%
- Python 5.3%
- Shell 0.1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| config | ||
| effects | ||
| ft232h | ||
| media | ||
| public | ||
| .env | ||
| .gitignore | ||
| .gitlab-ci.yml | ||
| generate_docapi.sh | ||
| LICENSE | ||
| lightpipe.py | ||
| logo.png | ||
| logo_small.png | ||
| mypy_check.sh | ||
| paintbag.py | ||
| Pipfile | ||
| Pipfile.lock | ||
| README.md | ||
| run.py | ||
| simulation.py | ||
| test_regions.py | ||
LightPipe Treiber
Dieses Projekt beinhaltet Software für LightPipe. Der Treiber wird zum Betrieb für Lightpipes benötigt.
Die ausführliche Dokumentation befindet sich in einem eigenen Repository: documentation
Der Treiber kann zum Beispiel auf einem Raspberry Pi mit angeschlossenem LightPipe betrieben werden.
Installation
Das Projekt ist in Pyhton3.11+ geschrieben.
Vorraussetzungen
- Hardware (oder Simulation) bereit haben
- python version 3.11 oder neuer verwenden
- Bei älteren python-Versionen (z.B. Linux Mint) ist tomli compatibility zu beachten.
- So läuft es auch auf < 3.11.
- Ohne tomllib oder tomli kann in lightpipe.py und simulation.py die Zeile
import tomllibauskommentiert werden. So kann keine config-Datei eingelesen werden, aber die library mit default-Werten verwendet werden.
- Je nach
serial:- RasperryPi: apa-Treiber nach dortiger README installieren.
- Simulation: tk; je nach Betriebsystem heißt das zu installierende Paket anders.
- FT232H: Dokumentation lesen!
Ausführliche und restliche Anleitung steht in der Dokumentation.
Treiber
- Treiber clonen
git clone https://git.cccgoe.de/lightpipe/driver.git - Setup entsprechend konfigurieren (siehe Konfiguration)
Effekte
Optional die Effekte aus dem Effekt-Repository lightpipe/effects runterladen und nach effects/ kopieren.
Oder selber drauf los programmieren.
Alternativ kann auch das experimentelle lightflut betrieben werden.
Konfiguration
Die Konfiguration soll per Konfigurationsdatei config/<name>.toml gemacht werden.
Die default-Datei ist config/config.toml.
Sollte die angegebene Datei nicht existieren, werden default-Werte verwendet (welche auch in config/config_example.toml stehen).
Außerdem wird für alle nicht explizit gesetzten Werte der default-Wert angenommen.
In der Konfigurationsdatei müssen die gleichnamigen Werte in der entsprechenden Sektion angegeben werden. Eine ausführliche Anleitung steht in der Dokumentation.
Usage
Der Treiber lässt sich von Effekten direkt importieren oder besser über run.py verwenden.
Effekte
Im Treiber sind unter effects/ zwei simple Beispieleffekte enthalten.
Diese sollten einen guten Startpunkt über das Schreiben eigener Effekte und die Verwendung des Treibers zeigen.
Weitere Effekte liegen im Repository lightpipe/effects.
Effekte müssen eine Methode effect(lp, pb) haben.
pb ist optional.
Dabei ist lp ein Lightpipe-Objekt und pb die statische paintbag-Klasse.
Die Methode effect beinhaltet den vollständigen Effekt und wird von run.py passend aufgerufen.
run.py
Um Effekte auszuführen ist es am einfachsten, wenn run.py verwendet wird.
Alle auszuführenden Effekte müssen in effects/ liegen.
Dann kann einfach run.py ausgeführt werden; hier sind Beispiele:
./run.py
python run.py
python3 run.py
./run.py effects/
./run.py effects/g
./run.py effects/gradients
./run.py effects/gradients.py
./run.py effects/gradients.py effects/tra
run.py nimmt als Argumente beliebig viele Datei-patterns entgegen, die eine allow-list darstellen.
Alle Patterns werden autovervollständigt zu passenden python-Dateien.
Dabei müssen alle angegebenen patterns mit effects beginnen, da dies der Ordner ist, in dem alle Effekte liegen.
Ist kein pattern angegeben, werden alle Effekte in effects/ nacheinander ausgeführt.
Die Reihenfolge in der die Effekte ausgeführt werden ist arbiträr.
Außerdem lässt sich mit run.py der Name der zu verwendenden Konfiguration angeben.
Beispiele mit Konfigurationsdatei config/meine_config.toml:
./run.py -c config/meine_config.toml
./run.py -c config/meine_config.toml effects/gradients
./run.py effects/gradi -c config/meine_config.toml
API
Die Features von lightpipe.py und paintbag.py sind unter public/ dokumentiert.
Eines Tages in der Zukunft wird es auch als Website online verfügbar sein.
Die API wird mit pdoc direkt aus dem Quelltext generiert.
Bilder
Bilder gibts bald in der Dokumentation.

