Inhaltsverzeichnis:

Tutorial von Drehgeber mit Arduino - Gunook
Tutorial von Drehgeber mit Arduino - Gunook

Video: Tutorial von Drehgeber mit Arduino - Gunook

Video: Tutorial von Drehgeber mit Arduino - Gunook
Video: How to use MicroPython on Your Arduino? 2024, November
Anonim
Tutorial von Drehgeber mit Arduino
Tutorial von Drehgeber mit Arduino

Der 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 in der Regel als mechanischer oder robotischer Bewegungsmonitor kann auch zur Menüauswahl auf dem Display verwendet werden. Der Drehgeber hat zwei Ausgänge, damit er zwischen negativer (CW) und positiver (CCW) Drehung unterscheiden kann und hat auch eine einzige Taste.

Schritt 1: Impulsfluss des Drehgebers

Impulsfluss des Drehgebers
Impulsfluss des Drehgebers

Der vom folgenden Drehgeber erzeugte Impulsfluss ist wie im Bild oben.

Schritt 2: Pinbelegung des Drehgebers

Pinbelegung des Drehgebers
Pinbelegung des Drehgebers

Erläuterung:

  • GND GND
  • + +5V
  • SW-Taste des Drehgebers, wenn gedrückt
  • 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: Schaltplan

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

Schritt 4: Code

Code
Code

Im folgenden Tutorial wird PIN 2 von Arduino Uno als Interrupt verwendet, während PIN 3 nur als regulärer Eingang 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 Schleife () { 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); aufrechtzuerhalten. Void doEncoder () { if (digitalRead (encoder0PinA) == digitalRead (encoder0PinB)) { Encoder0Pos ++; aufrechtzuerhalten. Sonst { Encoder0Pos--; } valRotary = Encoder0Pos/2.5; }

In Zeile 10 der obigen Skizze wird der Interrupt von Pin 2 Arduino Uno aktiviert. In der Funktion "doEncoder" wird 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

Der ValRotary-Wert ist der Wert der Anzahl der Schritte, die ausgeführt wurden. Der ValRotary-Wert wird aus dem Messwert des Drehsensor-Encoders geteilt durch 2,5 erhalten. Aus dem Test ergibt sich ein Wert von 2,5, da ein Schritt des Drehgebers 1 überschreiten kann, also dividiere durch 2,5 für seinen Wert entsprechend dem pro Schritt und auch der Addition der Leseverzögerung.

Während auf Zeile 19 - 25 ein Programm steht, um festzustellen, ob der Drehgeber CW oder CCW ist. Die Erläuterung der Zeilen 19 - 25 ist, wenn die aktuelle Drehcodierer-Auslesung größer ist als die vorherigen Drehdaten, die dann als CW ausgedrückt werden. Ist der aktuelle Messwert hingegen kleiner als der vorherige Messwert, wird er als CCW angegeben.

Schritt 6: Ausgabe

Ausgabe
Ausgabe

1 = der Startknopfwert des Rotary, wenn es nicht gedrückt wurde

Empfohlen: