باستخدام مشفر دوار مع التوت PI

Using a Rotary Encoder with the Raspberry Pi

أ تشفير الدوران هو مستشعر يحول الحركة الدورانية إلى إشارات رقمية ، مما يسمح بالتحكم الدقيق في الموضع والسرعة والاتجاه. يستخدم عادة في ضوابط الصوت ، الروبوتات ، آلات CNC ، والتنقل في القائمة. سيوضح لك هذا الدليل كيفية إعداد واستخدام تشفير دوار مع Raspberry Pi باستخدام Python.


ماذا ستحتاج

  1. التوت بي (أي نموذج يحمل دعم GPIO ، على سبيل المثال ، PI 3 ، PI 4)
  2. الترميز الدوار (على سبيل المثال ، KY-040)
  3. الأسلاك الأسلاك والبلوز
  4. بيثون مثبت على التوت PI

الخطوة 1: فهم كيفية عمل المشفر الدوار

أ تشفير الدوران له مخرجان رئيسيان:

  • CLK (أ) - إشارة نبض الساعة
  • DT (ب) - إشارة الاتجاه
  • جنوب غرب (خياري) - زر الضغط (يستخدم لتحديد الخيارات)

عندما تدور ، و تولد دبابيس CLK و DT نبضات. يحدد ترتيب هذه البقول اتجاه الدوران.


الخطوة 2: توصيل المشفر الدوار إلى Raspberry Pi

دبوس التشفير الدوار التوت بي دبوس وظيفة
VCC 3.3V (دبوس 1) مزود الطاقة
GND الأرض (دبوس 6) أرضي
CLK (أ) GPIO17 (PIN 11) نبض الساعة
DT (ب) GPIO27 (PIN 13) إشارة الاتجاه
SW (زر) GPIO22 (دبوس 15) اضغط على زر

الخطوة 3: تثبيت المكتبات المطلوبة

قم بتحديث Raspberry Pi وتثبيت ملف rpi.gpio مكتبة للتعامل مع المقاطعات GPIO.

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

الخطوة 4: رمز Python لقراءة مدخلات التشفير الدوار

رمز بيثون الأساسي لقراءة الدوران

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

إضافة زر اضغط على الكشف

# 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: تطبيقات الترميز الدوار مع Raspberry Pi

  1. التنقل في القائمة - قم بالتمرير عبر قوائم LCD أو OLED.
  2. التحكم في مستوى الصوت - ضبط مستوى الصوت في تطبيقات الوسائط.
  3. آلات CNC - التحكم الدقيق للحركة في تطبيقات السهول.
  4. الروبوتات - اكتشف دوران العجلات للسرعة وتتبع الموضع.
  5. أتمتة المنزل الذكية - استخدم كمحدد لوظائف المنزل المختلفة.

استكشاف الأخطاء وإصلاحها

  1. المشفر الدوار لا يستجيب

    • تحقق من واجبات الأسلاك و GPIO PIN.
    • يضمن يتم تمكين مقاومات السحب (PUD_UP).
  2. تخطي الخطوات أو الحركة غير المنتظمة

    • يضيف Debounce تأخير (time.sleep(0.01)).
    • يستخدم مقاطعات GPIO بدلا من الاقتراع (GPIO.add_event_detect).
  3. زر اضغط لم يتم اكتشافه

    • يضمن دبوس الزر متصل بشكل صحيح إلى GND.
    • إضافة أ وقت Debounce 300 مللي ثانية في GPIO.add_event_detect.

خاتمة

أ تشفير الدوران هو جهاز إدخال متعدد الاستخدامات ل التنقل في القائمة ، والتحكم في المحرك ، وتتبع الموضع. باتباع هذا الدليل ، يمكنك بسهولة دمج تشفير دوار مع التوت بي للمشاريع التفاعلية. 🚀

اترك تعليقًا

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.