آموزش راه اندازی ماژول دات ماتریس MAX7219 با آردوینو

آموزش راه اندازی ماژول دات ماتریس MAX7219 با آردوینو

در این مقاله نحوه راه اندازی ماژول نمایشگر دات ماتریس MAX7219 را با استفاده از آردوینو به شما آموزش می‌دهیم. اما پیش از آن با این ماژول آشنا خواهید شد.

حتما شما هم به LEDهای بزرگ و کوچکی که در خیابان نصب می‌شوند، برخورد کرده‌اید. در اکثر این LEDها از دات ماتریس استفاده شده است. اما دات ماتریس دقیقا چیست؟

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

برای کنترل یک دات ماتریس‌، تقریبا می‌توان گفت گزینه‌ای بهتر از آی سی MAX7219 وجود ندارد. دلیل آن هم این است که این روش بسیار ارزان و ساده است. علاوه بر این، با اتصال زنجیره‌ای از این آی سی‌ها، می‌توانید در پروژه‌های بزرگتر، 2 دات ماتریس یا حتی تعداد بیشتری از آن‌ها را کنترل کنید.

به هر حال باید گفت که کار با نمایشگرها بسیار جذاب و البته کاربردی است. پس بهتره وقت را هدر ندهیم و شروع کنیم!

نگاهی کلی به ماژول نمایشگر دات ماتریس MAX7219

ماژول دات ماتریس MAX7219 در واقع همراه یک آی سی MAX7219 است و انواع مختلفی دارد. اما دو نوع آن از همه شناخته شده‌تر است: ماژول generic و ماژول FC-16.

ماژول دات ماتریس FC-16 و ماژول دات ماتریس generic

یک ماژول دات ماتریس MAX7219 معمول، شامل صفحه نمایش دات ماتریس 8×8 و آی سی MAX7219 است که این آی سی به عنوان درایور صفحه نمایش LED عمل می‌کند.

در ادامه با نمایشگر دات ماتریس 8×8 و آی سی MAX7219 بیشتر آشنا خواهید شد.

نمایشگر دات ماتریس

دات ماتریس 8×8

یک نمایشگر دات ماتریس 8×8 تک رنگ، دارای 16 پایه (8 پایه برای سطرها و 8 پایه برای ستون‌ها) است. تمامی سطرها و ستون‌ها به هم متصل شده‌اند تا تعداد پایه‌ها به حداقل برسد. اگر این کار انجام نشود، یک دات ماتریس 8×8 به 65 پایه (یک پایه به ازای هر LED و یک پایه مشترک آند یا کاتد) نیاز خواهد داشت. درحالی‌که با اتصال سطرها و ستون‌ها تنها به 16 پایه نیاز است. به این روش یعنی کنترل تعداد زیادی LED با پایه‌های کمتر، مالتی پلکسینگ گفته می‌شود.

ساختار داخلی نمایشگر دات ماتریس 8×8

در روش مالتی پلکسینگ، هر ستون برای مدت زمان بسیار کوتاهی روشن شده و در همین زمان LEDهای آن ستون با آدرس دادن سطر متناظر روشن می‌شوند. ستون‌ها به قدری با سرعت خاموش و روشن می‌شوند (هر چند صدم یا هزارم ثانیه یکبار) که چشم انسان تصور می‌کند تمامی LEDها روشن شد‌ه‌ است. دلیل این موضوع، مدت زمان ماندگاری تصاویر در شبکیه چشم انسان است. با این تفاسیر، در هر لحظه تنها کافی است حداکثر 8 ال ای دی روشن شود.

خاموش و روشن شدن سریع ال ای دی ها در دات ماتریس

آی سی MAX7219

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

همان‌طور که در بخش قبل گفتیم، در روش مالتی پلکسینگ، با اتصال سطرها و ستون‌ها نمایشگر دات ماتریس 8×8، می‌توان با پایه‌های کمتری، LEDهای بیشتری را کنترل کرد. اما یکی از ویژگی‌های نه چندان جالب این تکنیک این است که شما باید از 8 ترانزیستور برای تامین جریان استفاده کنید و برای ثابت نگه داشتن یک تصویر، مجبورید مرتبا هر ستون را تازه‌سازی کنید. اما خوشبختانه در چنین شرایطی، آی سی MAX7219 می‌تواند به کمک شما بیاید. این آی سی همه کارهای کنترل و رفرش کردن را برای شما انجام می‌دهد. تنها کاری که شما باید انجام دهید این است که دستورات سریال را از طریق رابط 4 پین SPI ارسال کنید و بقیه کارها را به آی سی MAX7219 بسپارید. این آی سی به‌صورت خودکار مابقی کارها را انجام خواهد داد.

آی سی MAX7219

این آی سی می‌تواند به‌طور کامل 64 ال ای دی مجزا را کنترل کند. به عنوان مثال می‌تواند نور چندین LED را یکسان نگه دارد و به شما این امکان را دهد تا روشنایی LEDها را چه به‌صورت نرم‌افزاری و چه به‌صورت سخت‌افزاری تنظیم کنید. زمانی‌که میکروکنترلر محتوای صفحه نمایش را به روز می‌کند، MAX2719 کار رفرش کردن صفحه با فرکانس 800Hz را به‌صورت خودکار انجام می‌دهد. در نتیجه میکروکنترلر دیگر وظیفه رفرش کردن صفحه و نمایش داده نخواهد بود و می‌تواند به کارهای مهم‌تری بپردازد.

برای صرفه‌جویی در مصرف انرژی، حتی می‌توانید صفحه نمایش را خاموش کنید و در این حالت هم به آی سی داده‌ ارسال کنید. یکی دیگر از مزیت‌های MAX7219 این است که هنگام روشن شدن، صفحه نمایش را خاموش نگه می‌دارد تا در ثانیه‌های اول راه‌اندازی، نوشته‌های عجیب و ناخواسته بر روی صفحه ظاهر نشود. آی سی MAX7219 از طریق رابط SPI ارتباط برقرار می‌کند. بنابراین، تنها به 3 پین داده برای اتصال به میکروکنترلر نیاز دارد. علاوه بر این، شما می‌توانید چندین ماژول دات ماتریس را زنجیروار به هم متصل کنید تا با همین 3 سیم، صفحه نمایش بزرگتری داشته باشید.

تعیین حداکثر جریان و روشنایی

همان‌طور که قبلا گفته شد، آی سی MAX7219 به شما این امکان را می دهد تا روشنایی نمایشگر را به صورت سخت افزاری یا نرم ‌افزاری یا هر دو تنظیم کنید. برای تنظیم روشنایی در سطح سخت افزار، باید مقدار مقاومتی را که در بردهای معمول MAX7219 وجود دارد، تغییر دهید. این مقاومت در شکل زیر با RSET نشان داده شده است.

مقاومت RSET ماژول دات ماتریس MAX7219

اما نقش این مقاومت چیست؟

مقاومت RSET، وظیفه تعیین حداکثر جریانی که به LEDها وارد می‌شود و تنظیم روشنایی کل صفحه نمایش را برعهده دارد. جدول زیر مقادیر مقاومتی را نشان می‌دهد که شما باید با توجه به ولتاژ و جریان LED ماتریس خود از آن‌ها استفاده کنید. برای مثال، اگر LED شما 2V و 20mA باشد، مقدار مقاومت باید 28KΩ قرار داده شود. (مقادیر داخل جدول برحسب کیلو اهم است).

جدول مقادیر مقاومت RSET برای تنظیم روشنایی


نحوه تنظیم روشنایی به‌صورت نرم‌افزاری را در بخش‌های بعدی بررسی می‌کنیم.

پایه‌های ماژول دات ماتریس MAX7219

قبل از راه اندازی ماژول دات ماتریس با آردوینو ، باید بدانید که از هر ماژول دات ماتریس MAX7219 که استفاده کنید، دو کانکتور روی آن وجود خواهد داشت:

پایه‌های ماژول دات ماتریس MAX7219

کانکتور ورودی:

از پایه‌های کانکتور ورودی که در یک طرف ماژول قرار دارد، برای ارتباط با میکروکنترلر استفاده می‌شود.

VCC به 5V متصل می‌شود. به‎خاطر جریان‌کشی زیاد صفحه نمایش (تا 1A، اگر روشنایی تا حداکثر زیاد شود)، معمولا توصیه شده است که به جای اتصال به تغذیه 5V آردوینو، آن را مستقیما به منبع تغذیه خارجی متصل کنید. اگر این کار را انجام نمی‌دهید، حتما روشنایی را کمتر از 50% نگه دارید تا رگولاتور ولتاژ آردوینو بیش از حد گرم نشود.

GND به زمین مشترک متصل می‌شود.

DIN پایه دیتای ورودی است. این پایه را می‌توانید به هر کدام از پایه‌های دیجیتال میکروکنترلر متصل کنید.

CS/LOAD پایه انتخاب چیپ (Chip Select) است که برخی اوقات با نام بار (LOAD) شناخته می‌شود. این پایه را هم می‌توانید به هر کدام از پایه‌های دیجیتال میکروکنترلر متصل کنید.

CLK پایه کلاک است. این پایه را هم می‌توانید به هر کدام از پایه‌های دیجیتال میکروکنترلر متصل کنید.

کانکتور خروجی:

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

VCC به 5V ماژول بعدی متصل می‌شود.

GND به GND ماژول بعدی متصل می‌شود.

DOUT دیتای خروجی است و به پایه DIN ماژول بعدی متصل می‌شود.

CS/LOAD به CS/LOAD ماژول بعدی متصل می‌شود.

CLK به CLK ماژول بعدی متصل می‌شود.

سیم‌کشی – راه اندازی ماژول نمایشگر دات ماتریس MAX7219 با آردوینو

در بخش های قبلی شما را برای راه اندازی ماژول دات ماتریس MAX7219 با آردوینو آماده کردیم. اما در اینجا قصد داریم این کار را آغاز کنیم.

قطعات ضروری برای این پروژه به شرح زیر است:

بیایید ابتدا با تغذیه ماژول شروع کنیم. به خاطر اینکه صفحه نمایش جریان زیادی می‌کشد، ماژول را به‌جای تغذیه 5V آردوینو، با منبع تغذیه خارجی راه‌اندازی کنید. البته اگر قصد استفاده از یک ماژول تکی دات ماتریس MAX7219 را دارید، می‌توانید تغذیه آن را به تغذیه آردوینو متصل کنید، اما توصیه ما این است که تا حد امکان از این کار پرهیز کنید.

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

به این نکته توجه داشته باشید که هر برد آردوینو، پایه‌های SPI مختص به خود را دارد و به همین دلیل، اتصال هر یک از آن‌ها به ماژول هم متفاوت خواهد بود. به عنوان مثال برای بردهای UNO/Nano V3.0 پایه‌های SPI عبارتند از digital13 (SCK), 12 (MISO), 11 (MOSI) و 10 (SS).

در‌صورتی‌که از برد آردوینو دیگری استفاده می‌کنید، بهتر است قبل از کار با آن، به دیتاشیت آردوینو خود مراجعه کنید و پایه‌های SPI برد آن را بررسی نمایید. در تصویر زیر می‌توانید نحوه اتصال ماژول Generic MAX7219 به آردوینو را مشاهده کنید:

نحوه سیم‌کشی ماژول دات ماتریس Generic MAX7219 به آردوینو

در این تصویر هم نحوه اتصال ماژول FC-16 MAX7219 به آردوینو نشان داده شده است:

نحوه سیم‌کشی ماژول دات ماتریس FC-16 MAX7219 به آردوینو

اگر می‌خواهید چندین صفحه نمایش را زنجیروار به هم متصل کنید و یک نمایشگر بزرگتر بسازید، DOUT اولین صفحه نمایش را به DIN صفحه نمایش بعدی متصل کنید. پایه‌های VCC ، GND،  CLK و CS بین صفحات مشترک خواهند بود. پس از اینکه اتصالات ماژول دات ماتریس شما به آردوینو به اتمام رسید، زمان کدنویسی است!

نصب کتابخانه

کنترل ماژول دات ماتریس MAX7219، کار زیادی می‌برد و ممکن است کمی دشوار باشد. اما خوشبختانه کتابخانه MD_Parola نوشته شده است تا کار با این ماژول را برای شما راحت کند. به کمک این کتابخانه می‌توانید با دستوراتی ساده صفحه نمایش خود را کنترل نمایید.

برای نصب این کتابخانه، مسیر Sketch > include Library > Manage Libraries، در نرم‌افزار آردوینو طی کنید. سپس، کمی صبر کنید تا Library Manager، لیست کتابخانه‌ها را دانلود و لیست کتابخانه‌های نصب شده را بروز کند.

انتخاب گزینه Manage Libraries در نرم‌افزار آردوینو به‌منظور نصب کتابخانه MD_MAX72XX

در قسمت جستجو عبارت max72xx را بنویسید. دنبال کتابخانه MD_MAX72XX از MajicDesigns بگردید. آن را باز و نصب کنید.

جستجو کلمه max72xx در Library Manager و نصب کتابخانه MD_MAX72XX

کتابخانه MD_MAX72XX، کتابخانه‌ای مخصوص سخت افزار است که از توابع سطح پایین استفاده می‌کند. این کتابخانه حتما باید با کتابخانه MD_Parola همراه شود تا بتواند انیمیشن‌های متنی مانند اسکرول و افکتهای محو شدن متن را بسازد.

بنابراین، کتابخانه MD_Parola را نیز نصب کنید.

نصب کتابخانه MD_Parola از Library Manager

در ادامه به عنوان نمونه می‌خواهیم ابتدا متن را با کمک یک نمونه کد ساده بر روی دات ماتریس نشان دهیم. پس از آن نیز نمونه کد اسکرول کردن متن را با هم بررسی خواهیم کرد.

کد ساده آردوینو – نمایش متن

در اینجا، شما باید یک متن ساده را بدون انیمیشن خاصی، بر روی نمایشگر دات ماتریس نشان دهید. اما پیش اینکه نمونه کد آن را بارگذاری کنید، باید تغییراتی در آن ایجاد کنید تا دقیقا کاری را انجام دهد که شما می‌خواهید. برای ایجاد تغییرات، باید دو متغیر زیر را تغییر دهید:

  • HARDWARE_TYPE
  • MAX_DEVICES
تغییر دو متغییر HARDWARE_TYPE و MAX_DEVICES در آردوینو

متغییر اول یعنی HARDWARE_TYPE به آردوینو نشان می‌دهد که شما از کدام نسخه ماژول دات ماتریس استفاده می‌کنید:

  • اگر از ماژول Generic استفاده می‌کنید، مقدار HARDWARE_TYPE را GENERIC_HW انتخاب کنید. آی سی MAX7219 این ماژول به‌صورت DIP و PCB آن معمولا سبز رنگ است. در تصویر زیر می‌توانید این ماژول را ببینید.
ماژول دات ماتریس Generic MAX7219

اگر از ماژول FC16_HW استفاده می‌کنید، مقدار HARDWARE_TYPE را FC16_HW را انتخاب کنید. آی سی MAX7219 در این ماژول به‌‍صورت SMD و PCB آن معمولا به رنگ آبی است. تصویر زیر ماژول FC16_HW را نشان می‌دهد.

ماژول دات ماتریس FC16_HW MAX7219

با متغیر دوم یعنی MAX_DEVICES، شما تعداد دات ماتریس‌های 8×8 مورد استفاده را مشخص می‌کنید. یک دات ماتریس 8×8، به عنوان 1 دستگاه به شمار می‌آید. بنابراین، اگر بخواهید یک ماژول 32×8 را کنترل کنید، باید این متغیر را برابر با 4 قرار دهید ( زیرا صفحه نمایش 32×8 شامل 4 آی سی MAX7219 است).

پس از انجام این تغییرات در این دو متغیر، کد زیر را بارگذاری کنید. در ادامه به جزئیات این کد می‌پردازیم.

// Including the required Arduino libraries
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>

// Uncomment according to your hardware type
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
//#define HARDWARE_TYPE MD_MAX72XX::GENERIC_HW

// Defining size, and output pins
#define MAX_DEVICES 4
#define CS_PIN 3

// Create a new instance of the MD_Parola class with hardware SPI connection
MD_Parola myDisplay = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);

void setup() {
	// Intialize the object
	myDisplay.begin();

	// Set the intensity (brightness) of the display (0-15)
	myDisplay.setIntensity(0);

	// Clear the display
	myDisplay.displayClear();
}

void loop() {
	myDisplay.setTextAlignment(PA_LEFT);
	myDisplay.print("Left");
	delay(2000);
	
	myDisplay.setTextAlignment(PA_CENTER);
	myDisplay.print("Center");
	delay(2000);

	myDisplay.setTextAlignment(PA_RIGHT);
	myDisplay.print("Right");
	delay(2000);

	myDisplay.setTextAlignment(PA_CENTER);
	myDisplay.setInvert(true);
	myDisplay.print("Invert");
	delay(2000);

	myDisplay.setInvert(false);
	myDisplay.print(1234);
	delay(2000);
}

خروجی

پس از بارگذاری کد بالا، باید جهت صفحه نمایش را درست قرار دهید تا خروجی را ببینید. اگر از ماژول Generic استفاده می‌کنید، جهت آن را طوری قرار دهید که آی سی MAX7219 در بالا قرار گیرد. اما اگر از ماژول FC-16 استفاده می‌کنید، جهت صفحه نمایش باید به گونه‌ای باشد که DIN، در سمت راست شما قرار بگیرد.

اگر به‌درستی همه مراحل را انجام داده باشید، خروجی زیر را خواهید دید:

توضیحات کد

در اولین قدم، باید تمام کتابخانه‌های لازم آردوینو را اضافه کنید. همان‌طور که قبلا گفته شد، کتابخانه MD_MAX72XX توابع سمت سخت افزار دات ماتریس را پیاده‌سازی می‌کند. در‌حالی‌که کتابخانه MD_Parloa جلوه‌های متنی را ایجاد می‌کند. علاوه بر این دو، شما باید کتابخانه SPI را نیز اضافه کنید. این کتابخانه به‌صورت پیش فرض در کامپایلر آردوینو نصب شده و موجود است. از این کتابخانه برای ارتباط بین صفحه نمایش و آردوینو از طریق SPI استفاده می‌شود.

#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>

در قدم بعدی، باید مشخص کنید از کدام سخت افزار استفاده می‌کنید. از آنجایی که ما در این آموزش از ماژول FC-16 استفاده کرده‌ایم، HARDWARE_TYPE را روی FC16_HW قرار داده‌ایم. تعداد آی سی‌های MAX7219 استفاده شده 4 است، به همین دلیل MAX_DEVICES را 4 قرار دادیم. در آخر نیز، پایه‌ای از آردوینو که به پایه CS صفحه نمایش متصل می‌باشد، تعریف شده است:

#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
#define MAX_DEVICES 4
#define CS_PIN 3

در مرحله بعد، یک شی از  کلاس MD_Parola با تابع ()MD_Parola ساخته شده است. این تابع به سه پارامتر نیاز دارد، اولین پارامتر نوع سخت‌افزار، پارامتر دوم، پایه CS و پارامتر سوم، حداکثر تعداد ماژول‌های متصل است.

MD_Parola myDisplay = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);

در بخش setup کد، ابتدا شی ساخته شده را با تابع ()begin مقداردهی اولیه می‌کنیم. روشنایی صفحه نمایش را می‌توانید با تابع ()setIntensity مشخص کنید. شما می‌توانید مقداری بین 0 (حداقل روشنایی) و 15 (حداکثر روشنایی) را برای ورودی این تابع انتخاب کنید. تابع ()displayClear نیز، صفحه را پاک می‌کند.

void setup() {
  myDisplay.begin();
  myDisplay.setIntensity(0);
  myDisplay.displayClear();
}

در بخش loop کد، ابتدا محل قرارگیری متن را با تابع ()setTextAlignment مشخص می‌کنیم. شما می‌توانید متن را با پارامترهای PA_LEFT ، PA_RIGHT و PA_CENTER به ترتیب در سمت چپ، راست و مرکز قرار دهید. سپس، متن “LEFT” را با دستور myDisplay.print(“LEFT”) چاپ کرده‌ایم. به این نکته توجه که حتما باید علامت‌های نقل قول ” ” را در دو طرف متن قرار دهید، زیرا در حال نمایش یک string  هستیم. اما اگر بخواهید اعداد را چاپ کنید، دیگر نیازی به علائم نقل قول نیست. برای مثال از دستور myDisplay.print(1234) باید برای چاپ عدد 1234 استفاده کرد. علاوه بر این، می‌توانید نمایش متن را به‌صورت معکوس انجام داد، یعنی متن با خاموش شدن LED ها نشان داده شود. این کار را می‌توانید با تابع ()setInvert انجام دهید.

void loop() {
	myDisplay.setTextAlignment(PA_LEFT);
	myDisplay.print("Left");
	delay(2000);
	
	myDisplay.setTextAlignment(PA_CENTER);
	myDisplay.print("Center");
	delay(2000);

	myDisplay.setTextAlignment(PA_RIGHT);
	myDisplay.print("Right");
	delay(2000);

	myDisplay.setTextAlignment(PA_CENTER);
	myDisplay.setInvert(true);
	myDisplay.print("Invert");
	delay(2000);

	myDisplay.setInvert(false);
	myDisplay.print(1234);
	delay(2000);
}

کد آردوینو – اسکرول کردن متن

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

// Including the required Arduino libraries
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>

// Uncomment according to your hardware type
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
//#define HARDWARE_TYPE MD_MAX72XX::GENERIC_HW

// Defining size, and output pins
#define MAX_DEVICES 4
#define CS_PIN 3

// Create a new instance of the MD_Parola class with hardware SPI connection
MD_Parola myDisplay = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);

void setup() {
	// Intialize the object
	myDisplay.begin();

	// Set the intensity (brightness) of the display (0-15)
	myDisplay.setIntensity(0);

	// Clear the display
	myDisplay.displayClear();

	myDisplay.displayScroll("Hello", PA_CENTER, PA_SCROLL_LEFT, 100);
}

void loop() {
	if (myDisplay.displayAnimate()) {
		myDisplay.displayReset();
	}
}

اگر همه چیز به‌درستی انجام شده باشد، خروجی زیر را خواهید دید:

توضیحات کد

احتمالا با نگاه به این نمونه کد متوجه خواهید شد که بخش اول آن تا آخر بخش Setup دقیقا مشابه کد مثال قبلی است و تنها تفاوت آن اضافه شدن دستور ()displayScroll در آخر بخش setup است.

myDisplay.displayScroll("Hello", PA_CENTER, PA_SCROLL_LEFT, 100);

همان‌طور که مشاهده می‌کنید، این تابع 4 آرگومان می‌گیرد:

displayScroll(pText, align, textEffect, speed)

  • pText : متن شما در اینجا قرار می‌گیرد.
  • align : محل قرار گرفتن متن را در حالتی‌که نمایشگر دات ماتریس متوقف است، مشخص می‌کند. برای مشخص کردن محل متن از دستورات مثال قبلی یعنی PA_RIGHT ، PA_LEFT و PA_CENTER استفاده کنید.
  • textEffect : این آرگومان، افکت اسکرول کردن را مشخص می‌کند. قرار دادن آن روی PA_SCROLL_LEFT متن را به سمت چپ اسکرول می‌کند.
  • speed : این آرگومان، سرعت انیمیشن را مشخص می‌کند. سرعت، زمان بین فریم‌های انیمیشن برحسب میلی‌ثانیه است. هر چه این مقدار کمتر باشد، سرعت انیمیشن بیشتر خواهد بود.

علاوه بر این 4 آرگومان، در قسمت loop، فقط دو تابع مورد استفاده قرار گرفته است تا امکان اسکرول کردن متن ایجاد شود. ابتدا از تابع ()displayAnimate در یک عبارت شرطی(if) استفاده می‌کنیم. این تابع متن را اسکرول کرده و زمانی که اسکرول به اتمام برسد، خروجی true را برمی‌گرداند. پس از تمام شدن اسکرول، صفحه را با تابع ()displayReset ریست می‌کنیم تا اسکرول کردن به صورت مداوم ادامه پیدا کند.

void loop() {
	if (myDisplay.displayAnimate()) {
		myDisplay.displayReset();
	}
}

کلام آخر

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

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

مقالات مشابه

۱۸ دیدگاه. Leave new

  • علیرضا اسدزاده
    فروردین ۳, ۱۴۰۱ ۱۸:۳۹

    واقعا از روان بودن متن و مطلب لذت بردم مرسی که هستید💙💙

    پاسخ
    • سلام علیرضای عزیز،
      خیلی خوشحالیم که دوست داشتی و مرسی از شما که همراه ما هستی و بهمون انرژی می‌دی.

      پاسخ
  • مهدی احمدی
    تیر ۲۶, ۱۴۰۱ ۱۶:۳۸

    عالی خدا خیرتون بده

    پاسخ
  • باسلام و خسته نباشید ، ببخشید سوال داشتم و اینکه بنده با oled کار میکنم ، یه مشکلی داشتم میتوانم ۳۰ عدد oled را با ارتباط سریال مثل دات ماتریس آدرس دهی کرد و بهم وصل بشن ، سوال دوم بنده با ارتباط i2c اول میخواستم ۳۰ عددssd1306 oled با ماژول TCA9548A را آدرس دهی کنم ولی به مشکل برخوردم که ۵عدد TCA را چطور آدرس دهی و کدنویسی بکنم و از کتابخانه هم نبود کد مربوط به اتصال چند TCA9548a خیلی ممنون

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

    پاسخ
    • سلام عباس عزیز،
      این کتابخانه به‌صورت پیش‌فرض از کاراکترهای فارسی پشتیبانی نمی‌کنه، اما امکان ساخت فونت در این کتابخانه فراهم شده که با استفاده از اون می‌تونی تمام حروف رو یکی یکی اضافه و استفاده کنی.
      اطلاعات بیشتر:
      https://majicdesigns.github.io/MD_MAX72XX/page_font_utility.html

      پاسخ
  • با سلام و سپاس از زحمات شما

    بنده می‌خوام با یک ماتریس ۸ در ۸ یه نمایشگر برای نمایش مقدار ۸ پتانسیومتر به صورت خطوط عمودی داشته باشم.
    با این ماتریس و همین کتابخانه امکان پذیره؟
    در صورت امکان راهنمایی بفرمایید.

    ارادت

    پاسخ
    • سلام و درود به بابک عزیز
      برای نمایش مشکلی نیست، تابع setColumn در همین کتابخانه برای روشن کردن هر ستون به شکل مجزا کاربرد داره، برای مشاهده مثالی از نحوه استفاده‌ش میتونید به مثال MD_MAX72xx_Test رجوع کنید و تابع columns رو ببینید. اما چالشی که شما خواهید داشت اینه که آردوینو UNO، فقط ۶ پین آنالوگ داره که برای خوندن ۸ پتانسیومتر کافی نیست. برای این موضوع هم راه‌حل‌های زیادی هست از جمله استفاده از دو برد آردوینو UNO، استفاده از برد آردوینو DUE که ۱۲ تا پین آنالوگ دارد، مالتی پلکس کردن پتانسیومترها یا استفاده از آی سی های ADC.
      موفق باشید 🙂

      پاسخ
  • در حقیقت اصلا نفهمیدم چیشد د
    با وجود اینکه اول داس خوندم بعد وین ۹۸ بعدش ایکس پی

    پاسخ
  • پویان عزیزی
    آذر ۱۹, ۱۴۰۲ ۱۶:۱۱

    سلام من می خواهم یک ارتباط وایرلس با وای فای که از هرجای جهان که در داخل گوشی زدم بتوانم گلخانه ای را که ساختم را کنترل کنم

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

      پاسخ
  • بسیار عالی و خوب

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

      پاسخ
  • با سلام و عرض ادب ممنون از مطالب بسیار خوب، قابل فهم و بسیار روان شما.من یه مدت خیلی با دات ماتریس ها کار کردم اما هر کاری کردم نتوانستم برنامه ای بنویسم که ۱۶*۳۶ را راه اندازی کنم.با بیسیک کار کردم و با زبان C خیلی آشنایی ندارم.اگه یه آموزش برای ۱۶ سطر بزارید خیلی خیلی ممنون میشم.خواهشا در صورت انتشار چنین آموزشی در صورت امکان یک نسخه برام ایمیل کنید تا راحت تر دسترسی داشته باشم خدا خیرتون بده

    پاسخ
    • سلام و درود خدمت شما دوست عزیز
      شما می توانید سوالتان رو با ذکر جزئیات (مدل و مشخصات دات ماتریس، تصویر مدار مدنظر) در سایت پرسش و پاسخ روبوایکیو مطرح کنید تا بتونیم راهنماییتون کنیم.
      Roboeq.ir/qa

      پاسخ

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

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

Fill out this field
Fill out this field
لطفاً یک نشانی ایمیل معتبر بنویسید.
You need to agree with the terms to proceed

پر بازدید ترین مقالات