في هذا البرنامج التعليمي ، سنقوم بتصميم شاشة عرض مصفوفة 8x8 LED باستخدام Arduino Uno ، والتي ستعرض أبجديات التمرير.
مصفوفة 8x8 LED تحتوي على 64 LED (الثنائيات الباعثة للضوء) مرتبة في شكل مصفوفة ، ومن هنا الاسم هو مصفوفة LED. سنقوم بصنع هذه المصفوفة عن طريق لحام مصابيح LED الـ 64 هذه على لوحة التحكم أو DOT PCB. يمكن أن تكون مصابيح LED من أي لون ، اختر الألوان المتوفرة معك. ثم سنكتب برنامجًا لـ Arduino للتحكم في مصفوفة 64 LEDs. وفقًا للبرنامج ، تقوم UNO بتشغيل مصابيح LED المناسبة لإظهار الشخصيات بطريقة التمرير.
المكونات المطلوبة:
- اردوينو اونو
- 64 ليد
- بيرف بورد مع أدوات لحام أخرى
- 1KΩ المقاوم (8 قطع)
- مزود الطاقة (5 فولت)
شرح الدائرة والعمل:
يوجد 64 مصباح LED مرتبة في شكل مصفوفة. إذن لدينا 8 أعمدة و 8 صفوف. فوق تلك الصفوف والأعمدة ، يتم تجميع جميع المحطات الموجبة في صف معًا. لكل صف ، توجد محطة طرفية موجبة واحدة لجميع مصابيح LED الثمانية في هذا الصف. يظهر في الشكل أدناه ،
لذلك بالنسبة لثمانية صفوف لدينا 8 أطراف موجبة مشتركة. ضع في اعتبارك الصف الأول ، كما هو موضح في الشكل ، 8 مصابيح LED من D57 إلى D64 لها طرف موجب مشترك ويشار إليها بـ "POSITIVE0". الآن إذا أردنا توهج واحد أو كل مصابيح LED في الصف الأول من المصفوفة ، فيجب علينا تشغيل PIN0 لمصفوفة LED. وبالمثل ، إذا أردنا توهج أي مؤشر LED (أو كل) في أي ROW ، فنحن بحاجة إلى تشغيل الدبوس الطرفي الإيجابي المشترك المقابل لذلك الصف المعني.
هذا لم ينته بعد ومجرد ترك صفوف MATRIX مع عرض إيجابي لن ينتج عنه أي شيء. نحن بحاجة إلى تأريض سلبيات LED لتوهجها. لذلك في مصفوفة 8x8 LED ، يتم تجميع جميع الأطراف السالبة لمصابيح LED في أي عمود معًا لتشكيل ثمانية محطات سلبية مشتركة ، مثل جميع المحطات السالبة في العمود الأول متصلة معًا بـ PIN-A1 (NEGATIVE7). هذا موضح في الشكل أدناه:
يجب على المرء الانتباه إلى هذه المسامير أثناء لحام مصابيح LED على Perfboard.
الآن إذا احتجنا إلى تأريض أي مؤشر LED في العمود الأول ، فسنقوم بتثبيت PIN-A1 (NEGATIVE7) من MATRIX ، وسوف نقوم بتثبيت جميع مصابيح LED في العمود الأول. نفس العملية تنطبق على جميع الأعمدة السالبة السبعة المشتركة الأخرى.
منذ الآن أنت تعرف كيف يعمل الإيجابي والسلبي المشترك. دعنا نجمعها معًا لنرى كيف تعمل معًا وستبدو الدائرة النهائية لشاشة Scrolling 8x8 LED Matrix كما يلي:
قيادة مصفوفة 8x8 LED باستخدام تعدد الإرسال:
الآن دعنا نقول أننا نريد تشغيل LED57 ثم نحتاج إلى تشغيل PIN0 من UNO وتثبيت PIN-8 الخاص بـ UNO. الآن لتشغيل كل من LED57 و LED50 ، نحتاج إلى تشغيل PIN0 و PIN1 وتأريض PIN8 و PIN9. لكن القيام بذلك لن يؤدي فقط إلى تشغيل D57 و D50 ولكن أيضًا D49 و D58. لتجنب ذلك نستخدم تقنية تسمى Multiplexing. لقد ناقشنا بالفعل تقنية Multiplex هذه في مصفوفة LED 8x8 بالتفصيل ؛ انتقل إلى تلك المقالة للحصول على شرح مفصل. نحن هنا نوضح مضاعفة الإرسال بإيجاز.
لا يمكن للعين البشرية التقاط تردد يزيد عن 30 هرتز. هذا إذا تم تشغيل وإيقاف تشغيل LED بشكل مستمر بمعدل 30 هرتز أو أكثر. ترى العين أن مؤشر LED يعمل باستمرار. ومع ذلك ، هذا ليس هو الحال وسيتم تشغيل LED وإيقاف تشغيله باستمرار. هذه التقنية تسمى Multiplexing.
لنفترض على سبيل المثال ، أننا نريد فقط تشغيل LED57 و LED50 دون تشغيل D49 و D58. الحيلة هي أننا سنوفر الطاقة للصف الأول أولاً لتشغيل LED57 وانتظر 1mSEC ، ثم سنقوم بإيقاف تشغيله. ثم سنوفر الطاقة للصف الثاني لتشغيل LED50 وانتظر 1mSEC ثم نقوم بإيقاف تشغيله. تستمر الدورة باستمرار بتردد عالٍ وسيبدأ تشغيل وإيقاف LED57 و LED50 بسرعة وسيظهر كل من مصابيح LED لأعيننا باستمرار. يعني أننا نوفر الطاقة لصف واحد فقط في كل مرة ، مما يلغي فرص تشغيل مصابيح LED الأخرى في صفوف أخرى. سوف نستخدم هذه التقنية لإظهار جميع الشخصيات.
توجد أيضًا مكتبة تسمى LedControlMS.h لتهتم بكل هذا التعقيد من مضاعفة الإرسال ، حيث تحتاج فقط إلى إدخال الحرف أو الرقم الذي تريد طباعته على مصفوفة LED ، تحقق من مصفوفة Arduino LED مع مشروع MAX7219 لمزيد من التفاصيل.
شرح البرمجة:
في الكود الخاص بنا ، قمنا بكتابة القيمة العشرية لكل حرف وبرمجنا هذه القيم في Arduino. لقد كتب البرنامج لتحويل هذه القيم إلى الصف التالي كل 0.2 ثانية ، وسيُنظر إلى هذا على أنه تمرير للأحرف لأعلى ، إنه بسيط جدًا.
لتغيير الأحرف المراد عرضها ، ما عليك سوى استبدال القيمة في مصفوفة char ALPHA وفقًا لقيم الأحرف الواردة أدناه ،
24،60،102،126،102،102،102،0،0،0، // A 124،102،102،124،102،102،124،0،0،0، // B 60،102،96،96،96،102،60،0، 0،0، // C 120،108،102،102،102،10، 0،08 ، // D 126،96،96،120،96،96،126،0، 0،0، // E 126،96،96،120،96،96،96،0، 0،0، // F 60،102،96،110،102،102،60، 0، 0،0، // G 102،102،102،126،102،102،102،0، 0،0، // H 60،24،24،24،24،24،60،0، 0،0، // I 30،12،12،12 ، 12،108،56،0، 0،0، // J 102،108،120،112،120،108،102،0، 0،0، // K 96،96،96،96،96،96،126،0، 0،0، // L 99،119،127،107،99، 99،99،0، 0،0، // M 102،118،126،126،110،102،102،0، 0،0، // N 60،102،102،102،102،102،60،0، 0،0، // O 124،102،102،124،96،96،96،0، 0،0 ، // P 60،102،102،102،102،60،14،0، 0،0، // Q 124،102،102،124،120،108،102،0، 0،0، // R 60،102،96،60،6،102،60،0، 0،0، // S 126 ، 24،24،24،24،24،24،0، 0،0، // T 102،102،102،102،102،102،60،0، 0،0، // U 102،102،102،102،102،60،24،0، 0،0، // V 99،99،99،107،127،119،99 ،0، 0،0، // W 102،102،60،24،60،102،102،0، 0،0، // X 102،102،102،60،24،24،24،0، 0،0، // Y 126،6،12 ، 24،48،96،126،0 ، 0،0 ، // Z
مثل إذا كنت تريد عرض DAD على مصفوفة LED ، فقم أولاً باستبدال قيم الأحرف في صفيف char ALPHA بوضع قيم للأحرف D و A و D من القائمة أعلاه:
char ALPHA = {0،0،0،0،0،0،0،0،0،0،0، 120،108،102،102،102،108،120،0،0،0، 24،60،102،126،102،102،102،0،0،0، 120،108،102،102،102،108، 0، 0،0،0،0،0،0،0،0،0،0،0} ؛
القيم الإجمالية الآن هي 5 * 10 = 50 قيمة ، لذلك
استبدل ، لـ (int x = 0 ؛ x <142 ؛ x ++) // 150-8 (لإيقاف الفائض) {…….. بـ ، لـ (int x = 0 ؛ x <42 ؛ x ++) // 50-8 (لإيقاف الفائض) {……..
لذلك تحتاج فقط إلى تغيير الرقم.
بهذا تكون قد انتهيت من البرمجة والآن يمكنك تمرير أي نص على مصفوفة 8x8 LED ، تحقق من الكود الكامل أدناه مع فيديو توضيحي.