Anzeige

Arduino und Encoder – Schaltplan, Erklärung, Code

Arduino Encoder: Rotary Encoder* oder auch Dreh-Impulsgeber sehen aus wie Potentiometer. Man kann sie aber unendlich drehen. Manche Leute nennen sie deshalb auch Endlos-Potentiometer. Technisch funktionieren sie aber ganz anders.

Im Innern eines Encoders (Impulsgebers) sind zwei Taster integriert. Sie schalten um einen halben Klick Phasenverschoben.

Detektiert man auf dem Kanal 1 (also vom ersten Taster) einen Wechsel von LOW zu HIGH prüft man, ob Kanal 2. Ist dieser LOW, wurde in die eine Richtung gedreht, ist er HIGH, wurde er in die andere Richtung gedreht.

Arduino Encoder – Uhrzeigersinn
Arduino Encoder – Gegen Uhrzeigersinn

Arduino Encoder – Schaltplan

Arduino Encoder (Drehimpulsgeber) Schaltplan

Vom GND des Arduinos in den mittleren Anschluss des Encoders, die äußeren Anschlüsse sind mit den Arduino-Pins 2 und 3 verbunden.

Code (Einfache Version)

int encoderPinA = 2;
int encoderPinB = 3;
int encoderPos = 0;
int encoderPinALast = LOW;
int encoderPinANow = LOW;

void setup() {
  pinMode (encoderPinA, INPUT_PULLUP);
  pinMode (encoderPinB, INPUT_PULLUP);
  Serial.begin (115200);
}

void loop() {
  encoderPinANow = digitalRead(encoderPinA);
  if ((encoderPinALast == HIGH) && (encoderPinANow == LOW)) {
    if (digitalRead(encoderPinB) == HIGH) {
      encoderPos++;
    } else {
      encoderPos--;
    }
    Serial.println(encoderPos);
  }
  encoderPinALast = encoderPinANow;
}

Encoder mit Programm-Bibliothek

Eine elegante und wesentlich einfachere Herangehensweise ist die Verwendung eine Programm-Bibliothek (Library). Die Encoder-Bibliothek von Paul Stoffregen ist super funktional. Um sie zu installieren klicke in der Arduino-Software auf Sketch>Bibliothek einbinden>Bibliotheken verwalten und trage im Suchfeld Encoder ein. In der Liste findest du die Bibliothek Encoder by Paul Stoffregen. Installiere die aktuelle Version. Im Menü Datei>Beispiele>Encoder findest du Beispiel-Programme wie dieses:

/* Encoder Library - Basic Example
 * http://www.pjrc.com/teensy/td_libs_Encoder.html
 *
 * This example code is in the public domain.
 */

#include <Encoder.h>

// Change these two numbers to the pins connected to your encoder.
//   Best Performance: both pins have interrupt capability
//   Good Performance: only the first pin has interrupt capability
//   Low Performance:  neither pin has interrupt capability
Encoder myEnc(2, 3);
//   avoid using pins with LEDs attached

void setup() {
  Serial.begin(115200);
  Serial.println("Basic Encoder Test:");
}

long oldPosition  = -999;

void loop() {
  long newPosition = myEnc.read();
  if (newPosition != oldPosition) {
    oldPosition = newPosition;
    Serial.println(newPosition);
  }
}

Die Bibliothek übernimmt nun das ganze Encoder-Handling für dich und gibt einfach den aktuellen Wert aus.

Wenn dir das Projekt gefallen hat und du von weiteren interessanten Projekten inspiriert werden willst, sieh dir doch mal mein neues E-Book an!

Darin findest du die beliebtesten Arduino-Projekte von StartHardware. Jedes Projekt umfasst Schaltplan, Bauteile, Beschreibung und Code. Für Einsteiger gibt es ein Arduino-Schnellstart-Kapitel und einen kompakten Programmierkurs. Zusätzlich findest du Zwischenkapitel mit Expertenwissen zu den Komponenten, die verwendet werden. Alle Code-Beispiele gibt es natürlich als Download.

Weitere Informationen findest du auf der Produktseite. Klicke jetzt auf den Button, um Details anzusehen.


Jetzt bist du gefragt: Welches Projekt würdest du gern auf dieser Seite finden? *


6 thoughts on “Arduino und Encoder – Schaltplan, Erklärung, Code

  1. Hallo Stefan,
    ist weist du wie man auch andere Pins beim Arduino (MEGA) verwenden kann. Da einfach Umstecken und andere Pins im Code eingeben nicht geht es muss scheinbar etwas mit Pin 2&3 zu tun haben.
    Brauche für mein Projekt 2 Encoder.
    Würde mich sehr freuen danke für den super Artikel.

    1. Hi Matthias, das ist echt komisch. Beim Mega sollten mit der Encoder-Library auf jeden Fall folgende Pins funktionieren: 2, 3, 18, 19, 20, 21 Probier mal die anderen aus. Liebe Grüße Stefan

  2. Hallo Stefan,
    besten Dank für deine / Ihre super Information.
    Mir ist noch aufgefallen, dass beim einfachen Arduino Encoder – Beispiel die Angabe der PINs verrutscht ist. Im Code und Bild sind es PIN 2 & 3. In der Beschreibung dazwischen 3 & 4.
    Grüße

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

 

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.