البرمجة :
يعتمد الكود على بعض المكتبات التى نحتاج الى اضافتها الى Arduino IDE يمكنك تحميلها من هنا
#include <binary.h> #include <Sprite.h> #include <Matrix.h> #define POT 0 Matrix Leds = Matrix(8, 9, 10); Sprite smile[3] = { Sprite(8, 8, B01000000, B01000110, B01000110, B01000000, B01000000, B01000110, B01000110, B01000000), Sprite(8, 8, B00100000, B01000110, B01000110, B01000000, B01000000, B01000110, B01000110, B00100000), Sprite(8, 8, B00010000, B00100110, B01000110, B01000000, B01000000, B01000110, B00100110, B00010000) }; void setup() { Leds.clear(); // turn off all diodes } void loop() { int pot = analogRead(POT); pot = min(2, map(potData, 0, 1023, 0, 3)); // which smile // display face Leds.write(0, 0, smile[pot]); }
شرح الكود :
في البداية نقوم بإدراج المكتبات التي نحتاجها في المشروع. وهم عبارة عن مكتبات للتعامل مع الـ LED Matrix والدارة MAX7219 :
#include <binary.h> #include <Sprite.h> #include <Matrix.h>
نقوم بتسمية منافذ الأردوينو التي سنقوم بتوصيلها مع المقاومة المتغيرة :
#define POT 0
ثم نقوم بإنشاء متغير مسؤول عن الـ LED Matrix . و يتم تعريف الارجل التي يتم توصيلها بين الاردوينو و الدارة MAX7219 في هذا المتغير
Matrix Leds = Matrix(8, 9, 10);
بعد ذلك نقوم بإنشاء متغير يحتوي على تفاصيل الأشكال التي سنقوم برسمها على الـ LED Matrix . في هذا المشروع سنقوم بعمل ثلاث أشكال وهي لوجه مبتسم بدرجة تتناسب مع قيمة المقاومة المتغيرة. يتغير الوجه بين ثلاث حالات ، لذلك المتغير الذي سنقوم بإنشاءه هو عبارة عن مصفوفة ذو ثلاث صفوف.
كل صف عبارة عن متغير يحتوي على عدد الصفوف والأعمدة للـ LED Matrix ، والشكل الذي يراد عمله بإستخدام الـ LEDs ممثل بعدد على الصورة الثنائية.
Sprite smile[3] = { Sprite(8, 8, B01000000, B01000110, B01000110, B01000000, B01000000, B01000110, B01000110, B01000000), Sprite(8, 8, B00100000, B01000110, B01000110, B01000000, B01000000, B01000110, B01000110, B00100000), Sprite(8, 8, B00010000, B00100110, B01000110, B01000000, B01000000, B01000110, B00100110, B00010000) };
فى الدالة ()setup نقوم بوضع الاعدادات اللازمة للمشروع مثل اطفاء جميع الليدات فى البداية .
void setup() { Leds.clear(); // turn off all diodes }
و في الدالة ()loop نقوم بقراءة قيمة المقاومة المتغيرة و بإستخدام الدالة map نقوم بتحويل القيمة التي تمت قرائتها وتتراوح بين 0 الى 1023 الى رقم بين 0 الى 2
ونستخدم الرقم الناتج في تشغيل وعرض الشكل المقابل له في مصفوفة الأشكال على الـ LED Matrix
void loop() { int pot = analogRead(POT); pot = min(2, map(potData, 0, 1023, 0, 3)); // which smile // display face Leds.write(0, 0, smile[pot]); }