Tutorial des Drehgebers mit Arduino

Drehgeber ist eine elektronische Komponente, die Bewegung und Position beim Drehen überwachen kann. Der Drehgeber verwendet optische Sensoren, die Impulse erzeugen können, wenn sich der Drehgeber dreht. Die Anwendung des Drehgebers üblicherweise als mechanischer oder robotergesteuerter Bewegungsmonitor kann auch zur Menüauswahl auf dem Display verwendet werden. Der Drehgeber verfügt über zwei Ausgänge, sodass zwischen negativer (CW) und positiver (CCW) Drehung unterschieden werden kann, und verfügt über eine einzige Taste.

Schritt 1: Impulsfluss des Drehgebers

Der vom folgenden Drehgeber erzeugte Impulsfluss entspricht dem obigen Bild.

Schritt 2: Pinbelegung des Drehgebers

Erläuterung:

  • GND -> GND
  • + -> + 5V
  • SW -> Taste des Drehgebers beim Drücken
  • DT -> Daten
  • CLK -> Daten 2

Einer der DT- oder CLK-Pins muss mit dem Interrupt-Fuß von Arduino Uno verbunden sein, oder sowohl DT als auch CLK sind mit dem Interrupt-Pin verbunden.

Schritt 3: Schema

  • GND à GND Arduino Uno
  • + à + 5V Arduino Uno
  • SW à PIN 4 Arduino Uno
  • DT à PIN 3 Arduino Uno
  • CLK à PIN2 Arduino Uno

Schritt 4: Code

Im folgenden Tutorial wird PIN 2 von Arduino Uno als Interrupt verwendet, während PIN 3 nur als reguläre Eingabe verwendet wird.

#define encoder0PinA 2
#define encoder0PinB 3 #define encoder0Btn 4 int encoder0Pos = 0; void setup () {Serial.begin (9600); pinMode (encoder0PinA, INPUT_PULLUP); pinMode (encoder0PinB, INPUT_PULLUP); pinMode (encoder0Btn, INPUT_PULLUP); attachInterrupt (0, doEncoder, CHANGE); } int valRotary, lastValRotary; void loop () {int btn = digitalRead (encoder0Btn); Serial.print (btn); Serial.print (""); Serial.print (valRotary); if (valRotary> lastValRotary) {Serial.print ("CW"); } if (valRotary {

Serial.print ("CCW"); } lastValRotary = valRotary; Serial.println (""); Verzögerung (250); } void doEncoder () {if (digitalRead (encoder0PinA) == digitalRead (encoder0PinB)) {encoder0Pos ++; } else {encoder0Pos--; } valRotary = encoder0Pos / 2.5; }}

In Zeile 10 der obigen Skizze wird der Interrupt von Pin 2 Arduino Uno aktiviert. Im "doEncoder" wird die Funktion aus dem Drehgeber berechnet. Wenn der Wert von DT und CLK (Pin-Interrupt von Arduino Uno) gleich ist, wird die Variable "encoder0Pos" inkrementiert / hinzugefügt. Zusätzlich zu dieser Bedingung wird die Variable "encoder0Pos" dekrementiert.

Schritt 5: Erklärung

ValRotary-Wert ist der Wert der Anzahl der ausgeführten Schritte. Der ValRotary-Wert ergibt sich aus dem Lesewert des Drehgebersensors geteilt durch 2, 5. Aus dem Test wird ein Wert von 2, 5 erhalten, da ein Schritt des Drehgebers 1 überschreiten kann. Teilen Sie ihn daher durch 2, 5 für seinen Wert entsprechend dem Schritt und auch durch Hinzufügen der Leseverzögerung.

In Zeile 19 - 25 befindet sich ein Programm zur Bestimmung, ob der Drehgeber CW oder CCW ist. Die Erklärung der Zeilen 19 - 25 ist, wenn die aktuelle Drehgeberanzeige größer ist als die vorherigen Drehdaten, die dann als CW ausgedrückt werden. Wenn der aktuelle Messwert kleiner als der vorherige Messwert ist, wird er als CCW angegeben.

Schritt 6: Ausgabe

1 = der Startknopfwert des Drehers, wenn er nicht gedrückt wurde

Ähnlicher Artikel