[B16] Drehgeber (Rotary Encoder mit Taster)
SensorIn dieser Schaltung wird ein Drehgeber mit Druckknopf ausgelesen. Ausgabe der Werte erfolgt über die serielle Schnittstelle.
Tipps:
Fuer schnelles Drehen Interrupt-basiert lesen (attachInterrupt).
Technische Daten
| Kategorie | ALLNET 40-in-1 / Eingabe |
|---|---|
| Schnittstelle | Digital (Quadratur-Signal) |
| Pinbelegung | GND, +V, SW (Taster), DT, CLK |
| Anzahl Pins | 5 |
| Messgroesse | Drehrichtung + Knopf |
| Betriebsspannung | NoneV – NoneV |
| Datenblatt | PDF oeffnen |
Anschluss
Arduino Uno R3
Pins:
GND=GND, 5V=+V, D5=SW, D6=DT, D7=CLK
Hinweise: Quadratur: aus CLK + DT-Reihenfolge ergibt sich die Drehrichtung.
Codebeispiele
ALLNET B16 — Beispiel aus Anleitung Anfaenger
Beispielsketch aus der ALLNET-Anleitung fuer das Modul B16 ([B16] Drehgeber (Rotary Encoder mit Taster)). Vor dem Hochladen den verwendeten Pin pruefen!
// ALLNET Rotary Encoder/Kodierter Drehschalter B16
// Information http://www.allnet.de
/* Read Quadrature Encoder
* Connect Encoder to Pins encoder0PinA,
encoder0PinB, and +5V.
*/
int val;
int encoder0PinA = 7;
int encoder0PinB = 6;
int encoder0PinC = 5;
int encoder0Pos = 0;
int encoder0PinALast = LOW;
int n = LOW;
void setup() {
pinMode (encoder0PinA,INPUT);
pinMode (encoder0PinB,INPUT);
pinMode (encoder0PinC,INPUT);
Serial.begin (9600);
}
void loop() {
n = digitalRead(encoder0PinA);
if ((encoder0PinALast == LOW) && (n == HIGH)) {
if (digitalRead(encoder0PinB) == LOW) {
encoder0Pos--;
} else {
encoder0Pos++;
}
Serial.print ("Encoder: ");
Serial.print (encoder0Pos);
Serial.print (", ");
int button = digitalRead(encoder0PinC);
Serial.print ("Button pressed: ");
Serial.print (button);
Serial.println (" ");
}
encoder0PinALast = n;
}