Bemerkung
Hallo und willkommen in der SunFounder Raspberry Pi & Arduino & ESP32 Enthusiasten-Gemeinschaft auf Facebook! Tauchen Sie tiefer ein in die Welt von Raspberry Pi, Arduino und ESP32 mit anderen Enthusiasten.
Warum beitreten?
Expertenunterstützung: Lösen Sie Nachverkaufsprobleme und technische Herausforderungen mit Hilfe unserer Gemeinschaft und unseres Teams.
Lernen & Teilen: Tauschen Sie Tipps und Anleitungen aus, um Ihre Fähigkeiten zu verbessern.
Exklusive Vorschauen: Erhalten Sie frühzeitigen Zugang zu neuen Produktankündigungen und exklusiven Einblicken.
Spezialrabatte: Genießen Sie exklusive Rabatte auf unsere neuesten Produkte.
Festliche Aktionen und Gewinnspiele: Nehmen Sie an Gewinnspielen und Feiertagsaktionen teil.
👉 Sind Sie bereit, mit uns zu erkunden und zu erschaffen? Klicken Sie auf [hier] und treten Sie heute bei!
Lektion 17: Drehgeber-Modul
In dieser Lektion lernen Sie, wie Sie einen Drehgeber mit einem Arduino Uno überwachen und steuern. Wir werden das Verfolgen der Drehrichtung (im Uhrzeigersinn oder gegen den Uhrzeigersinn), das Zählen der Umdrehungen und das Erkennen von Tastendrücken auf dem Drehgebermodul behandeln. Dieses Projekt ist ideal für diejenigen, die ihr Verständnis von Drehgebern und Ein-/Ausgabeoperationen mit Arduino vertiefen möchten und bietet praktische Einblicke in physische Steuerungssysteme.
Benötigte Komponenten
Für dieses Projekt benötigen wir die folgenden Komponenten.
Es ist definitiv praktisch, ein komplettes Kit zu kaufen. Hier ist der Link:
Name |
ITEMS IN THIS KIT |
LINK |
|---|---|---|
Universal Maker Sensor Kit |
94 |
Sie können die Komponenten auch separat über die folgenden Links kaufen.
Component Introduction |
Purchase Link |
|---|---|
Arduino UNO R3 or R4 |
|
- |
Arduino UNO R3 or R4
Verkabelung
Code
Codeanalyse
Setup und Initialisierung
void setup() { pinMode(CLK, INPUT); pinMode(DT, INPUT); pinMode(SW, INPUT_PULLUP); Serial.begin(9600); lastStateCLK = digitalRead(CLK); }
In der Setup-Funktion werden die digitalen Pins, die mit den CLK- und DT-Anschlüssen des Encoders verbunden sind, als Eingänge definiert. Der SW-Pin, der mit dem Taster verbunden ist, wird als Eingang mit internem Pull-up-Widerstand definiert. Dadurch entfällt die Notwendigkeit eines externen Pull-up-Widerstands. Die serielle Kommunikation wird mit einer Baudrate von 9600 gestartet, um die Datenvisualisierung auf dem seriellen Monitor zu ermöglichen. Der Anfangszustand des CLK-Pins wird gelesen und gespeichert.
Hauptschleife: Lesen des Encoders und des Tasterzustands
void loop() { currentStateCLK = digitalRead(CLK); if (currentStateCLK != lastStateCLK && currentStateCLK == 1) { if (digitalRead(DT) != currentStateCLK) { counter--; currentDir = "CCW"; } else { counter++; currentDir = "CW"; } Serial.print("Direction: "); Serial.print(currentDir); Serial.print(" | Counter: "); Serial.println(counter); } lastStateCLK = currentStateCLK; int btnState = digitalRead(SW); if (btnState == LOW) { if (millis() - lastButtonPress > 50) { Serial.println("Button pressed!"); } lastButtonPress = millis(); } delay(1); }
In der Loop-Funktion liest das Programm kontinuierlich den aktuellen Zustand des CLK-Pins. Wenn sich der Zustand ändert, bedeutet dies, dass eine Drehung stattgefunden hat. Die Drehrichtung wird durch Vergleich der Zustände der CLK- und DT-Pins bestimmt. Wenn sie unterschiedlich sind, bedeutet dies eine Drehung gegen den Uhrzeigersinn (CCW); andernfalls erfolgt die Drehung im Uhrzeigersinn (CW). Der Zähler des Encoders wird entsprechend erhöht oder verringert. Diese Information wird dann an den seriellen Monitor gesendet.
Der Zustand des Tasters wird vom SW-Pin gelesen. Wenn er LOW (gedrückt) ist, wird ein Entprellmechanismus implementiert, indem die seit dem letzten Tastendruck vergangene Zeit überprüft wird. Wenn mehr als 50 Millisekunden vergangen sind, wird dies als gültiger Druck betrachtet und eine Nachricht an den seriellen Monitor gesendet. Das delay(1) am Ende hilft beim Entprellen.