مفتاح زر الضغط هو جهاز إدخال بسيط ولكنه فعال يستخدم غالبًا في مشاريع مثل بدء العمليات أو إيقافها ، أو التحكم في المصابيح ، أو إحداث الأحداث. سيمشي هذا البرنامج التعليمي من خلال توصيل مفتاح زر الضغط إلى Raspberry Pi ، وإعداد الأسلاك ، وكتابة نص Python لاكتشاف زر.
ماذا ستحتاج
- التوت بي (أي نموذج يحمل دعم GPIO ، على سبيل المثال ، PI 3 ، PI 4)
- اضغط على مفتاح زر
- الأسلاك الأسلاك والبلوز
- المقاوم (10kΩ للانسحاب)
- بيثون مثبت على التوت الخاص بك
- مكتبة GPIO للتحكم في دبابيس GPIO التوت PI
الخطوة 1: توصيل زر الضغط إلى Raspberry Pi
يعمل مفتاح زر الضغط إما عن طريق توصيل دبوس GPIO بحالة عالية (3.3 فولت) عند الضغط عليها أو سحبها إلى منخفض (0V) عند عدم الضغط عليها. سنستخدم المقاوم المنسول للتأكد من أن دبوس GPIO يقرأ منخفضًا عند عدم الضغط على الزر.
توصيل زر الضغط
دفع زر دبوس | التوت PI GPIO دبوس |
---|---|
دبوس واحد | GPIO17 (PIN 11) |
دبوس آخر | الأرض (دبوس 6) |
دبوس واحد | مقاوم 10KΩ للأرض |
إليك إعداد الأسلاك:
- قم بتوصيل محطة واحدة من زر الضغط على GPIO17 (دبوس 11).
- قم بتوصيل المحطة الأخرى لزر الضغط إلى أرضي (دبوس 6).
- قم بتوصيل مقاوم 10KΩ بين GPIO17 و أرضي ليكون بمثابة المقاوم المنسدلة.
هذا يضمن أنه عند الضغط على الزر ، يقرأ GPIO17 مرتفعًا (3.3 فولت) ، وعندما لا يتم الضغط عليه ، يتم سحب GPIO17 إلى منخفض (0V) بواسطة المقاوم.
الخطوة 2: تمكين دبابيس GPIO في Python
-
أولاً ، قم بتحديث قائمة حزمة Raspberry Pi الخاصة بك:
sudo apt update sudo apt upgrade -y
-
قم بتثبيت مكتبة Python GPIO المطلوبة (إن لم يكن مثبتًا بالفعل):
sudo apt install python3-rpi.gpio
-
استيراد المكتبة في نص Python الخاص بك:
import RPi.GPIO as GPIO import time
الخطوة 3: كتابة رمز بيثون
الآن ، دعنا نكتب نصًا بيثون لاكتشافه عند الضغط على الزر واتخاذ إجراء وفقًا لذلك.
مثال رمز بيثون
import RPi.GPIO as GPIO
import time
# Set up the GPIO mode and pin
GPIO.setmode(GPIO.BCM) # Use BCM numbering
button_pin = 17 # GPIO pin connected to the button
GPIO.setup(button_pin, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) # Set up pin with pull-down resistor
# Function to detect button press
def button_callback(channel):
print("Button was pressed!")
# Set up an event on the button pin
GPIO.add_event_detect(button_pin, GPIO.RISING, callback=button_callback, bouncetime=300)
try:
print("Press the button...")
while True:
# Keep the program running to wait for button press
time.sleep(0.1)
except KeyboardInterrupt:
print("Program exited")
finally:
GPIO.cleanup() # Clean up GPIO to ensure a clean exit
شرح الرمز:
- gpio.setmode (gpio.bcm): يعين ترقيم PIN GPIO إلى وضع BCM (Broadcom).
- gpio.setup (button_pin ، gpio.in ، pull_up_down = gpio.pud_down): قم بتكوين دبوس الزر كدخل مع مقاوم المنسدلة ، مما يعني أنه سيتم قراءة منخفضة عند عدم الضغط عليها.
-
gpio.add_event_detect (): يكتشف الحافة الصاعدة (زر الضغط) من دبوس GPIO ويؤدي إلى وظيفة رد الاتصال
button_callback
عندما يتم الضغط على الزر. - time.sleep (0.1): يحافظ على تشغيل البرنامج النصي ، مما يسمح له بالانتظار لضغط زر.
- gpio.cleanup (): ينظف إعدادات GPIO عند خروج البرنامج النصي.
الخطوة 4: اختبار الزر
-
قم بتشغيل نص Python الخاص بك:
python3 button.py
-
اضغط على زر الضغط ومراقبة الرسالة "تم الضغط على الزر!" في المحطة.
الخطوة 5: التطبيقات
فيما يلي بعض الأفكار لاستخدام زر الضغط في مشاريعك:
- السيطرة على LED: استخدم زر الضغط لتبديل LED وإيقاف تشغيله.
- تشغيل حدث: ابدأ أو إيقاف عملية (على سبيل المثال ، بدء تشغيل محرك ، أو تشغيل مروحة ، أو بدء برنامج نصي).
- جرس الباب الذكي: استخدم الزر كجرس الباب لإرسال إشعار إلى هاتفك.
- إدخال المستخدم: احصل على إدخال مستخدم بسيط لمشاريعك (مثل إجابة "نعم/لا").
استكشاف الأخطاء وإصلاحها
-
زر لم يتم اكتشافه:
- تأكد من أن الزر سلكي بشكل صحيح مع المقاوم المنسول.
- تحقق مزدوج إعداد PIN GPIO في الكود.
-
خطأ GPIO:
- تأكد من تثبيت مكتبة GPIO بشكل صحيح وأن أرقام PIN في البرنامج النصي الخاص بك صحيحة.
-
ترتد زر:
- إذا لاحظت اكتشاف ضغط زر متعددة ، يمكنك إضافة وقت تصيبه (
bouncetime=300
في البرنامج النصي) لتجنب الاكتشافات الخاطئة.
- إذا لاحظت اكتشاف ضغط زر متعددة ، يمكنك إضافة وقت تصيبه (
خاتمة
يعد استخدام زر الضغط مع Raspberry Pi وسيلة سهلة لإضافة وظائف الإدخال إلى مشاريعك. سواء أكان ذلك تبديل LEDs أو تشغيل الأحداث أو التفاعل مع الأجهزة الأخرى ، فإن هذا الإعداد البسيط يمكن أن يكون الأساس للعديد من التطبيقات المثيرة للاهتمام. تجربة مع دبابيس GPIO المختلفة وإعدادات Debounce لتناسب احتياجاتك!