← Alle Bauteile

[B16] Drehgeber (Rotary Encoder mit Taster)

Sensor

In 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

KategorieALLNET 40-in-1 / Eingabe
SchnittstelleDigital (Quadratur-Signal)
PinbelegungGND, +V, SW (Taster), DT, CLK
Anzahl Pins5
MessgroesseDrehrichtung + Knopf
BetriebsspannungNoneV – NoneV
DatenblattPDF 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;

 }