آردوینو آردوینو Arduino Uno آموزش آردوینو نمایشگر Segment

آموزش راه اندازی ماژول DotMatrix 8×8 با آردوینو و ایجاد شکل‌های مختلف

نوشته شده توسط CiferTech

شاید برای شما هم پیش آمده است که بخواهید متن یا شکلی خاص را به نمایش در بیاورید یا یک تابلو روان کوچک در اتاق یا محل کار خود داشته باشید، خوشبختانه به کمک ماژول های DotMatrix می توانید براحتی این کار را انجام دهید.

 

ماژول دات ماتریکس

 


ویژگی های ماژول DotMatrix


ال ای دی های دات ماتریکس DotMatrix در اندازه های مختلفی یافت می شوند برای مثال ۸×۸ که از انواع پرطرفدار این نوع محسوب می شود، چرا از ماژول دات ماتریکس استفاده کنیم؟ ماژول های دات ماتریکس با استفاده از آی سی MAX7219 و سه کانال ارتباطی (Din/out , CLK , CS) و همچنین VCC و GND به ما امکان نمایس متن یا اشکال مدنظر را می دهد،از ویژگی های این ماژول ها امکان سری شدن با یکدیگر است یعنی می توانید براحتی یک تابلو روان کوچک در اتاق یا محل کار خود داشته باشد.


نحوه کارکرد DotMatrix led


دات ماتریکس ها بطور کلی و بدون اسفاده از ماژول دارای تعداد پایه های قابل توجهی هستند. برای مثال دات ماتریس ۸×۸ DotMatrix دارای ۱۶ پایه می باشد،در لحظه اول به نظر می رسد که همانند سون سگمنت ها از حالت های کاتد و آند مشترک پیروی می کنند اما از اگر این فرضیه درست باشد به ازای هر ال ای دی باید یک پایه خروجی داشته باشیم که یعتی در یک دات ماتریکس ۸×۸ باید ۶۴ پایه خروجی وجود داشته باشد اما همانطور که اطلاع دارید اصلا اینطور نیست. حال این سوال پیش می آید که ال ای دی ها در DotMatrix چگونه اتصالاتی دارند، در نظر داشته باشید که هیچ ای سی داخل این قطعات وجود ندارد. نوع اتصال در این قطعات به این صورت است که پایه های مثبت و منفی در ردیف های عمودی و افقی به یکدیگر متصل هستند به همین دلیل است که وقتی به یک پایه ولتاژ اعمال می‌کنیم بجای یک ال ای دی،چند ال ای دی در مختصات های مختلف روشن می‌شوند البته داستان به همین جا ختم نمی شود و چون مربوط به بحث ما نیست با آن نمی پردازیم.


نحوه راه اندازی ماژول DotMatrix 


آموزش تصویری در یوتیوب

ابتدا به کتابخانه led control نیاز ذاریم که با استفاده از این لینک می توانید دانلود کنید .

#include <LedControl.h>

با دستور بالا اقدام به فراخوانی کتابخانه کنید .


در این قسمت از کد پین های موجود در ماژول را به پین مدنظر در آردوینو ربط می دهیم .

int DIN = 12;
int CS =  11;
int CLK = 10;


در بخش بعدی با استقاده از نرم افزار زیر کد های مورد نیاز برای نمایش شکل مورد نظر را تولید می کنیم .

byte a[8]=     {کد های تولید شده,};

می توانید نرم افزار و کد مربوط به پروژه را از این لینک دانلود نمایید .

 


اتصالات DotMatrix 8×8



قطعات مورد نیاز


۱٫ برد آردوینو

۲٫ ماژول دات ماتریکس ۸×۸ 

۳٫ سیم برد برد

 


سورس کد آردوینو DotMatrix 


کدهای زیر را کپی کرده و در آردوینو IDE قرار دهید. سپس روی برد آردوینو آپلود کنید. چنانچه روش آپلود کدها را نمی‌دانید، به آموزش کار با برد آردوینو مراجعه کنید.

 

#include <LedControl.h>

int DIN = 12;
int CS =  11;
int CLK = 10;

byte a[8]=     {0x00,0xE9,0x89,0xE9,0x29,0xEF,0x00,0x00,};
byte b[8]=     {0x00,0xE7,0x94,0xE7,0x91,0xE7,0x00,0x00,};
byte c[8]=     {0x00,0xEC,0x8A,0x8C,0x8A,0xEA,0x00,0x00,};
byte d[8]=     {0x00,0xEE,0x49,0x4E,0x49,0xEE,0x00,0x00,};
byte e[8]= {0x00,0xF0,0x80,0xF0,0x80,0xF0,0x00,0x00,};


LedControl lc=LedControl(DIN,CLK,CS,0);

void setup(){
 lc.shutdown(0,false);       //The MAX72XX is in power-saving mode on startup
 lc.setIntensity(0,15);      // Set the brightness to maximum value
 lc.clearDisplay(0);         // and clear the display
}

void loop(){ 

    byte f[8]=   {0x00,0x66,0xFF,0xFF,0x7E,0x3C,0x18,0x00,};
    byte g[8]= {0xFF,0x99,0x00,0x00,0x81,0xC3,0xE7,0xFF,};
    byte h[8]=   {0x00,0x66,0xFF,0xFF,0x7E,0x3C,0x18,0x00,};
    byte i[8] = {0xFF,0x99,0x00,0x00,0x81,0xC3,0xE7,0xFF,};
    
    printByte(f);
     
    delay(1000);

    printByte(g);
    
    delay(1000);

    printByte(h);    

    delay(1000);

    printByte(i);

    delay(1000);
   
    printEduc8s();
   
    lc.clearDisplay(0);
    
    delay(1000);
}

void printEduc8s()
{
  printByte(a);
  delay(1000);
  printByte(b);
  delay(1000);
  printByte(c);
  delay(1000);
  printByte(d);
  delay(1000);
  printByte(e);
  delay(1000);
  
  
}

void printByte(byte character [])
{
  int i = 0;
  for(i=0;i<8;i++)
  {
    lc.setRow(0,i,character[i]);
  }
}

 


تصاویر پروژه DotMatrix 8×8


نمایش تصویر کریپر در ماژول دات ماتریکس

نمایش تصویر قلب با استفاده از ماژول دات ماتریکس

تمامی مراحل ضروری جهت اجرای پروژه در این آموزش توضبح داده شده است، مراحل را یک به یک اجرا کرده و در صورت هر گونه سوال از طریق بخش دیدگاه ها با ما در ارتباط باشید. 

در پایان نظرات و پیشنهادات خود را با ما درمیان بگذارید و با اشتراک گذاری این آموزش در شبکه های اجتماعی , از وبسایت دیجی اسپارک حمایت کنید.

 

درباره نویسنده

CiferTech

تبادل نظر و رفع عیب با ثبت دیدگاه

۴۵ دیدگاه

  • سلام ممنون بابت اموزش خوبتان من با پیام رسان بله متاسفانه یه مشکلی دارم همه موارد اوکی است و کار می دهد به درستی به ربات متصل می شود و خیلی عالی سرویس می دهد ولی مشکلم اینجاست که بعد از مثلا ۲ روز ارسال کامند و از این قبیل وقتی برد را اینترنتش قطع و وصل می شود برد از اول پیام های دریافتی را که قبلا اجرا. کرده را دوباره میاد دریافت می کند (یعنی من اگر روز قبل دستور دما را زده بود یا لامپ را بعد از روشن شدن مجدد میاد و همه اون دستورات را یکبار دیگر اجرا می کند )

  • سلام
    میگم اردوینو همیشه روشن باشه مثلا برای ۵ ماه
    اگه یه جای درست باشه مشکلی براش پیش نمیاد؟ خراب نمیشه؟

    • با سلام
      از جایی که آردوینو یک برد تست و آزمایشی برای پیاده سازی کد و در نهایت پروژه است پیشنهاد میشه چنین مدت زمانی مدام روشن نباشد، البته بستگی به پروژه نیز دارد.

      • مثلا برنامه اش یه فرستنده گیرنده ساده اس(با ماژول فرستنده گیرنده) ، مشکلی براش پیش میاد؟
        میشه از برد دیگه ای که دوام بیاره به جاش استفاده کرد ولی کد هاش همونجوری باشه؟

        • پیشنهاد می کنم بصورت بی وقفه از آردوینو کار نکشید و یا حداقل به برد استراحت بدید چون آردوینو یک برد صنعتی نیست (البته ممکنه هیچ مشکلی هم بوجود نیاد).

        • با سلام، اگر استفاده صنعتی از برد دارید، پیشنهاد می کنم برد مدار چاپی طراحی کنید با توجه به استاندارد هایی که احتیاج دارید.

  • سلام
    یک سوال ایا می توان رنگ یا شدت نور ماژول رو تغییر دهیم
    بعد اسم ان برنامه ای که با کشیدن اشکال به ما کدش را می دهد چیست چون برای من وقتی ان لینک رو باز می کنم به من ارور می دهد .
    ممنون

    • با سلام
      متاسفانه در این ماژول این امکان وجود ندارد، لینک دانلود تست شد مشکلی نبود لطفا دوباره تست (توجه داشته باشید پس کلیک بر روی لینک صفحه جدیدی برای شما باز می شود و سپس با کلیک بر روی code and software.zip دانلود شروع خواهد شد)

  • بسیار عالی ممنون. من جاهای دیگه گشته بودم ولی جواب نگرفتم فکر میکنم به خاطر LedControl lc=LedControl(DIN,CLK,CS,0); بوده که انتهاش صفر قرار داده شده. بسیار ممنونم. چندروز درگیر این موضوع بودم بالاخره حل شد.

  • با سلام و خسته نباشید ببخشید سوالی داشتم در مورد دات ماتریس ، بنده میخواهم فقط ستون اول را فقط روشن کنم به طور ساده همین کدشو چطور وارد دات ماتریس کنم ممنون میشم راهنمای بفرمایید تازه کار هستم اگه طریقه وارد کردن کد بفرمایید راه میفتم مشکل دارم اولش

  • باسلام و خسته نباشید ببخشید کد بالا را کپی میکنم ولی تو برنامه اردینو چجوری بیارمش پیدا نمیکنم کجا میره بعد از کپی یا خطا میده ممنون میشم چکار بکنم

      • باسلام درست شد آپلود کردم به اردینو فقط یه سوالی دیگه داشتم تعداد ماتریس که میخام استفاده کنم زیاد هست صد عدد خوب ، و در هر دات ماتریس اعداد و تصویر فرق دارن به حساب برای هرکدام سطر ستون متفاوت باید روشن بشن و جداگانه برای صد ماتریس برنامه بنویسیم خیلی طولانی میشه راهی نداره کدشو چند خط بشه با شیفت دادن یا که به نظر شما شیفت ریجستر استفاده کنم بعدشم روش کدنویسی با شیفت ریجستر که دات ماتریس استفاده بشه کدشو فرق می‌کنه با مگ س ۷۲۱۹ ممنون هستم راهنمای بفرمایید

      • با سلام و خسته نباشید ببخشید یه سوالی دارم جواب ندادین و اینکه میخواستم اول آیا دات ماتریس ۱۳ در ۱۰ در بازار وجود دارد و برنامه نویسی با دات ماتریس ۸در۸ فرق خواهد کرد و دوم اینکه بنده با صد عدد دات ماتریس میخواستم تابلو روان درست کنم طوری که برای هر کدام جداگانه از دات ماتریس ستون متفاوت میخام روشن بشه و کد نویسی صد دات ماتریس جداگانه طولانی خواهد بود کدام روش را اجرا کنم که آسانتر باشه آیا تابلو روان با شیفت ریحستر میشه انجام داد یا نه ، ممنون راهنمای بفرمایید

        • در مورد سوال اول، این مورد وابسته به نوع تراشه موجود در ماژول ها است.
          و سوال دوم. اگر قصد ساخت تابلو روان دارید این امکان هست که ماژول ها بطور سری به یکدیگر متصل شوند و در ادامه یکدیگر کارکنند متوجه لزوم آدرس دهی جداگانه نشدم!

          • باسلام و خسته نباشید و سپاس از شما که زحمت میکشید خدا عمرتون بده ، تشکر بینهایت از انسانهای غرب زمین که این امکانات را برای همه انسانها بوجود آوردن آدم حیرت زده می‌شده از این علوم برنامه نویسی که بوجود آوردن مرحبا، واما خانوم مهندس ببخشید من پرسیدم ازشما که دات ماتریس ۱۳ در ۱۰ بازار وجود نداره شما گفتین وابسته به نوع تراشه هست ، خوب از چه ای سی استفاده کنم که پوشش بده این دات ماتریس ۱۳در ۱۰ و سوال دوم اینکه میخام این دات ماتریس به تعداد صد عدد بهم وصل کنم و برنامه نویسی برای هر دات ماتریس جداگانه خواهد بود یعنی اینکه مثلا B1110011111111 ستون اول دات ماتریس اول این کد را دریافت بکنه و B0000111111111 دات ماتریس دوم ستون اولش این کد را دریافت بکنه و بهمین ترتیب الا آخر ،فقط خانوم مهندس مشکل اول من طریقه درست کردن این ماژول با چه ای سی شروع کنم به ساختش پوشش بده ۱۳ تا ستون و ۱۰ سطر را ، ای سی مکس ۷۲۱۹ که بتونه این دات ماتریس ۱۳ در ۱۰ را پوشش بده وجود دارد یا که از شیفت ریحستر بهم وصل کنم این تعداد پایه را پوشش بده ، با تشکر از شما

      • باسلام و خسته نباشید ببخشید یه سوالی داشتم برای نوشتن برنامه برای دو عدد دات ماتریس جداگانه کدنویسی بشه ،نمیشه دیتا هر دو دات ماتریس را تو یک کارکتر تعریف و بعد با حلقه فور به هرکدام از ماتریس دیتا را فرستاد مثل کدنویسی Avr با سپاس از شما

          • با سلام با سپاس از شما ،بنده نگاه کردم تو برنامه نویسی Avr اینترنت هرچه چقدر دات ماتریس باشه تو یک کارکتر قرار میده بعد میاد با حلقه فور ۸تا ۸تا قرار میده تو دات ماتریس بنده همین کار رو کردم تو اردینو و تغییر دادم ۱۶ ارایه تو متغیر قرار دادم ۸تا ۸تا قرار دادم حلقه فور ، کامپایل شد ارور نداد ولی دیتای همون ۸تای اولی میره تو دات ماتریس هم اول هم دوم اصلا توجهی به برنامه نویسی نداره کار خودش می‌کنه ۸تا بعدی برای دات ماتریس دوم نمیره ، برای دات ماتریس هرکدام می‌نویسم پاک بشه روشن بشه ، نمیشه شما بگید چکار کنم ممنون از زحمات شما خدا خیرتون بده لازم دارم

            • با سلام، این مورد ممکن است به این دلیل این باشد که شما با ساختار کتابخانه نوشته شده متناسب با آردوینو کار می‌کنید. برای درک بهتر کتابخانه داکیومنت های اصلی کتابخانه را مطالعه کنید.

  • باسلام و خسته نباشید و سپاس از شما که زحمت میکشید خدا عمرتون بده ، تشکر بینهایت از انسانهای غرب زمین که این امکانات را برای همه انسانها بوجود آوردن آدم حیرت زده می‌شده از این علوم برنامه نویسی که بوجود آوردن مرحبا، واما خانوم مهندس ببخشید من پرسیدم ازشما که دات ماتریس ۱۳ در ۱۰ بازار وجود نداره شما گفتین وابسته به نوع تراشه هست ، خوب از چه ای سی استفاده کنم که پوشش بده این دات ماتریس ۱۳در ۱۰ و سوال دوم اینکه میخام این دات ماتریس به تعداد صد عدد بهم وصل کنم و برنامه نویسی برای هر دات ماتریس جداگانه خواهد بود یعنی اینکه مثلا B1110011111111 ستون اول دات ماتریس اول این کد را دریافت بکنه و B0000111111111 دات ماتریس دوم ستون اولش این کد را دریافت بکنه و بهمین ترتیب الا آخر ،فقط خانوم مهندس مشکل اول من طریقه درست کردن این ماژول با چه ای سی شروع کنم به ساختش پوشش بده ۱۳ تا ستون و ۱۰ سطر را ، ای سی مکس ۷۲۱۹ که بتونه این دات ماتریس ۱۳ در ۱۰ را پوشش بده وجود دارد یا که از شیفت ریحستر بهم وصل کنم این تعداد پایه را پوشش بده ، با تشکر از شما

    • با سلام (البته آقا هستم نه خانوم)، من برای این نوع پروژه فقط با ic MAX7219 کار کردم، که برای هر ماژول ماتریس led با ابعاد ۸×۸ کاربرد دارد و برای آدرس دهی ماتریس های بعدی توسط دیتای خروجی هر IC انجام می‌شود. برای موارد دیگر من تجربه‌ای ندارم.

  • سلام اگر چند تا ماژول دات ماتریس رو با هم یکی کرده باشیم و سری شده باشن چطوری میشه با همین کتابخونه کنترلش کرد کل تابلو رو

  • با سلام و خسته نباشید ببخشید بنده از پایه‌های اردینو برای دات ماتریس استفاده کردم ۸در۸ مشکلی که دارم تو قسمت کارکترش و نشان دان شکل مورد نظر که به صورت قلب هست کدش باینری هست میخواهم به صورت ارایه هگزا باشد تبدیل کردم همه ال ای دی ها روشن شدن و قلب نشان داده نشد ممنون راهنمای کنید ، کدش به این صورت هست . چطوری به هکز تبدیل کنم ارایه را ۱,۱,۱,۱,۱,۱,۱,۱,
    ۱,۱,۱,۱,۰,۰,۰,۰
    ۱,۱,۱,۱,۰,۰,۰۱,
    .
    .
    .

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

  • سلام ببخشید واقعا لینک کار نمی کنه نمی دونم شما با چه سرویسی میرد اما کار نمی کنه خواهشا یا یه لینک جدید بدید یا اسم برنامه را بگید