Hi,
wenn du meinen Fork mit einem Drehregler verwenden willst, lade dir bitte das aktuellste Release meines Forks herunter:
Dort findest du im Ordner „Affenbox“ die „Configuration.h“. In dieser sind alle Hardwarekonfigurationen definiert, die vor dem programmieren bekannt sein müssen. Unter anderem auch der Rotary Encoder (Drehregler).
Wenn du in der Datei runter scrollst, kommst du irgendwann zu folgendem Eintrag:
//===========================================================================
//============================= ROTARY_ENCODER ==============================
//===========================================================================
/**
*Gibt die Möglichkeit die Lautstärke der Affenbox über eine Drehencoder zu steuern.
*Hierzu wird extra Hardware benötigt.
*z.B.:
*KY-040 Drehwinkelgeber/Drehgeber
*https://www.az-delivery.de/products/drehimpulsgeber-modul?_pos=1&_sid=85bb51922&_ss=r
*/
//#define ROTARY_ENCODER
#if defined ROTARY_ENCODER
/*
*Angabe der Anschlusspins für den Data und Clock Pin des Drehgebers.
*Es kann jeder freie Pin geählt werden, auch Analoge.
*Ausgeschlossen sind folgende Pins: 4, 9, 10, A7, sowie bereits durch andere Funktionen vergeneben Pins.
*/
#define ROTARY_ENCODER_PIN_A A1
#define ROTARY_ENCODER_PIN_B A2
/*
*Anzahl erkannter Steps pro Klick des Drehgebers.
*Falls der Wert falsch eingestellt ist, werden eventuell mehr als ein Schritt pro Klick erkannt.
*/
#define ROTARY_ENCODER_STEPS 4
/*
*Nur verwenden, wenn es unbedingt nötig ist!
*Die Versorgung des Rotary Encoder kann auch von einem IO Pin kommen.
*/
//#define ROTARY_ENCODER_PIN_SUPPLY 8
/*
*Für genauere Debugausgaben im seriellen Monitor.
*!Achtung! Benötigt viel Speicher, eventuell müssen andere Funktionen temporär deaktivert werden!
*/
//#define ROTARY_ENCODER_PRINT
#endif
So sieht er aus, wenn du ihn herunter lädst. Damit der Encoder funktioniert, musst du die Zeile
//#define ROTARY_ENCODER
umschreiben in:
#define ROTARY_ENCODER
Das aktiviert den Encoder generell. In dem Block findest du auch die Pins die verwendet werden:
#define ROTARY_ENCODER_PIN_A A1
#define ROTARY_ENCODER_PIN_B A2
PinA & B sind auf dem Encoder mit CLK und DT beschriftet. hier ist in meinem Fork noch Anpassungsbedarf um das verständlicher zu machen. Probier bitte aus wie A & B zu CLK & DT passen.
Wenn du die vertauscht, dann ändert sich nur die Drehrichtung
Pin A1 & A2 sind auf der AiO Standardmäßig die <
/ BB
und >
/FB
Buttons. So sind sie auf dem mitgelieferten Buttonboard bzw, der AiO Platine beschriftet. Ich gehe davon aus das man nicht 5 Buttons und Rotary Encoder kombiniert.
Die anderen Parameter lass bitte mal unangetastet. Der Vollständigkeit erkläre ich das aber noch kurz:
#define ROTARY_ENCODER_STEPS 4
Die 4 definiert die Steps die der Encoder pro Click macht. Es kommen bei dem KY040 idR 4 impulse an pro Click. Wenn du wieder erwartens komisches Verhalten in den Schritten haben solltest, z.B. das die Lautstärke sich zu stark ändert, dann kannst du hiermit probieren das zu beheben.
//#define ROTARY_ENCODER_PIN_SUPPLY 8
Ist ein Hilfskonstrukt, falls einem an einer Klassik die 5V Pins ausgehen. Ist aber eigentlich nicht zu empfehlen!
//#define ROTARY_ENCODER_PRINT
Aktiviert Ausgaben in der Konsole, speziell zum Encoder. Dient der Fehlersuche und sollte nur zur Fehlersuche aktiviert sein. Die Ausgaben verbrauchen viel Programmspeicher.
Ich hoffe ich habe keine wichtigen Fragen offen gelassen.