FREE SHIPPING ON ALL ORDERS OVER £20

60 DAY HASSLE-FREE RETURNS

Verwenden eines Rotationscodierers mit dem Raspberry Pi

Using a Rotary Encoder with the Raspberry Pi

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

  1. Raspberry Pi (Jedes Modell mit GPIO -Unterstützung, z. B. PI 3, PI 4)
  2. Rotary Encoder (z. B. KY-040)
  3. Breadboard- und Jumper -Drähte
  4. 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

  1. Menünavigation - Scrollen Sie durch LCD- oder OLED -Menüs.
  2. Lautstärkekontrolle - Passen Sie das Volumen in Medienanwendungen an.
  3. CNC -Maschinen - Präzise Bewegungssteuerung in Schrittmotoranwendungen.
  4. Robotik - Die Raddrehung für Geschwindigkeit und Positionsverfolgung erkennen.
  5. Smart Home Automation - Verwenden Sie als Selektor für verschiedene Heimfunktionen.

Fehlerbehebung

  1. Rotary Encoder antwortet nicht

    • Überprüfen Sie die Kabel- und GPIO -PIN -Zuordnungen.
    • Sicherstellen Pull-up-Widerstände sind aktiviert (PUD_UP).
  2. 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).
  3. 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. 🚀

Notice an Issue? Have a Suggestion?
If you encounter a problem or have an idea for a new feature, let us know! Report a problem or request a feature here.

Hinterlasse einen Kommentar