بــــسم الله الرحمن الرحيـــــم
تستخدم مصفوفة البواعث الضوئية ( LED Matrix ) في العديد من المشاريع مثل لوحات الإعلانات , شاشات العرض , و حتى في المشاريع الصغيرة لعرض البيانات عليها .
في هذه التجربة نحتاج الـى :
• LED Matrix 8×8 .
• MAX7219 IC .
• مكثف إلكتروني 10uf .
• مكثف سيراميكي 0.1uf .
• مقاومة 10kohm
توصيل مصفوفة البواعث الضوئية مباشرة مع الاردوينو سيكون امر صعب و معقد من ناحية التوصيلات و كتابة الكود ايضاً , لذلك نستخدم الدارة المتكاملة MAX7219 , لتسهيل عملية التوصيل و البرمجة , هذه الدارة المتكاملة لهـا عدة مميزات اهمها :
- يتوفر عدة مكتبات تدعم هذه الدارة ( للأردوينو ) .
- يمكنها تشغيل حتى 8 مقطعات سباعية ( 7-segment ).
- او تشغيل 64 باعث ضوئي (LED) منفصل .
- يمكن التحكم بشدة الاضاءة للضوء ( من خلال البرمجة او بالتوصيل ).
- يتم التحكم بها من خلال 3 مخارج (pin) في الاردوينو .
- يمكنك توصيل حتى 8 دارات مع بعضها و التحكم بها من نفس المخارج الثلاث
اي انه بالمحصلة يمكن التحكم بـ 512 LED من خلال 3 مخارج فقط :) .
يمكنك الاطلاع على النشرة الفنية للقطعة من هنـا data sheet .
الصورة التالية توضح كل مخرج للدارة .
توصيل المصفوفة مع الدارة المتكاملة يكون بالشكل التالي :
اضغط على الصورة لتكبيرها |
لكن نحن نستخدم دارة واحدة فقط !
سيكون الشكل النهائي كالتالي ..
البرمجـــة :
اولاً تحتاج لتحميل هذه المكتبة LedControl .
تتبع البرنامج التالي ( سيقوم بكتابة حرف A و ازالته ) !
LedControl lc=LedControl(12,11,10,1); // lc is our object
// pin 12 is connected to the MAX7219 pin 1
// pin 11 is connected to the CLK pin 13
// pin 10 is connected to LOAD pin 12
// 1 as we are only using 1 MAX7219
void setup()
{
// the zero refers to the MAX7219 number, it is zero for 1 chip
lc.shutdown(0,false);// turn off power saving, enables display
lc.setIntensity(0,8);// sets brightness (0~15 possible values)
lc.clearDisplay(0);// clear screen
}
void loop()
{
lc.setLed(0,1,0,true); // turns on LED at col, row
lc.setLed(0,1,1,true); // turns on LED at col, row
lc.setLed(0,1,2,true); // turns on LED at col, row
delay(50);
lc.setLed(0,1,3,true); // turns on LED at col, row
lc.setLed(0,1,4,true); // turns on LED at col, row
lc.setLed(0,2,5,true); // turns on LED at col, row
delay(50);
lc.setLed(0,3,6,true); // turns on LED at col, row
lc.setLed(0,4,6,true); // turns on LED at col, row
lc.setLed(0,5,5,true); // turns on LED at col, row
delay(50);
lc.setLed(0,6,4,true); // turns on LED at col, row
lc.setLed(0,6,3,true); // turns on LED at col, row
lc.setLed(0,6,2,true); // turns on LED at col, row
delay(50);
lc.setLed(0,6,1,true); // turns on LED at col, row
lc.setLed(0,6,0,true); // turns on LED at col, row
lc.setLed(0,2,2,true); // turns on LED at col, row
delay(50);
lc.setLed(0,3,2,true); // turns on LED at col, row
lc.setLed(0,4,2,true); // turns on LED at col, row
lc.setLed(0,5,2,true); // turns on LED at col, row
delay(3000);
for (int row=0; row<8; row++)
{
for (int col=0; col<8; col++)
{
lc.setLed(0,col,row,true); // turns on LED at col, row
delay(10);
lc.setLed(0,col,row,false); // turns off LED at col, row
delay(10);
}
}
delay(50);
for (int row=8; row>0; row--)
{
for (int col=8; col>0; col--)
{
lc.setLed(0,col,row,true); // turns on LED at col, row
delay(10);
lc.setLed(0,col,row,false); // turns off LED at col, row
delay(10);
}
}
}
شاهد النتيجة
و لكتابة الكلمات مباشرة و تحريكها و التحكم بسرعتها و شدة اضاءتها ,
يمكنك استخدام هذه المكتبة MaxMatrix .
هذا المثال يوضح عمل المكتبة ( هـنـا )
شـاهد مثال على استخدام المكتبة
مصادر :
- instructables .
- instructables .
السلام عليكم أثناء قيامي بنفس التجربة المبينة أعلاه و المتمثلة في كتابة الكلمات و تحريكها تبين لي أن الكلمات تظهر معكوسة و تتحرك عكس الاتجاه من اليسار الى اليمين مع العلم انني قمت بربط الدارة على نفس المنوال المبينة أعلاه فما العمل من فضلكم؟
ردحذف