Gamit ang isang rotary encoder na may Raspberry Pi

Using a Rotary Encoder with the Raspberry Pi

Rotary encoder ay isang sensor na nagko -convert ng pag -ikot ng paggalaw sa mga digital signal, na nagpapahintulot sa tumpak na kontrol sa posisyon, bilis, at direksyon. Ito ay karaniwang ginagamit sa Mga kontrol sa dami, robotics, CNC machine, at pag -navigate sa menu. Ang gabay na ito ay magpapakita sa iyo kung paano mag -set up at gumamit ng isang rotary encoder na may isang raspberry pi gamit ang Python.


Ano ang kakailanganin mo

  1. Raspberry Pi (Anumang modelo na may suporta sa GPIO, hal., PI 3, PI 4)
  2. Rotary Encoder (hal., KY-040)
  3. Mga wire ng tinapay at jumper
  4. Naka -install ang Python Sa Raspberry Pi

Hakbang 1: Pag -unawa kung paano gumagana ang isang rotary encoder

A Rotary encoder May dalawang pangunahing output:

  • CLK (A) - signal ng pulso ng orasan
  • DT (b) - signal ng direksyon
  • SW (Opsyonal) - Push Button (ginamit para sa pagpili ng mga pagpipilian)

Kapag pinaikot, ang Ang mga pin ng CLK at DT ay bumubuo ng mga pulso. Ang pagkakasunud -sunod ng mga pulses na ito ay tumutukoy sa direksyon ng pag -ikot.


Hakbang 2: Ang mga kable ng rotary encoder sa Raspberry Pi

Rotary encoder pin Raspberry Pi Pin Function
VCC 3.3v (pin 1) Power Supply
Gnd Ground (pin 6) Lupa
CLK (A) Gpio17 (pin 11) Clock pulse
DT (b) GPIO27 (pin 13) Signal ng direksyon
SW (Button) GPIO22 (pin 15) Button Press

Hakbang 3: I -install ang mga kinakailangang aklatan

I -update ang iyong Raspberry Pi at i -install ang Rpi.gpio Library para sa paghawak ng GPIO ay nagagambala.

sudo apt update && sudo apt upgrade -y
sudo apt install python3-rpi.gpio

Hakbang 4: Python code upang mabasa ang rotary encoder input

Pangunahing Python code upang mabasa ang pag -ikot

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()

Pagdaragdag ng pindutan ng pindutin ang pindutan

# 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)

Hakbang 5: Mga Aplikasyon ng isang Rotary Encoder na may Raspberry Pi

  1. Pag -navigate sa menu - Mag -scroll sa pamamagitan ng LCD o OLED menu.
  2. Kontrol ng dami - Ayusin ang dami sa mga aplikasyon ng media.
  3. CNC machine - tumpak na kontrol ng paggalaw sa mga aplikasyon ng motor ng stepper.
  4. Robotics - Makita ang pag -ikot ng gulong para sa bilis at pagsubaybay sa posisyon.
  5. Smart Home Automation - Gumamit bilang isang tagapili para sa iba't ibang mga pag -andar sa bahay.

Pag -aayos

  1. Rotary encoder na hindi tumutugon

    • Suriin ang mga kable at mga takdang gpio pin.
    • Matiyak pinagana ang mga pull-up resistors (PUD_UP).
  2. Mga hakbang sa paglaktaw o maling paggalaw

    • Idagdag Debounce pagkaantala (time.sleep(0.01)).
    • Gumamit Nagambala ang GPIO sa halip na botohan (GPIO.add_event_detect).
  3. Hindi napansin ang pindutan ng pindutan

    • Matiyak Ang pindutan ng pin ay maayos na konektado sa gnd.
    • Magdagdag ng a Debounce oras ng 300ms sa GPIO.add_event_detect.

Konklusyon

A Rotary encoder ay isang maraming nalalaman aparato ng pag -input para sa Pag -navigate sa menu, kontrol sa motor, at pagsubaybay sa posisyon. Sa pamamagitan ng pagsunod sa gabay na ito, madali mong isama ang isang rotary encoder sa iyong Raspberry Pi para sa mga interactive na proyekto. 🚀

Mag -iwan ng komento

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.