طراحی صفحه نمایش ماتریسی با میکروکنترلر Atmel و LED

یکی از معروفترین بردهای میکروکنترلر open-source که تا کنون طراحی شده است، مجموعه بردهای موسوم به Arduino هستند که بر پایه میکروهای Atmel ساخته شده‌اند.

این برد محبوب در سال 2005 و به عنوان یک پروژه دانشجویی طراحی سخت‌افزار ایجاد شده و پس از آن با طراحی مجدد، ساده‌سازی و کاهش هزینه تولید به یکی از بردهای مورد علاقه دوست داران الکترونیک تبدیل شد.

در این پست، می‌خواهم روش طراحی یک صفحه نمایش Dot-Matrix  را با استفاده از LED و کنترلر Arduino Uno بررسی کنم.

در روش Dot-Matrix یا Matrix-LED به تعداد پیکسل‌های صفحه نمایش از LED استفاده شده و برای کنترل روشن و خاموش شدن آنها از bus مشترک استفاده می‌شود.

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

Dotmatrixani

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

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

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

 

روش کار:

دیودها را به صورت یک مربع 4 در 4 بر روی برد قرار داده و در هر سطر پایه‌های کاتد را به یکدیگر متصل کرده و در انتها یک مقاومت به آن وصل کنید.

سپس در هر ستون پای‌های آند را به یکدیگر متصل کنید. به این ترتیب 8 سیم برای کنترل 16 LED بدست می‌آید که به ترتیب آنها را به پایه‌های 2 تا 9 از Uno متصل می‌کنیم.

 display_matrix_led_schem

برای برنامه ریزی برد به صورت زیر عمل می‌کنیم. در این برنامه در هر چرخه اجرا تعدادی از 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);    
}

About محمد شمس

برنامه‌نویس، طراح انیمیشن و علاقمند به هوش مصنوعی

3 Comments

  1. خیلی عالی بود مهندس، مقالات الکترونیک بیشتر قرار بده

  2. سلام جناب مهندس، برنامه هاتون مثل همیشه عالی و کاربردی است. موفق باشید.

  3. سلام
    با تشکر از برنامه های کاربردی شما .

پاسخ دهید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *


2 × 6 =