Getestet mit:Raspberry Pi B+ und 2; Kivy 0.7
Voraussetzungen:Raspberry Pi mit Raspbian Jessie und Internetverbindung (siehe Schritte 1-7 in der Einfuehrung)
Bauteile:RPi B+ oder 2, SD-Karte und Stromversorgung
Linux-Festrechner
offizieller RPi Touchscreen
3-Farb-LED und Jumperkabel
0

Kivy auf dem Raspberry Pi: ein Touchscreen Interface zum Einstellen der Lichtfarbe

Sag Hallo zu Kivy, einem wunderbaren Python Framework fuer Touchscreen Apps. Kivy wurde urspruenglich fuer Android entwickelt und freundlicherweise fuer den Raspberry Pi adaptiert. Mit Kivy koennen hervorragende Touchscreen-Anwendungen in kuerzester Zeit entwickelt werden.

Kivy Installation
Downloade und brenne es auf eine SD-Karte. Alternativ kann Kivy auch manuell installiert werden (beispielsweise um Kivy auf einem Raspberry Pi 3 laufen zu lassen).
Der Benutzername nach der automatischen Installation ist sysop und nicht pi– das ist wichtig fuer das Einloggen mit ssh. Das zugehoerige Passwort ist posys. Bestimme die IP-Adresse beispielsweise mit dem Angry IP Scanner.

Update: Keyerror beheben
Kivy 1.9.1 hat einen kleinen Fehler: es stuerzt manchmal ab und meldet einen Keyerror. Hier ist ein Patch um das zu umgehen.

Aufbau
Richte den Touchscreen nach der Anleitung des HerstellersAnleitung des Herstellers ein.
Verbinde die 3-Farb-LED: der Anschluss der roten LED wird mit Pin 11, der gruenen mit Pin 12, der blauen mit Pin 13 und der Masse mit Pin 6 des Raspberry Pi in der BOARD-Nummerierung verbunden.

Ausfuehren des Scriptes
Nachdem alles verbunden ist, lade das Script herunter und starte es mit

Auf dem offiziellen Touchscreen sieht das Programm so aus:

Kivy Touchscreen Interface

Kivy Touchscreen Interface

Code Erklaerung
Gluecklicherweise hat Kivy eine eigene Sprache zum layouten von Touch-Anwendungen, die KV Sprache. Das Layout kann in speraten .kv-Dateien gespeichert oder mit dem Builder eingebunden werden. Hier ist das vollstaendige Layout der Anwendung in KV:

Das bedeutet: mache eine vertikale Box und fuege drei modifizierte Schieberegler (Slider) hinzu. Die Slider haben eine variable mycolor mit ihrer jeweiligen Farbe. Wenn sich die Slider-Position aendert, wird die eingebaute Funktion on_value aufgerufen, die dann die eigene Funktion set_color mit der neuen Slider-Position aufruft.

Fuer eigene Touch Layouts werden ueberlicherweise Widgets des Kivy Frameworks abgeleitet und ergaenzt. Die abgeleiteten Widgets werden dann wie oben gezeigt in KV integriert.
Hier wird der Kivy-Slider abgeleitet und um Voreinstellungen fuer Minimum, Maximum und den Startwert ergaenzt:

Und hier ist die eigene Funktion, mit der die Farbe in Bezug auf die Slider-Position aktualisiert wird (value ist die Sliderposition und kommt von on_value):

Die LED-Farbe wird mit Software-PWM geaendert. Die LED-Pins werden fuer sPWM praepariert mit

Dies erzeugt ein sPWM mit 100 Werten und startet mit 50, ebenso wie die Slider.

Vollstaendiges Script
Klicke auf Full Script, um den ganzen Code anzuzeigen.

Beispielvideo

Eine semitransparente LED anstelle der hier verwendeten transparenten LED wuerde gemischte Farben geben…

Ein paar gute Quellen
Kivy Introduction
Kivy Blog
Google Groups
Kivy Layouts Documentation

Links
Kivy Download: http://kivypie.mitako.eu/kivy-download.html
Kivy manuall installation: https://github.com/mrichardson23/rpi-kivy-screen/blob/master/README.md
Fernzugriff mit SSH: http://www.knight-of-pi.org/de/fernzugriff-auf-den-raspberry-pi-mit-ssh/
Angry IP Scanner usage: http://www.knight-of-pi.org/de/ips-scannen-mit-angry-ip-scanner
Anleitung fuer den offiziellen Touchscreen: https://thepihut.com/blogs/raspberry-pi-tutorials/45295044-raspberry-pi-7-touch-screen-assembly-guide
Kivy layouten mit .kv: https://kivy.org/docs/guide/lang.html
Software PWM tutorial: http://www.knight-of-pi.org/einfaches-dc-motortreiberboard-fuer-den-raspberry-pi-mit-dem-ic-l293-und-software-pulse-width-modulation/
Karanbalkar Kivy Blog: http://karanbalkar.com/tag/kivy/
Kivy Google Groups: https://groups.google.com/forum/embed/?place=forum/kivy-users#!forum/kivy-users
Kivy Layouts Dokumentation: https://kivy.org/docs/gettingstarted/layouts.html
Anleitung fuer den offiziellen Touchscreen: https://thepihut.com/blogs/raspberry-pi-tutorials/45295044-raspberry-pi-7-touch-screen-assembly-guide
Tutorial: Ein Disk Image auf eine SD-Karte brennen: http://www.knight-of-pi.org/de/installation/
Patch: Kivy Keyerror: http://www.knight-of-pi.org/de/kivy-on-the-raspberry-pi-bugfix-prevent-keyerror-y-crash/
Opensourceforu ueber Kivy: http://opensourceforu.com/2016/02/developing-python-based-android-apps-using-kivy/

Knight of Pi

Johannes Bergs aka Knight of Pi. Diploma in Bioinformatics, some Webdesign and Python coding then. Living in the beautiful city of Vienna.

Kommentar

Time limit is exhausted. Please reload CAPTCHA.