البرمجة :
يعتمد الكود على بعض المكتبات التى نحتاج الى اضافتها الى 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]);
}

