A rotációs kódoló egy olyan érzékelő, amely a forgási mozgást digitális jelekké alakítja, lehetővé téve a helyzet, a sebesség és az irány pontos ellenőrzését. Általában használják hangerőszabályzók, robotika, CNC gépek és menü navigáció- Ez az útmutató megmutatja, hogyan lehet beállítani és használni egy Rotary kódolót egy Raspberry Pi -vel a Python segítségével.
Mire lesz szüksége
- Málna PI (Bármely modell GPIO -támogatással, például PI 3, PI 4)
- Rotary kódoló (például KY-040)
- Kenyérlemez és jumper vezetékek
- Python telepítve a málna pi -n
1. lépés: A forgó kódoló működésének megértése
A rotációs kódoló Két fő kimenete van:
- CLK (A) - Óraimpulzusjel
- DT (B) - Irányjel
- SW (választható) - Nyomógomb (az opciók kiválasztására használják)
Ha elforgatják, a A CLK és a DT csapok impulzusokat generálnak- Ezen impulzusok sorrendje meghatározza a forgási irány.
2. lépés: A forgó kódolót a Raspberry Pi -hez vezetik be
Rotációs kódoló csap | Málna pi tű | Funkció |
---|---|---|
VCC | 3.3 V (1. érintkező) | Tápegység |
GND | Föld (6. érintkező) | Föld |
CLK (A) | GPIO17 (11. érintkező) | Óraimpulzus |
DT (B) | GPIO27 (13. érintkező) | Irányjel |
SW (gomb) | GPIO22 (15. érintkező) | Gombnyomás |
3. lépés: Telepítse a szükséges könyvtárakat
Frissítse a Raspberry Pi -t, és telepítse a Rpi.gpio Könyvtár a GPIO megszakítások kezelésére.
sudo apt update && sudo apt upgrade -y
sudo apt install python3-rpi.gpio
4. lépés: Python kód a Rotary kódoló bemenetének olvasásához
Alapvető python kód a forgás olvasásához
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()
A gombnyomás detektálásának hozzáadása
# 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)
5. lépés: A Rotary kódoló alkalmazása a Raspberry PI -vel
- Menü navigáció - Görgessen az LCD -n vagy az OLED menükön.
- Hangerőszabályzó - Állítsa be a kötetet a média alkalmazásokban.
- CNC gépek - Pontos mozgásvezérlés a léptetőmotoros alkalmazásokban.
- Robotika - Detektálja a kerék forgását a sebesség és a helyzetkövetés érdekében.
- Okos otthoni automatizálás - Használjon választóként a különböző otthoni funkciókhoz.
Hibaelhárítás
-
A rotációs kódoló nem válaszol
- Ellenőrizze a Huzalozás és GPIO PIN -hozzászólások.
- Biztosít A pull-up ellenállások engedélyezve vannak (
PUD_UP
).
-
A lépések kihagyása vagy a szokatlan mozgás
- Hozzáad elítélési késleltetés (
time.sleep(0.01)
). - Használat A GPIO megszakítja A szavazás helyett (
GPIO.add_event_detect
).
- Hozzáad elítélési késleltetés (
-
A gombnyomás alatt a gombnyomás nem észlelve
- Biztosít A gombos tű megfelelően van csatlakoztatva Gnd -hez.
- Adj hozzá egy 300 ms elszámolási ideje -ben
GPIO.add_event_detect
.
Következtetés
A rotációs kódoló sokoldalú bemeneti eszköz Menü navigáció, motorvezérlés és pozíciókövetés- Az útmutató követésével könnyen integrálhatja a forgó kódolót a Málna PI Interaktív projektekhez. 🚀