جدول المحتويات:

شاشة 64 بكسل RGB LED - نسخة أخرى من Arduino: 12 خطوة (مع صور)
شاشة 64 بكسل RGB LED - نسخة أخرى من Arduino: 12 خطوة (مع صور)

فيديو: شاشة 64 بكسل RGB LED - نسخة أخرى من Arduino: 12 خطوة (مع صور)

فيديو: شاشة 64 بكسل RGB LED - نسخة أخرى من Arduino: 12 خطوة (مع صور)
فيديو: Web Programming - Computer Science for Business Leaders 2016 2024, شهر نوفمبر
Anonim
شاشة LED RGB بدقة 64 بكسل - نسخة أخرى من Arduino
شاشة LED RGB بدقة 64 بكسل - نسخة أخرى من Arduino
شاشة LED RGB بدقة 64 بكسل - نسخة أخرى من Arduino
شاشة LED RGB بدقة 64 بكسل - نسخة أخرى من Arduino
شاشة LED RGB بدقة 64 بكسل - نسخة أخرى من Arduino
شاشة LED RGB بدقة 64 بكسل - نسخة أخرى من Arduino

تعتمد هذه الشاشة على 8x8 RGB LED Matrix. لأغراض الاختبار ، تم توصيله بلوحة Arduino قياسية (Diecimila) باستخدام 4 سجلات التحول. بعد الحصول عليها للعمل ، قمت بتبديلها على ثنائي الفينيل متعدد الكلور fabbed. يبلغ عرض سجلات الإزاحة 8 بت ويمكن ربطها بسهولة ببروتوكول SPI. يتم استخدام تعديل عرض النبض لخلط الألوان ، والمزيد حول ذلك لاحقًا. يتم استخدام جزء من ذاكرة الوصول العشوائي MCU كمخزن مؤقت للإطار للاحتفاظ بالصورة. يتم تحليل ذاكرة الوصول العشوائي للفيديو من خلال إجراء مقاطعة في الخلفية ، بحيث يمكن للمستخدم القيام بأشياء مفيدة أخرى مثل التحدث إلى جهاز كمبيوتر ، وقراءة الأزرار ومقاييس الجهد. مزيد من المعلومات حول "Arduino": www.arduino.cc

الخطوة 1: تعديل عرض النبض لخلط الألوان

تعديل عرض النبض لخلط الألوان
تعديل عرض النبض لخلط الألوان

وضع عرض النبضة - ماذا؟ تعديل عرض النبضة هو في الأساس تحويل الطاقة المغذية إلى جهاز كهربائي في وضع التشغيل والإيقاف بسرعة كبيرة. تنتج القوة القابلة للاستخدام من المتوسط الرياضي لدالة الموجة المربعة المأخوذة خلال فترة زمنية واحدة. كلما طالت مدة بقاء الوظيفة في وضع التشغيل ، زادت الطاقة التي تحصل عليها. PWM له نفس التأثير على سطوع مصابيح LED مثل باهتة في مصابيح التيار المتردد ، والمهمة المقبلة هي التحكم بشكل فردي في سطوع 64 RGB LEDS (= 192 مصباح LED فردي!) بطريقة رخيصة وسهلة ، بحيث يمكن للمرء الحصول على الكل. طيف من الألوان. ويفضل ألا يكون هناك اهتزاز أو تأثيرات مزعجة أخرى. لن يؤخذ الإدراك غير الخطي للسطوع الذي تظهره العين البشرية في الاعتبار هنا (على سبيل المثال ، يبدو الفرق بين 10٪ و 20٪ سطوع "أكبر" من بين 90٪ و 100٪). توضح الصورة (1) مبدأ عمل خوارزمية PWM. لنفترض أن الكود حصل على قيمة 7 لسطوع LED (0 ، 0). علاوة على ذلك ، فهو يعرف أن هناك حدًا أقصى لـ N من الخطوات في السطوع. يقوم الكود بتشغيل حلقات N لجميع مستويات السطوع الممكنة وجميع الحلقات الضرورية لخدمة كل LED في جميع الصفوف. في حالة كون عداد الحلقة x في حلقة السطوع أصغر من 7 ، يتم تشغيل مؤشر LED. إذا كان أكبر من 7 ، فسيتم إيقاف تشغيل مؤشر LED. عند القيام بذلك بسرعة كبيرة لجميع مصابيح LED ومستويات السطوع والألوان الأساسية (RGB) ، يمكن ضبط كل LED بشكل فردي لإظهار اللون المطلوب. أظهرت القياسات باستخدام مرسمة الذبذبات أن رمز تحديث الشاشة يستغرق حوالي 50٪ من وقت وحدة المعالجة المركزية. يمكن استخدام الباقي لإجراء اتصال تسلسلي مع جهاز كمبيوتر ، وقراءة الأزرار ، والتحدث إلى قارئ RFID ، وإرسال I2بيانات C إلى وحدات نمطية أخرى …

الخطوة 2: التحدث إلى Shift Registers و LEDs

التحدث إلى Shift Registers و LEDs
التحدث إلى Shift Registers و LEDs
التحدث إلى Shift Registers و LEDs
التحدث إلى Shift Registers و LEDs

سجل التحول هو جهاز يسمح بتحميل البيانات بشكل تسلسلي ومخرج متوازي. العملية المعاكسة ممكنة أيضًا باستخدام الشريحة المناسبة ، وهناك برنامج تعليمي جيد حول سجلات التحويل على موقع اردوينو على الويب ، يتم تشغيل مصابيح LED بواسطة سجلات إزاحة 8 بت من النوع 74HC595. يمكن لكل منفذ مصدر أو غرق حوالي 25 مللي أمبير من التيار. يجب ألا يتجاوز إجمالي التيار لكل شريحة غارقة أو مصدرها 70 مللي أمبير. هذه الرقائق رخيصة للغاية ، لذلك لا تدفع أكثر من 40 سنتًا للقطعة الواحدة. نظرًا لأن LEDs لها خاصية أسية للتيار / الجهد ، يجب أن تكون هناك مقاومات محددة للتيار. باستخدام قانون أوم: R = (V - Vf) / IR = مقاومة محدودة ، V = 5V ، Vf = جهد LED الأمامي ، I = التيار المطلوب ، Red LEDs لها جهد أمامي يبلغ حوالي 1.8 فولت ، ويتراوح اللون الأزرق والأخضر من 2.5 فولت إلى 3.5 فولت. استخدم مقياسًا متعددًا بسيطًا لتحديد ذلك ، ولإعادة إنتاج الألوان بشكل صحيح ، يجب أن يأخذ المرء بعض الأشياء في الاعتبار: الحساسية الطيفية للعين البشرية (الأحمر / الأزرق: سيئ ، الأخضر: جيد) ، كفاءة LED عند طول موجي معين وتيار. من الناحية العملية ، يأخذ المرء ببساطة 3 مقاييس فرق ويضبطها حتى يظهر ضوء أبيض مناسب. بالطبع لا يجب تجاوز الحد الأقصى لتيار LED. المهم أيضًا هنا هو أن سجل التغيير الذي يقود الصفوف يجب أن يوفر التيار إلى 3x8 LEDs ، لذلك من الأفضل عدم دفع التيار لأعلى كثيرًا. لقد نجحت في الحد من المقاومات التي تبلغ 270 أوم لجميع مصابيح LED ، لكن هذا يعتمد على نوع مصفوفة LED بالطبع. SPI = واجهة Serial Peripheral Interface (صورة (1)): مقابل المنافذ التسلسلية على أجهزة الكمبيوتر (غير متزامن ، لا توجد إشارة ساعة) ، يحتاج SPI إلى خط ساعة (SRCLK). ثم هناك خط إشارة يخبر الجهاز عندما تكون البيانات صالحة (تحديد رقاقة / مزلاج / RCLK). أخيرًا ، يوجد سطرا بيانات ، أحدهما يسمى MOSI (Master out slave in) ، والآخر يسمى MISO (master in slave out). يستخدم SPI لواجهة الدوائر المتكاملة ، تمامًا مثل I2ج. يحتاج هذا المشروع إلى MOSI و SRCLK و RCLK. بالإضافة إلى ذلك ، يتم استخدام خط التمكين (G) أيضًا. تبدأ دورة SPI بسحب خط RCLK إلى LOW (صورة (2)). ترسل MCU بياناتها على خط MOSI. يتم أخذ عينات من الحالة المنطقية لها بواسطة سجل التحول عند الحافة الصاعدة لخط SRCLK. يتم إنهاء الدورة عن طريق سحب خط RCLK مرة أخرى إلى HIGH. الآن البيانات متوفرة في المخرجات.

الخطوة 3: التخطيطي

تخطيطي
تخطيطي
تخطيطي
تخطيطي

توضح الصورة (1) كيف يتم توصيل مسجلات التحول بأسلاك. وهي متصلة بالسلاسل التعاقبية ، بحيث يمكن نقل البيانات إلى هذه السلسلة وأيضًا من خلالها. لذلك فإن إضافة المزيد من سجلات الورديات أمر سهل.

تُظهر الصورة (2) بقية التخطيطي باستخدام MCU والموصلات والكوارتز … يحتوي ملف PDF المرفق على الأعمال الكاملة ، وهو الأفضل للطباعة.

الخطوة 4: كود مصدر C ++

كود المصدر C ++
كود المصدر C ++
كود المصدر C ++
كود المصدر C ++
كود المصدر C ++
كود المصدر C ++

في C / C ++ عادةً ما يتعين على المرء أن يضع نموذجًا أوليًا للوظائف قبل ترميزها. # include int main (void)؛ void do_something (void)؛ int main (void) {do_something ()؛} void do_something (void) {/ * comment * / } لا يتطلب Arduino IDE هذه الخطوة ، حيث يتم إنشاء النماذج الأولية للوظائف تلقائيًا. لذلك لن تظهر النماذج الأولية للوظائف في الكود الموضح هنا. الصورة (1): setup () functionImage (2): spi_transfer () تستخدم وظيفة SPI للأجهزة لشريحة ATmega168 (تعمل بشكل أسرع) الصورة (3): استخدام كود حافظة الإطارات timer1 overflow interrupt. قطع من التعليمات البرمجية ذات مظهر غامض بعض الشيء للمبتدئين على سبيل المثال while (! (SPSR & (1 << SPIF))) {} استخدم تسجيلات MCU مباشرة. هذا المثال بالكلمات: "بينما لم يتم تعيين بت SPIF في السجل SPSR ، لا تفعل شيئًا". أريد فقط التأكيد على أنه بالنسبة للمشاريع القياسية ، ليس من الضروري حقًا التعامل مع هذه الأشياء المرتبطة ارتباطًا وثيقًا بالأجهزة. يجب ألا يخاف المبتدئين من هذا.

الخطوة 5: الأداة النهائية

الأداة المنتهية
الأداة المنتهية
الأداة المنتهية
الأداة المنتهية
الأداة المنتهية
الأداة المنتهية

بعد حل جميع المشكلات وتشغيل الكود ، كان علي فقط إنشاء تخطيط ثنائي الفينيل متعدد الكلور وإرساله إلى منزل فاب. تبدو أكثر نظافة:-) الصورة (1): لوحة تحكم ممتلئة بالكامل الصورة (2): الجانب الأمامي من PCB العاري الصورة (2): الجانب الخلفي هناك موصلات تكسر PORTC و PORTD لشريحة ATmega168 / 328 و 5 V / GND. تحتوي هذه المنافذ على خطوط التسلسل RX و TX و I.2خطوط C وخطوط إدخال / إخراج رقمية و 7 خطوط ADC. هذا مخصص لتكديس الدروع على الجانب الخلفي من اللوحة. التباعد مناسب لاستخدام perfboard (0.1in). يمكن وميض محمل الإقلاع باستخدام رأس ICSP (يعمل مع adafruit's USBtinyISP). بمجرد القيام بذلك ، ما عليك سوى استخدام محول تسلسلي قياسي FTDI USB / TTL أو ما شابه ذلك. لقد أضفت أيضًا رابطًا لإعادة التعيين التلقائي والتعطيل. لقد قمت أيضًا بإعداد برنامج نصي صغير لـ Perl (انظر مدونتي) ، والذي يتيح إعادة التعيين التلقائي باستخدام كبلات FTDI التي لا تعمل عادةً خارج الصندوق (خط RTS مقابل خط DTR). يعمل هذا على نظام Linux ، ربما على MAC. تتوفر لوحات الدوائر المطبوعة وعدد قليل من مجموعات أدوات DIY على مدونتي. مطلوب لحام SMD! راجع ملفات PDF لتعليمات البناء ومصادر مصفوفات LED.

الخطوة 6: التطبيق: مراقبة تحميل وحدة المعالجة المركزية لـ Linux باستخدام Perl

هذه شاشة تحميل أساسية للغاية مع مخطط محفوظات. يعتمد على نص برل يقوم بجمع "متوسط تحميل" النظام كل 1 ثانية باستخدام iostat. يتم تخزين البيانات في مصفوفة يتم إزاحتها عند كل تحديث. تتم إضافة بيانات جديدة في أعلى القائمة ، ويتم دفع الإدخال الأقدم للخارج. يتوفر المزيد من المعلومات التفصيلية والتنزيلات (الرمز …) على مدونتي.

الخطوة 7: التطبيق: التحدث إلى وحدات أخرى باستخدام I²C

التطبيق: التحدث إلى وحدات أخرى باستخدام I²C
التطبيق: التحدث إلى وحدات أخرى باستخدام I²C

هذا مجرد دليل على المبدأ وليس إلى حد بعيد الحل الأبسط لهذه الوظيفة2يسمح C بالتعامل المباشر مع ما يصل إلى 127 لوحة "تابعة". هنا اللوحة الموجودة على الجانب الأيمن في الفيديو هي "السيد" (الذي يبدأ جميع عمليات النقل) ، واللوحة اليسرى هي العبد (في انتظار البيانات). أنا2يحتاج C إلى خطي إشارة وخطوط طاقة عادية (+ ، - ، SDA ، SCL). نظرًا لأنه ناقل ، يتم توصيل جميع الأجهزة به بشكل متوازٍ.

الخطوة 8: التطبيق: "Game Cube":-)

تطبيق
تطبيق

مجرد فكرة غريبة ، وهذا ينطبق أيضًا على العلبة الخشبية الموضحة في صفحة المقدمة. يحتوي على 5 أزرار على مؤخرته والتي يمكن استخدامها للعب لعبة بسيطة.

الخطوة 9: عرض الصور / الرسوم المتحركة على المصفوفة - Quick Hack

عرض الصور / الرسوم المتحركة على المصفوفة - Quick Hack
عرض الصور / الرسوم المتحركة على المصفوفة - Quick Hack
عرض الصور / الرسوم المتحركة على المصفوفة - Quick Hack
عرض الصور / الرسوم المتحركة على المصفوفة - Quick Hack
عرض الصور / الرسوم المتحركة على المصفوفة - Quick Hack
عرض الصور / الرسوم المتحركة على المصفوفة - Quick Hack
عرض الصور / الرسوم المتحركة على المصفوفة - Quick Hack
عرض الصور / الرسوم المتحركة على المصفوفة - Quick Hack

لذلك ، يتوفر فقط 8x8 بكسل وبعض الألوان المتاحة. استخدم أولاً شيئًا مثل Gimp لتقليل حجم صورتك المفضلة إلى 8x8 بكسل بالضبط وحفظها بتنسيق خام ".ppm" (وليس ASCII). من السهل قراءة ومعالجة PPM في نص برل. لن يعمل استخدام ImageMagick وأداة سطر الأوامر "convert" بشكل صحيح. قم بتحميل كود arduino الجديد ، ثم استخدم البرنامج النصي Perl للتحميل إلى وحدة التحكم. الوميض هو مجرد عدم تطابق بين تحديث LED ومعدل إطارات الكاميرا. بعد تحديث الكود قليلاً ، فإنه يعمل بسرعة كبيرة. يتم نقل جميع الصور مباشرة عبر المسلسل كما تراها. يمكن تخزين الرسوم المتحركة الأطول في EEPROM خارجي كما هو الحال في لوحات التحدث المختلفة.

الخطوة 10: التحكم التفاعلي في الرسوم المتحركة المخزنة

لماذا ندع المتحكم الدقيق يتمتع بكل المتعة؟ تدور عبادة Arduino حول الحوسبة الفيزيائية والتفاعل ، لذلك فقط أضف مقياس جهد وتحكم! استخدام واحد من 8 مداخل محول رقمي إلى تناظري يجعل ذلك أمرًا بسيطًا للغاية.

الخطوة 11: عرض فيديو مباشر

إن استخدام برنامج نصي لـ Perl وبعض الوحدات النمطية يجعل من السهل جدًا عرض شبه فيديو مباشر على أنظمة X11. تم ترميزه على لينكس ويمكن أن يعمل على أجهزة MAC أيضًا. يعمل على النحو التالي: - الحصول على موضع مؤشر الماوس - التقاط مربع من NxN بكسل في المنتصف في المؤشر - قياس الصورة إلى 8 × 8 بكسل - إرسالها إلى لوحة LED - كرر

الخطوة 12: المزيد من الإضاءة مجانًا تقريبًا

المزيد من الضوء تقريبًا مجانًا
المزيد من الضوء تقريبًا مجانًا

بخطوتين فقط ، يمكن زيادة السطوع قليلاً. استبدل المقاومات بزاوية 270 أوم بمقاومات 169 درجة وأخرى على الظهر 74HC595 وتسجيل التحول على IC5.

موصى به: