A Rotary Encoder ist ein Sensor, der Rotationsbewegung in digitale Signale umwandelt und eine präzise Steuerung über Position, Geschwindigkeit und Richtung ermöglicht. Es wird üblicherweise in verwendet Volumensteuerung, Robotik, CNC -Maschinen und Menünavigation. In dieser Anleitung wird angezeigt, wie Sie einen Rotary -Encoder mit einem Raspberry -Pi mit Python einrichten und verwenden.
Was Sie brauchen werden
- Raspberry Pi (Jedes Modell mit GPIO -Unterstützung, z. B. PI 3, PI 4)
- Rotary Encoder (z. B. KY-040)
- Breadboard- und Jumper -Drähte
- Python installiert Auf dem Raspberry Pi
Schritt 1: Verstehen Sie, wie ein Rotationscodierer funktioniert
A Rotary Encoder hat zwei Hauptausgänge:
- Clk (a) - Taktpulssignal
- Dt (b) - Richtungssignal
- SW (optional) - Drucktaste (zur Auswahl der Optionen)
Beim Drehen die CLK- und DT -Stifte erzeugen Impulse. Die Reihenfolge dieser Impulse bestimmt die Rotationsrichtung.
Schritt 2: Verkabelung des Rotary -Encoders mit Raspberry Pi
Rotary -Encoder -Stift | Raspberry Pi Pin | Funktion |
---|---|---|
VCC | 3,3 V (Pin 1) | Stromversorgung |
GND | Masse (Pin 6) | Boden |
Clk (a) | Gpio17 (Pin 11) | Uhrpuls |
Dt (b) | Gpio27 (Pin 13) | Richtungssignal |
SW (Knopf) | Gpio22 (Pin 15) | Taste drücken |
Schritt 3: Installieren Sie die erforderlichen Bibliotheken
Aktualisieren Sie Ihren Raspberry Pi und installieren Sie die Rpi.gpio Bibliothek zum Umgang mit GPIO -Interrupts.
sudo apt update && sudo apt upgrade -y
sudo apt install python3-rpi.gpio
Schritt 4: Python -Code zum Lesen von Rotary Encoder -Eingabe
Basic Python Code zum Lesen der Rotation
import RPi.GPIO as GPIO
import time
# Define GPIO pins
CLK = 17
DT = 27
counter = 0
last_state = None
# Setup GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setup(CLK, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(DT, GPIO.IN, pull_up_down=GPIO.PUD_UP)
# Read initial state
last_state = GPIO.input(CLK)
try:
while True:
current_state = GPIO.input(CLK)
if current_state != last_state:
if GPIO.input(DT) != current_state:
counter += 1
direction = "Clockwise"
else:
counter -= 1
direction = "Counterclockwise"
print(f"Position: {counter}, Direction: {direction}")
last_state = current_state
time.sleep(0.01) # Debounce delay
except KeyboardInterrupt:
print("Exiting...")
finally:
GPIO.cleanup()
Hinzufügen von Taste Drücken Sie die Erkennung
# Define button pin
SW = 22
GPIO.setup(SW, GPIO.IN, pull_up_down=GPIO.PUD_UP)
def button_pressed(channel):
print("Button Pressed!")
# Add event detection for button press
GPIO.add_event_detect(SW, GPIO.FALLING, callback=button_pressed, bouncetime=300)
Schritt 5: Anwendungen eines Rotary -Encoders mit Raspberry Pi
- Menünavigation - Scrollen Sie durch LCD- oder OLED -Menüs.
- Lautstärkekontrolle - Passen Sie das Volumen in Medienanwendungen an.
- CNC -Maschinen - Präzise Bewegungssteuerung in Schrittmotoranwendungen.
- Robotik - Die Raddrehung für Geschwindigkeit und Positionsverfolgung erkennen.
- Smart Home Automation - Verwenden Sie als Selektor für verschiedene Heimfunktionen.
Fehlerbehebung
-
Rotary Encoder antwortet nicht
- Überprüfen Sie die Kabel- und GPIO -PIN -Zuordnungen.
- Sicherstellen Pull-up-Widerstände sind aktiviert (
PUD_UP
).
-
Schritte überspringen oder unregelmäßige Bewegungen
- Hinzufügen Verzögerung entlarven (
time.sleep(0.01)
). - Verwenden GPIO unterbricht anstatt zu befragen (
GPIO.add_event_detect
).
- Hinzufügen Verzögerung entlarven (
-
Taste Drücken Sie nicht erkannt
- Sicherstellen Die Knopfstift ist ordnungsgemäß verbunden zu gnd.
- Fügen Sie a hinzu Entlieben Sie die Zeit von 300 ms In
GPIO.add_event_detect
.
Abschluss
A Rotary Encoder ist ein vielseitiges Eingabegerät für Menünavigation, Motorsteuerung und Positionsverfolgung. Wenn Sie diesem Handbuch folgen, können Sie leicht einen Rotary -Encoder in Ihre integrieren Raspberry Pi Für interaktive Projekte. 🚀