Käyttämällä pyörivää kooderia Raspberry Pi: n kanssa

Using a Rotary Encoder with the Raspberry Pi

Eräs kiertokooderi on anturi, joka muuntaa kiertoliikkeen digitaalisiksi signaaleiksi, mikä mahdollistaa tarkan ohjauksen sijainnin, nopeuden ja suunnan suhteen. Sitä käytetään yleisesti äänenvoimakkuuden hallinta, robotiikka, CNC -koneet ja valikon navigointi. Tämä opas näyttää kuinka asentaa ja käyttää pyörivää kooderia Raspberry Pi: llä Pythonin avulla.


Mitä tarvitset

  1. Raspberry Pi (Mikä tahansa malli, jolla on GPIO -tuki, esim. Pi 3, pi 4)
  2. Kiertokooderi (esim. KY-040)
  3. Leipälevy- ja hyppyjohdot
  4. Python asennettu Raspberry Pi

Vaihe 1: Ymmärtäminen kuinka pyörivä kooderi toimii

Eräs kiertokooderi on kaksi päälähtöä:

  • Clk (a) - Kellopulssisignaali
  • Dt (b) - Suuntasignaali
  • Sw (valinnainen) - Paina painiketta (käytetään vaihtoehtojen valitsemiseen)

Kierrettynä, CLK- ja DT -nastat tuottavat pulsseja. Näiden palkokasvien järjestys määrittää pyörimissuunta.


Vaihe 2: Kiertokooderin johdotus Raspberry Pi: hen

Kiertokooderi Raspberry Pi -tappi Funktio
VCC 3,3 V (nasta 1) Virtalähde
Hölynpöly Maa (nasta 6) Pohja
Clk (a) GPIO17 (nasta 11) Kellopulssi
Dt (b) GPIO27 (nasta 13) Suuntaviiva
SW (painike) GPIO22 (nasta 15) Painike Paina

Vaihe 3: Asenna vaadittavat kirjastot

Päivitä Raspberry Pi ja asenna RPI.GPIO Kirjasto GPIO -keskeytykseen.

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

Vaihe 4: Python -koodi luettaisiin kiertokooderin syöttö

Python -peruskoodi kiertoa varten

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

Lisää painike Paina havaitseminen

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

Vaihe 5: Rotary -kooderin sovellukset Raspberry Pi: llä

  1. Valikon navigointi - Selaa LCD- tai OLED -valikot.
  2. Äänenvoimakkuuden hallinta - Säädä äänenvoimakkuutta mediasovelluksissa.
  3. CNC -koneet - Tarkka liikkeenohjaus askelmoottorisovelluksissa.
  4. Robotti - Tunnista pyörien kierto nopeuden ja asennon seurannan saavuttamiseksi.
  5. Älykäs kodin automaatio - Käytä valitsimena eri kotitoiminnoissa.

Vianetsintä

  1. Kiertokooderi ei vastaa

    • Tarkistaa johdotus ja GPIO -nastatehtävät.
    • Varmistaa Pull-up-vastukset ovat käytössä (PUD_UP).
  2. Ohittavat vaiheet tai virheellinen liike

    • Lisätä delount -viive (time.sleep(0.01)).
    • Käyttää GPIO keskeyttää Kyselyn sijasta (GPIO.add_event_detect).
  3. Painike Paina ei havaittu

    • Varmistaa Painiketappi on kytketty oikein Gnd.
    • Lisää a Detoutumisaika 300 ms sisä- GPIO.add_event_detect.

Johtopäätös

Eräs kiertokooderi on monipuolinen syöttölaite Valikon navigointi, moottorin ohjaus ja asennon seuranta. Seuraamalla tätä opasta, voit helposti integroida pyörivän kooderin Raspberry Pi vuorovaikutteisiin projekteihin. 🚀

Jätä kommentti

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.