Mein Ziel ist es, die Banana Pi in ein betehendes Gehäuse der Web-Radios OXX Vantage einzubauen. Dieses ging nach der Garantiezeit aus unerfindlichen Gründen kaputt – mit dem Drehknopf konnten keine Einstellungen mehr gemacht werden.
Einzige Möglichkeit wäre gewesen, das Ding nach England zu schicken und für die Reparatur zu zahlen. Aber so viel war es mir dann auch nicht wert.
Das Gehäuse finde ich recht hübsch und Platz genug für die Banana Pi sollte vorhanden sein.
Die Tasten an der Front sind in einer 3×3 Matrix angeordnet. Um GPIO Pins zu sparen ist meine Idee, aus einer alten USB-Tastatur die Elektronik zu verwenden. Diese sollte ohne Änderungen die Tastendrücke der Matrix abfragen können und Tastaturbefehle an die Banana Pi schicken.
Die 10. Taste (On/Off) ist rastend und nicht an die Tastatur-Matrix angeschlossen. Entweder werde ich sie für die Hintergrundbeleuchtung oder einem anderen Zweck , direkt an GPIO angeschlossen, benutzen.
Der Drehencoder selbst ist ok, was ich durch Messung überprüfen konnte.
Die Pins des Drehencoder habe ich an die GPIO Pins 12 und 13 angeschlossen und mit einem kleinen Testprogramm konnte der Drehencoder ohne großen Aufwand ausgelesen werden.
Zusammengefasst liefern diese Zeilen bereits das Ergebnis des Drehencoders
a = io.read(ENCODER_PIN_A) b = io.read(ENCODER_PIN_B) value = (a ^ b) | b << 1
Vielen Dank an Bob Rathbone.
Versuche ergaben, dass mit einer Abtastfrequenz von 2ms die besten Ergebnisse geliefert wurden. Der Schalter, der beim Drücken des Drehencoders betätigt wird, wird mit GPIO Pin 3 verbunden. Auch seine Abfrage gestaltet sich trivial und wird mit der entsrechenden Entprellroutine in die Drehencoder Abfrage mit eingebaut.