Charlieplexing هي تقنية للتحكم في العديد من مصابيح LED باستخدام عدد قليل من دبابيس الإدخال / الإخراج. Charlieplexing هو نفسه تعدد الإرسال ، لكنه يستخدم منطق ثلاثي الحالة (مدخلات عالية ومنخفضة) لتقليل عدد المسامير بشكل كبير واكتساب الكفاءة عبر تعدد الإرسال. تمت تسمية تقنية Charlieplexing على اسم مخترعها ، Charlie Allen ، الذي اخترع هذه التقنية في عام 1995. استخدمنا سابقًا تقنية تعدد الإرسال في Arduino لواجهة شاشة عرض مكونة من 4 أرقام مكونة من 7 مقاطع وقيادة مصفوفة LED 8x8.
يسمح لك Charlieplexing بالتحكم في N * (N - 1) LEDs ، حيث N هو رقم المسامير. على سبيل المثال ، يمكنك التحكم في 12 مصباح LED باستخدام 4 دبابيس Arduino 4 * (4-1) = 12. المصابيح هي صمامات ثنائية ، وفي الثنائيات ، يتدفق التيار في اتجاه واحد فقط. لذلك في Charlieplexing ، نقوم بتوصيل اثنين من مصابيح LED بالتوازي مع بعضهما البعض ولكن بقطبية معاكسة بحيث يتم تشغيل LED واحد فقط في كل مرة. عندما يتعلق الأمر بـ Arduino أو لوحات متحكم أخرى ، فلن يكون لديك ما يكفي من دبابيس الإدخال / الإخراج. إذا كنت تعمل في مشروع تحتاج فيه إلى واجهة شاشة LCD ومجموعة من مصابيح LED وبعض أجهزة الاستشعار ، فأنت بالفعل قد نفدت الأطراف. في هذه الحالة ، يمكنك استخدام مصابيح charlieplex لتقليل عدد المسامير.
في هذا البرنامج التعليمي ، سنستخدم تقنية Charlieplexing للتحكم في 12 مصباحًا باستخدام 4 دبابيس Arduino.
المكونات مطلوبة
- اردوينو UNO
- ال اي دي (12)
- 4 مقاومة (330 أوم)
- أسلاك توصيل
- اللوح
مخطط الرسم البياني
في الأساس ، في مخطط الدائرة هذا ، يتم توصيل 12 مصباحًا LED مع 4 دبابيس Arduino من خلال مقاومات. كل دبوس من Arduino متصل بثلاثة مصابيح LED. توجد ست مجموعات من مصابيح LED ، وفي كل مجموعة ، يتم توصيل 2 LED ، وكلا الصمامين متوازيان مع بعضهما البعض ولكن بقطبية متعاكسة بحيث يتم تشغيل مؤشر LED واحد فقط في كل مرة. لذلك وفقًا لمخطط الدائرة لتشغيل المصباح 1 ، يجب أن تكون هناك إشارة عالية على السن A وإشارة منخفضة على الدبوس B ، ويجب فصل الدبوس C و D. سيتم اتباع نفس الإجراء لمصابيح LED الأخرى. الجدول الكامل لإعدادات الدبوس لكل مصباح LED موضح أدناه:
يؤدى | دبوس 8 | دبوس 9 | دبوس 10 | دبوس 11 |
1 | عالي | منخفض | إدخال | إدخال |
2 | منخفض | عالي | إدخال | إدخال |
3 | إدخال | عالي | منخفض | إدخال |
4 | إدخال | منخفض | عالي | إدخال |
5 | إدخال | إدخال | عالي | منخفض |
6 | إدخال | إدخال | منخفض | عالي |
7 | عالي | إدخال | منخفض | إدخال |
8 | منخفض | إدخال | عالي | إدخال |
9 | إدخال | عالي | إدخال | منخفض |
10 | إدخال | منخفض | إدخال | عالي |
11 | عالي | إدخال | إدخال | منخفض |
12 | منخفض | إدخال | إدخال | عالي |
بعد التوصيلات ، يبدو أجهزتي مثل الصورة أدناه. كما ترون من الصورة ، هناك ست مجموعات من مصابيح LED وفي كل مجموعة يتم توصيل 2 LED مقابل بعضهما البعض. يتم تشغيل وحدة Arduino UNO بواسطة منفذ USB.
شرح الكود
يتم تقديم رمز كامل مع فيديو عملي في نهاية هذا البرنامج التعليمي ، وهنا نوضح البرنامج الكامل لفهم عمل المشروع.
في بداية كود Arduino ، حدد كل الدبوس الذي تتصل به مصابيح LED. بعد ذلك ، حدد العدد الإجمالي لمصابيح LED وحالة LED.
#define A 8 #define B 9 #define C 10 #define D 11 #define PIN_CONFIG 0 #define PIN_STATE 1 #define LED_Num 12
الآن قم بإنشاء مصفوفة لتشغيل وإيقاف تشغيل مصابيح LED في تسلسل ، يمكنك تغيير التسلسل عن طريق تغيير حالة الدبوس وتكوين الدبوس. وفقًا لهذه المصفوفة ، سيتم تشغيل LED1 أولاً ثم LED2 وما إلى ذلك.
int matrix = { // PIN_CONFIG PIN_STATE // ABCDABCD {{OUTPUT ، OUTPUT ، INPUT ، INPUT} ، {HIGH ، LOW ، LOW ، LOW}} ، {{OUTPUT ، OUTPUT ، INPUT ، INPUT} ، {LOW ، HIGH ، LOW ، LOW}}، {{INPUT، OUTPUT، OUTPUT، INPUT}، {LOW، HIGH، LOW، LOW}}، ………………………………. ………………………………..
الآن داخل الحلقة الفارغة ، سيقوم البرنامج بتنفيذ مصفوفة LED_COUNT لتشغيل وإيقاف تشغيل مصابيح LED في التسلسل المحدد.
حلقة فارغة () { لـ (int l = 0 ؛ l <LED_Num ؛ l ++) { lightOn (l) ؛ تأخير (1000 / LED_Num) ؛ }
الآن قم بتوصيل Arduino بجهاز الكمبيوتر المحمول واختر اللوحة والمنفذ بشكل صحيح ثم انقر فوق الزر تحميل. بعد تحميل الرمز ، يجب أن تبدأ مصابيح LED الخاصة بك في الوميض.
هذه هي الطريقة التي يمكن بها استخدام تقنية Charlieplexing للتحكم في العديد من مصابيح LED باستخدام عدد أقل من دبابيس Arduino. يمكنك استخدام هذه الطريقة للتحكم في عدد أكبر من مصابيح LED. على سبيل المثال ، إذا كنت تريد التحكم في 20 مصباح LED ، فقم فقط بتحرير المصفوفة وإضافة الشروط لمصابيح LED المتبقية.
ابحث عن الكود الكامل وفيديو العمل أدناه.