PDA

View Full Version : طراحی صفحه نمایش ماتریسی



BOB
پنج شنبه 29 آبان 1393, 12:47 عصر
در روش Dot-Matrix یا Matrix-LED به تعداد پیکسل‌های صفحه نمایش از LED استفاده شده و برای کنترل روشن و خاموش شدن آنها از bus مشترک استفاده می‌شود.

استفاده از bus مشترک به این معنی است که برای کنترل صفحه، نیازی به سیم کشی مجزا برای هر LED نیست و به جای این کار، پس از کنار هم چیدن LED ها به صورت یک چهار ضلعی، به ازای هر سطر یک bus کاتد و به ازای هرستون یک bus آند ایجاد می‌کنیم.

در اکثر صفحات نمایش مورد استفاده در موبایل‌های قدیمی (صفحات تک رنگ)، دستگاه‌های فکس و کپی و امثال آنها از این فناوری استفاده شده است.

تجهیزات مورد نیاز:


16 عدد LED
4 عدد مقاومت بیشتر از 100 اهم و کمتر از 1K (مثلا 220)
برد Arduino Uno
بردبورد
سیم برد


دیودها را به صورت یک مربع 4 در 4 بر روی برد قرار داده و در هر سطر پایه‌های کاتد را به یکدیگر متصل کرده و در انتها یک مقاومت به آن وصل کنید. سپس در هر ستون پای‌های آند را به یکدیگر متصل کنید. به این ترتیب 8 سیم برای کنترل 16 LED بدست می‌آید که به ترتیب آنها را به پایه‌های 2 تا 9 از Uno متصل می‌کنیم. توضیحات بیشتر در مورد مدار در این آدرس (http://www.mshams.ir/blogs/1392/08/%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-%D8%B5%D9%81%D8%AD%D9%87-%D9%86%D9%85%D8%A7%DB%8C%D8%B4-%D9%85%D8%A7%D8%AA%D8%B1%DB%8C%D8%B3%DB%8C-%D8%A8%D8%A7-%D9%85%DB%8C%DA%A9%D8%B1%D9%88%DA%A9%D9%86%D8%AA%D 8%B1)موجود است.

برای برنامه ریزی برد به صورت زیر عمل می‌کنیم.
در این برنامه در هر چرخه اجرا تعدادی از LED ها به صورت تصادفی روشن یا خاموش می‌شوند. نتیجه کار جالب خواهد بود.


void setup(){
pinMode(2, OUTPUT);
pinMode(3, OUTPUT);
pinMode(4, OUTPUT);
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);

randomSeed(analogRead(0));
}

void loop(){

digitalWrite(2, random(0, 10)<5 ? HIGH : LOW);
digitalWrite(3, random(0, 10)<5 ? HIGH : LOW);
digitalWrite(4, random(0, 10)<5 ? HIGH : LOW);
digitalWrite(5, random(0, 10)<5 ? HIGH : LOW);
digitalWrite(6, random(0, 10)<5 ? HIGH : LOW);
digitalWrite(7, random(0, 10)<5 ? HIGH : LOW);
digitalWrite(8, random(0, 10)<5 ? HIGH : LOW);
digitalWrite(9, random(0, 10)<5 ? HIGH : LOW);

delay(50);
}