Der KY-040 Rotary Encoder (Drehimpulsgeber) mit Taste soll ausgelesen werden und beim Tastendruck soll der aktuelle Wert in das EEPROM des Arduinos abgelegt werden.
Er wird mit 5 Leitungen mit dem Arduino (Nano) verbunden:
Pin 6 zu CLK am KY-040
Pin 7 zu DT am KY-040
Pin 8 zu SW am KY-040
5V zu + am KY-040
GND zu GND am KY-040
Im setup Teil werden alle Anschlüsse als Input ausgewählt. Dann wird das EEPROM ausgelesen und mir diesem Wert gestartet.
In loop Teil wird zuerst überprüft ob der Taster gedrückt wurde, dann wird der Wert (pos) gespeichert und gewartet bis der Taster wieder los gelassen wird.
Dann wird der Drehimpulsgeber überprüft und der Wert (pos) angepaßt.
Hier das fertige Programm
// Den Rotary encoder KY-040 auslesen // Die Taste speichert den aktuellen Wert ins EEPROM // // Matthias Busse 10.2017 Version 1.0 #include <EEPROM.h> // standard Arduino Library int ra = 6; // Pin 6 zu CLK am KY-040 int rb = 7; // Pin 7 zu DT am KY-040 int sw = 8; // Pin 8 zu SW am KY-040 int pos, alast, aval; int eeadr=14; // Speicheradresse wird hier gewählt void setup() { pinMode (ra,INPUT); // Rotary Encoder A & B ist in pinMode (rb,INPUT); pinMode(sw, INPUT); // Schalter ist in digitalWrite(sw, HIGH); // interner Pull up Widerstand auf 5V EEPROM.get(eeadr, pos); alast = digitalRead(ra); Serial.begin (38400); Serial.print("Startpos: "); Serial.println(pos); } void loop() { if( digitalRead(sw) == 0) { // Taste gedrückt? EEPROM.put(eeadr, pos); Serial.print("geschrieben: "); Serial.println(pos); while (digitalRead(sw) == 0); // warten bis die Taste losgelassen wird } aval = digitalRead(ra); // Encoder gedreht? if (aval != alast){ // wenn gedreht if (digitalRead(rb) != aval) { pos++; } // rechts rum else { pos--; } // sonst links Serial.print("Pos: "); Serial.println(pos); } alast = aval; }
Und hier die Ausgabe in der Konsole:
Verwendet wurden:
Arduino Nano
KY-040 Rotary Encoder
Arduino Software 1.8.0
von Matthias Busse
Pingback: PE4302 Attentuator einstellen vom PC & Rotary Encoder, Ausgabe auf LCD Display | Shelvin – Elektronik ausprobiert und erläutert