[ad_1]
إذا كنت قد استمتعت بجعل مصابيح LED تومض على Raspberry Pi ، فانتظر حتى تسمع عن التحكم في سطوعها! في هذا الدليل ، نعمل مع زوج من الأزرار لضبط سطوع الصمام على Raspberry Pi.
بدء أول مشروع Raspberry Pi الخاص بك؟ إليك كيفية تثبيت نظام Raspberry Pi OS بسرعة على جهازك.
ماذا يفعل PWM لمصباح LED
PWM ، أو Pulse Width Modulation ، هي طريقة تقلل بشكل مصطنع من خرج الجهد لدبابيس Raspberry Pi GPIO (إدخال / إخراج للأغراض العامة). إنه مصطنع ، لأنك لا تقلل الجهد حقًا وتقوم فقط بتشغيله وإيقافه بسرعة كبيرة بحيث يصبح الجهد الإجمالي أقل من الجهد الحقيقي الذي تقوم بتطبيقه عليه.
بالنسبة إلى الصمام الثنائي الباعث للضوء أو الصمام الثنائي الباعث للضوء ، فإن زيادة الجهد الكلي تجعله يتألق أكثر ، بينما يؤدي تقليله إلى جعله باهتًا. ولكن نظرًا لأن Raspberry Pi ليس له خرج تناظري ، فإننا نستخدم PWM للتحكم في سطوع LED.
ماذا ستحتاج
- 2 أزرار انضغاطية
- 3 مقاومات (250-550Ω ستعمل. استخدم تصنيفًا أقل إذا كان مؤشر LED داكنًا جدًا.)
- 1 LED (أي لون)
- اللوح
- أسلاك العبور
- Raspberry Pi (أي طراز باستثناء Pi Pico)
كيفية استخدام PWM للتحكم في سطوع LED على Raspberry Pi
في هذا الدليل ، نستخدم زرين لجعل إضاءة LED أكثر إشراقًا أو باهتة مع PWM. يؤدي الضغط على الزر “أكثر إشراقًا” إلى زيادة خرج PWM ، بينما يؤدي الضغط على زر “باهتة” إلى تقليله.
تحضير الدائرة
- لنبدأ بمصباح LED. على اللوح ، ضع مؤشر LED وقم بتوصيل المقاوم بجانب واحد. لا يهم الجانب الذي يوضع فيه المقاوم.
- قم بتوصيل العبور بجانب الكاثود الخاص به. سيشير هذا إلى رقم 11 في Raspberry Pi. أضف وصلة مرور أخرى تؤدي إلى السكة الزرقاء على لوح التجارب ، ثم أضف وصلة مرور أخرى من تلك السكة الزرقاء إلى رقم 9 على Raspberry Pi ، وهو GND.
ملحوظة: للعثور على رقم التعريف الشخصي الصحيح على Raspberry Pi ، أمسك اللوحة بحيث يكون درج دبوس GPIO على اليمين. يجب أن يكون الدبوس العلوي الأيسر هو الدبوس 1 ، ويجب أن يكون السن 2 جهة اليمين ، ويجب أن يكون السن 3 أدناه.
- ستحتاج إلى بناء الأزرار الانضغاطية. ضع الأزرار الانضغاطية على لوح التجارب وأضف المقاوم إلى ساق واحدة من كل زر ضغط. يجب أن يؤدي الجانب الآخر من المقاوم إلى السكة الزرقاء للوح.
تلميح: هل تريد معرفة المزيد عن الأزرار الانضغاطية؟ لدينا دليل كامل مخصص لتوضيح كيفية استخدام الأزرار الانضغاطية مع دبابيس Raspberry Pi GPIO.
- أضف أسلاك توصيل في اتصال متوازي مع المقاوم وزر الضغط. قم بتوصيل الجانب الآخر من هذه الأطراف بالدبابيس 13 (الزر “أكثر سطوعًا”) و 15 (زر “باهتة”).
- استخدم سلك توصيل لتوصيل الأزرار الانضغاطية بالجانب مع السكة الحمراء للوح.
- قم بتوصيل السكة الحمراء بمصدر 3.3 فولت على Raspberry Pi ، مثل الدبوس 1.
إذا كانت Python هي لغة البرمجة المفضلة لديك ، فتعلم كيفية تثبيت إصدارات Python المتعددة وإدارتها في Linux.
تحضير المدونة
باستخدام أداة تحرير التعليمات البرمجية المفضلة لديك ، قم بإنشاء ملف جديد وحفظه باسم “rpi-lcdpwm.py.”
- ابدأ بالرمز أدناه ، والذي يمنحك طريقتين لاستيراد الوحدات على Python: الأولى تستورد ملف
RPi.GPIO
وحدة ويتيح لك الاتصال به فقطGPIO
، ويستورد الثاني فقط ملفsleep()
وظيفة من مجملtime
وحدة.
import RPi.GPIO as GPIO from time import sleep
- حدد أرقام الدبوس لتسهيل تغيير الدبابيس في حالة تغيير رأيك لاحقًا.
ledPin = 11 brightenButton = 13 dimButton = 15
- اختياري: أضف السطر
GPIO.setwarnings(False)
بحيث يمكنك تجنب رسالة تحذير GPIO عند بدء تشغيل البرنامج النصي لاحقًا.
- اضبط طريقة اختيار الدبوس.
BOARD
يعد اختيارًا جيدًا للمبتدئين ، حيث يسهل البحث عن المسامير دون الحاجة إلى الرجوع إلى pinout. الطريقة الأخرى هيBCM
، والتي تعني “Broadcom”. يستخدم هذا أرقام Broadcom المخصصة لكل دبوس ، والتي قد تختلف بناءً على طراز Raspberry Pi الخاص بك.
- قم بتعيين دبابيس GPIO كمدخل أو إخراج. نحن نتنازل
ledPin
كدبوس إخراج وسيبدأ دائمًا حالته كـLOW
. تعيين السطرين التاليينbrightenButton
وdimButton
كدبابيس الإدخال التي تستمع إلى دفعات الزر. يجب أيضًا تعيين هذه كـGPIO.PUD_DOWN
لتعيينها على أنها تستخدم المقاومات المنسدلة.
GPIO.setup(ledPin, GPIO.OUT, initial=GPIO.LOW) GPIO.setup(brightenButton, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.setup(dimButton, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
- دعنا نعلن عن PWM.
pwmLEDPin
هو متغير يسهل كتابتهGPIO.PWM(ledPin, 100)
في وقت لاحق ، و.start(0)
يبدأ الأمر عملية PWM. يمكننا الآن تغيير ناتجledPin
باستخدام PWM.
pwmLEDPin = GPIO.PWM(ledPin, 100) pwmLEDPin.start(0)
- دورة العمل هي النسبة المئوية للوقت الذي يكون فيه الدبوس نشطًا أثناء الموجة النبضية. هنا ، نقوم بتعيين دورة العمل إلى 100٪ أولاً. لقد أجرينا مناقشة مطولة حول هذا الموضوع في دليلنا لاستخدام محركات مؤازرة مع Raspberry Pi ، إذا كنت مهتمًا.
dutyCycle = 100 GPIO.output(ledPin, GPIO.HIGH)
- بالنسبة للجزء التكراري ، فإننا نضع ملف
while
حلقة تعمل إلى الأبد تقريبًا.
- في بداية دورة التكرار هذه ، نقوم بتحديث دورة العمل.
pwmLEDPin.ChangeDutyCycle(dutyCycle)
- دعونا نبرمج ما
brightenButton
يفعل. عندما يكتشف التوت الكهرباء التي تمر عبر الدبوس لbrightenButton
، ستظهر رسالة تقول “BrightenButton is HIGH” ، والتي تضيف 5 إلى القيمة الحالية لدورة العمل حتى تصل إلى 100.
if GPIO.input(brightenButton) == GPIO.HIGH: print("brightenButton is HIGH") if dutyCycle < 100: dutyCycle += 5 sleep(0.25) else: dutyCycle = 100
- عند برمجة ملف
dimButton
تقوم بالعكس ، وتقليل القيمة بمقدار 5 حتى تصل إلى 0.
elif GPIO.input(dimButton) == GPIO.HIGH: print("dimButton is HIGH") if dutyCycle > 0: dutyCycle -= 5 sleep(0.25) else: dutyCycle = 0
الكود النهائي:
import RPi.GPIO as GPIO from time import sleep ledPin = 11 brightenButton = 13 dimButton = 15 GPIO.setwarnings(False) GPIO.setmode(GPIO.BOARD) GPIO.setup(ledPin, GPIO.OUT, initial=GPIO.LOW) GPIO.setup(brightenButton, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) GPIO.setup(dimButton, GPIO.IN, pull_up_down=GPIO.PUD_DOWN) pwmLEDPin = GPIO.PWM(ledPin, 100) pwmLEDPin.start(0) dutyCycle = 100 GPIO.output(ledPin, GPIO.HIGH) while True: pwmLEDPin.ChangeDutyCycle(dutyCycle) if GPIO.input(brightenButton) == GPIO.HIGH: print("brightenButton is HIGH") if dutyCycle < 100: dutyCycle += 5 sleep(0.25) else: dutyCycle = 100 elif GPIO.input(dimButton) == GPIO.HIGH: print("dimButton is HIGH") if dutyCycle > 0: dutyCycle -= 5 sleep(0.25) else: dutyCycle = 0
جعلها تعمل
أولاً ، ستحتاج إلى محطة طرفية. يمكنك استخدام المحطة الطرفية المضمنة في Raspberry Pi أو التحكم في Raspberry Pi من خلال SSH على جهاز كمبيوتر منفصل. من خلال المحطة ، يجب أن تذهب إلى دليل نص بايثون وتدخل python3 rpi-ledpwm.py
أو اسم الملف الذي استخدمته.
في بعض الأحيان سيبدو مؤشر LED وكأنه يومض. من المحتمل أن يكون تردد PWM منخفضًا جدًا ، إذا كان هذا هو الحال. يمكنك زيادة التردد عن طريق زيادة الرقم في pwmLEDPin = GPIO.PWM(ledPin, 100)
حتى يختفي الوميض.
إذا وجدت أن التحولات محببة ، فقلل من الوقت sleep(0.25)
داخل حلقة الوقت. إنه يزداد سرعة كلما خفضته ، على الرغم من ذلك ، لا تخفضه كثيرًا.
تلميح: تفضل اردوينو بدلا من ذلك؟ إليك دليل كامل لتبدأ في مشاريع Arduino.
أسئلة مكررة
ما هو الحد الأدنى للتردد الذي يمكنني إنشاؤه باستخدام Raspberry Pi؟
أقل تردد يمكنك ضبطه على Raspberry Pi هو 10 هرتز. لا يمكن للجهاز دعم أي شيء أقل من ذلك.
ما هو الحد الأقصى للتردد الذي يمكنني إنشاؤه باستخدام Raspberry Pi؟
أعلى تردد يمكنك ضبطه على Raspberry Pi هو 8000 هرتز.
هل يمكن تحويل الموجات النبضية إلى موجات صوتية؟
نعم. باستخدام عنصر كهرضغطية ، من الممكن تمامًا تحويل موجات النبض إلى موجات صوتية يمكنك سماعها. في هذه الحالة ، يؤدي تعديل التردد إلى تغيير درجة الصوت ، بينما يؤدي تعديل دورة العمل إلى ضبط مستوى الصوت.
جميع الصور بواسطة Terenz Jomar Dela Cruz.
اشترك في نشرتنا الإخبارية!
تم تسليم أحدث دروسنا مباشرة إلى صندوق الوارد الخاص بك
[ad_2]