جستجو
برای جستجو متن مورد نظر وارد کنید و Enter بزنید برای بستن Esc بزنید.
در این آموزش می خواهیم با تایپ متن دلخواه خود در برنامه ترمینال اردوینو ان را روی ماژول دات ماتریس نمایش دهیم و ماژول را تبدیل به یک تابلو روان نماییم.در واقع اطلاعات بصورت زنده از پورت سریال دریافت و متن مورد نظر بصورت تابلو روان روی ماژول دات ماتریس نمایش داده می شود.برای شروع نیاز به ماژول دات ماتریس با تراشه Max7219 و همچنین ماژول اردوینو Mega2560 داریم.
در زیر وضعیت پایه های ماژول را مشاهده می کنید:

این ماژول در سمت چپ خود دارای 5 پایه می باشد که پایه VCC ان باید به ولتاژ 5 ولت متصل گردد و پایه GND ان با پایه زمین اردوینو یکی شود همچنین پایه DIN ان باید به پایه MOSI میکروکنترلر متصل شود و پایه CLK ان به پایه کلاک SPI میکروکنترلر وصل شود .شما می توانید از هر ماژول اردوینو دیگری استفاده نمایید و پایه CS که پایه chip select ای سی می باشد را به هر پایه ی دلخواه متصل نمایید.ما از ماژول mega 2560 استفاده کرده ایم در زیر پایه های ان را مشاهده می کنید:

توضیحات برنامه :
#include <MD_Parola.h>
#include <MD_MAX72xx.h>
#include <SPI.h>
فراخوانی کتابخانه های مورد نیاز.در صورتی که دو کتابخانه را از قبل نصب ندارید انها را نصب نمایید.
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW
مشخص کردن نوع تراشه ماژول
#define MAX_DEVICES 1
مشخص کردن تعداد ماژول های مورد استفاده که در این پروژه یک عدد می باشد.
#define CS_PIN 10
مشخص کردن پایه chip select ماژول
MD_Parola myDisplay = MD_Parola(HARDWARE_TYPE, CS_PIN, MAX_DEVICES);
تعریف شئی از کلاس MD_Parola
char tempStr[100];
char cache[100];
int pos = 0;
bool getData = false;
void setup() {
Serial.begin(115200);
تنظیم بادریت پورت سریال
myDisplay.begin();
راه اندازی ماژول
myDisplay.setIntensity(3);
تنظیم شدت نور ماژول که از سطح 0 تا 15 قابل تنظیم می باشد.
myDisplay.displayClear();
myDisplay.displayScroll(" ", PA_CENTER, PA_SCROLL_LEFT, 100);
}
void loop() {
if (myDisplay.displayAnimate()) {//if is finished
در صورت اتمام نمایش متن قبلی می توانیم متن جدید را نمایش دهیم.
myDisplay.displayScroll(cache, PA_CENTER, PA_SCROLL_LEFT, 100);
نمایش اطلاعات قبلی که قبلا در متغییر cache ذخیره شده اند.
if (getData == true) {
اگر دیتای جدیدی دریافت کردیم در این صورت متغییر getData در روتین سریال true می شود.
myDisplay.displayClear();
ابتدا صفحه را پاک کرده
myDisplay.displayScroll(tempStr, PA_CENTER, PA_SCROLL_LEFT, 100);
و متن جدید را بصورت اسکرول از سمت چپ و با تاخیر 100 میلی ثانیه نمایش می دهیم.
pos = 0;
for(int i = 0; i < 100; i++) {
cache[i] = tempStr[i];
tempStr[i] = 0;
}
کپی کردن اطلاعات در ارایه cache
getData = false;
و پاکسازی متغییرها تا برای دریافت بعدی اماده شوند.
}
myDisplay.displayReset();
اماده کردن ماژول برای اجرای بعدی
}
}
void serialEvent() {
ذخیره کارکترهای دریافتی در ارایه tempStr
while (Serial.available()) {
char temp_char = (char)Serial.read();
if(temp_char != '\n'){
tempStr[pos] = temp_char;
}
pos++;
if (temp_char == '\n' || pos == 100) {
اگر به کارکتر اینتر رسیدیم یا تعداد کارکترهای دریافتی به حد سایز ارایه دریافتی ما رسیده است دریافت را متوقف می کنیم و متغییر getData را true می کنیم تا در برنامه loop متن ما بروز شود.
Serial.println(tempStr);
getData = true;
break;
}
}
}

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

در ادامه می توانید فابل برنامه را دانلود نمایید: