جدول المحتويات:
2025 مؤلف: John Day | [email protected]. آخر تعديل: 2025-01-13 06:56
الخطوات التالية عبارة عن تجارب لتوضيح كيفية عمل مصابيح LED. يوضحون كيفية تعتيم LED بمعدل متساوٍ وكيفية تلاشيها وإخفائها.
سوف تحتاج:
- اردوينو (كنت أستخدم الثنائي)
- اللوح
- 5 ملم ليد أحمر
- مقاومة 330 أوم (غير حرجة 330-560 أوم ستعمل.)
- قياس 22 سلك ربط صلب
يتم تضمين الأجزاء اللازمة لهذه التجارب في جميع مجموعات بدء تشغيل Arduino.
الخطوة 1: شرح تعديل النبض
تعمل مصابيح LED دائمًا بنفس الجهد بغض النظر عن السطوع. يتم تحديد السطوع بواسطة مذبذب موجة مربعة ومقدار الوقت الذي يكون فيه الجهد مرتفعًا يحدد السطوع. وهذا ما يسمى تعديل عرض النبض (PWM). يتم التحكم في ذلك بواسطة وظيفة Arduino analogWrite (pin ، n) حيث قيمة n من 0 إلى 255. ينتج analogWrite () PWM ، وليس التناظرية الحقيقية. إذا كانت n = 2 ، سيكون سطوع مؤشر LED ضعف سطوع n = 1. يتضاعف السطوع دائمًا عندما يتضاعف n. إذن ، n = 255 ستكون ضعف سطوع n = 128.
غالبًا ما يتم التعبير عن قيمة n كنسبة مئوية تسمى دورة العمل. تُظهر الصور آثار راسم الذبذبات لدورات عمل 25 و 50 و 75٪.
الخطوة 2: Un-even Dimming
بناء الدائرة كما في الرسم التخطيطي. هذا تمامًا مثل الدائرة التي تومض مصباح LED. يستخدم دبوس 9 لأنك تحتاج إلى استخدام دبوس ممكّن لـ PWM.
انسخ / الصق الرسم أدناه في Arduino IDE وقم بتشغيله.
ستلاحظ أنه كلما كان مؤشر LED أكثر سطوعًا كلما كان خافتًا أبطأ. مع اقترابها من أخفض درجة حرارة ، ستصبح باهتة بسرعة كبيرة.
الإعداد باطل()
{pinMode (9 ، الإخراج) ؛ } حلقة فارغة () {int pin = 9؛ لـ (int i = 255 ؛ i> -1 ؛ i--) {analogWrite (pin ، i) ؛ تأخير (10) ؛ } لـ (int i = 0؛ i <256؛ i ++) {analogWrite (pin، i)؛ تأخير (10) ؛ }}
}
توضح الخطوة التالية كيفية تعتيم مؤشر LED بمعدل ثابت ، وفي واحد للبيان.
الخطوة 3: أعلى وأسفل في واحد لـ ()
لكي يخفت مؤشر LED بمعدل ثابت ، يجب أن يزيد التأخير () بمعدل أسي لأن نصف دورة العمل ستنتج دائمًا نصف السطوع. كانت فكرتي الأولى هي محاولة استخدام وظيفة map () لكنها خطية.
الخط:
int د = (16-i / 16) ^ 2 ؛
بحساب المربع العكسي للسطوع لتحديد طول التأخير.
انسخ / الصق الرسم أدناه في Arduino IDE وسترى أن مؤشر LED سيتلاشى ويختفي بمعدل ثابت.
الإعداد باطل()
{pinMode (9 ، الإخراج) ؛ } حلقة فارغة () {int x = 1 ؛ دبوس int = 9 ؛ لـ (int i = 0 ؛ i> -1 ؛ i = i + x) {int d = (16-i / 16) ^ 2 ؛ analogWrite (دبوس ، أنا) ؛ تأخير (د) ؛ إذا (i == 255) x = -1 ؛ // تبديل الاتجاه عند الذروة}}