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