🔴 ماتریس LED هشت در هشت (MAX7219) (MAX7219 8x8 LED Matrix)
| اسم انگلیسی | MAX7219 8x8 LED Matrix |
|---|---|
| در ووکوی (Wokwi) | wokwi-max7219-matrix |
| دسته | 💡 LED و نمایشگر |
| در شبیهساز فارسی | مود آردوینو · رایگان |
ماتریس LED هشت در هشت با MAX7219 (MAX7219 8x8 LED Matrix) شصتوچهار LED را فقط با سه سیم داده کنترل میکند. آیسی MAX7219 روشن نگه داشتن نوبتی LEDها (Multiplexing) و تنظیم جریانشان را خودش انجام میدهد و آردوینو فقط میگوید هر سطر چه شکلی باشد. برای شکلک، فلش، تاس الکترونیکی، متن متحرک و بازی مار عالی است.
ماتریس MAX7219 در ووکوی (Wokwi)
شناسهاش wokwi-max7219-matrix است و پنج پایه دارد: VCC، GND، DIN، CS و CLK.
{
"version": 1,
"parts": [
{ "type": "wokwi-arduino-uno", "id": "uno", "top": 0, "left": 0, "attrs": {} },
{ "type": "wokwi-max7219-matrix", "id": "matrix1", "top": -120, "left": 60, "attrs": {} }
],
"connections": [
[ "matrix1:VCC", "uno:5V", "red", [] ],
[ "matrix1:GND", "uno:GND.1", "black", [] ],
[ "matrix1:DIN", "uno:11", "green", [] ],
[ "matrix1:CS", "uno:10", "orange", [] ],
[ "matrix1:CLK", "uno:13", "blue", [] ]
]
}
| پایهی ماتریس | وصل به |
|---|---|
| VCC | uno:5V |
| GND | uno:GND.1 |
| DIN | uno:11 |
| CS | uno:10 |
| CLK | uno:13 |
چرا 11 و 13؟ کتابخانهی LedControl هر پایهای را قبول میکند، ولی 11 و 13 پایههای MOSI و SCK سختافزار SPI اونو هستند؛ اگر بعداً سراغ کتابخانههایی بروی که از SPI سختافزاری استفاده میکنند، سیمکشیات آماده است. ماتریس MAX7219 در تینکرکد فارسی جزو اشتراک پلاس است؛ مثالهایش برای خواندن رایگان باز میشوند و برای اجرا پلاس لازم داری.
سیمکشی با آردوینو (مدار واقعی)
ماژول واقعی دو طرف دارد: یک طرف پنج پایهی ورودی (VCC، GND، DIN، CS و CLK) و طرف دیگر پنج پایهی خروجی که بهجای DIN پایهی DOUT دارد و برای ماژول بعدی است. سیم آردوینو همیشه به طرف DIN میرود.
| پایهی ماژول | آردوینو Uno | نکته |
|---|---|---|
| VCC | 5V | برای یک ماژول با روشنایی متوسط، USB کافی است |
| GND | GND | زمین مشترک |
| DIN | پین 11 | داده |
| CS (گاهی LOAD) | پین 10 | انتخاب تراشه |
| CLK | پین 13 | کلاک |
برای زنجیر چندتایی، پنج پایهی خروجی هر ماژول را به پنج پایهی ورودی ماژول بعدی وصل کن و در کد عدد آخر سازندهی LedControl را تعداد ماژولها بگذار. ماژول اول، همان که به آردوینو نزدیکتر است، شمارهی ۰ دارد و در setRow(0, ...) همین عدد اول را میبینی.
کد نمونه: قلب تپنده
// MAX7219 8x8 matrix with LedControl: a beating heart
#include <LedControl.h>
// LedControl(DIN, CLK, CS, number of modules)
LedControl lc(11, 13, 10, 1);
byte bigHeart[8] = {
B00000000,
B01100110,
B11111111,
B11111111,
B11111111,
B01111110,
B00111100,
B00011000
};
byte smallHeart[8] = {
B00000000,
B00000000,
B00100100,
B01111110,
B01111110,
B00111100,
B00011000,
B00000000
};
void show(byte img[]) {
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, img[row]);
}
}
void setup() {
lc.shutdown(0, false); // wake the MAX7219 up
lc.setIntensity(0, 6); // brightness 0..15
lc.clearDisplay(0);
}
void loop() {
show(bigHeart);
delay(300);
show(smallHeart);
delay(500);
}
هر سطر تصویر یک بایت است و هر بیت یک LED؛ B01100110 یعنی در آن سطر LEDهای دوم، سوم، ششم و هفتم روشناند. برای کشیدن شکل خودت، روی کاغذ شطرنجی هشت در هشت بکش و هر سطر را به صفر و یک تبدیل کن.
اشتباههای رایج
- صفحهی خاموش: MAX7219 در حالت خواب روشن میشود؛ بدون
lc.shutdown(0, false)هیچ LEDی روشن نمیشود. - تصویر چرخیده: اگر قلب به پهلو افتاده، جهت ماژول با کد یکی نیست؛ ماژول را بچرخان یا آرایه را ستونی بنویس.
- سمت DIN و DOUT: سیم آردوینو باید به سمت DIN ماژول برسد؛ در زنجیر چندتایی، DOUT هر ماژول به DIN بعدی میرود.
- نور کامل از USB: روشنایی ۱۵ با همهی LEDهای روشن جریان زیادی میکشد؛ برای چند ماژول روشنایی را پایین نگه دار یا منبع جدا بگذار.
آموزشهای مرتبط
- ماتریس LED ۸×۸ با MAX7219: شکلک، انیمیشن و تاس
- متن متحرک روی ماتریس در تینکرکد فارسی
- بازی مار (Snake) روی ماتریس LED
- شیفت رجیستر 74HC595
- اضافه کردن کتابخانه در ووکوی
سؤالهای رایج
چرا تصویر ماتریس MAX7219 چرخیده یا برعکس است؟
ماژولها جهت نصب متفاوتی دارند و در ووکوی هم ممکن است سطر و ستون با تصور تو یکی نباشد. یا ماژول را بچرخان یا در کد ترتیب سطرها و بیتها را برعکس کن.
چند ماتریس MAX7219 را میشود پشت هم بست؟
بله؛ DOUT هر ماژول به DIN ماژول بعدی میرود و CS و CLK بین همه مشترک است. در LedControl عدد آخر سازنده تعداد ماژولهاست و تا هشت ماژول را پشتیبانی میکند.