🔴 ماتریس LED هشت در هشت (MAX7219)
ماژول ماتریس LED 8×8 با آیسی MAX7219 چیست؟ ۶۴ LED که فقط با سه سیم به آردوینو وصل میشوند. سیمبندی، کتابخانهی LedControl، کد کامل شکلک و چراغ دونده، و اشتباههای رایج.
ماتریس LED چیست؟
ماتریس ۸×۸ یعنی ۶۴ عدد LED که در هشت ردیف و هشت ستون کنار هم چیده شدهاند. اگر بخواهی هر LED را جدا به آردوینو وصل کنی، ۶۴ پایه لازم داری که آردوینو Uno ندارد. آیسی MAX7219 این مشکل را حل میکند: خودش همهی ۶۴ LED را میگرداند و از آردوینو فقط سه سیم میخواهد.
| مشخصه | مقدار |
|---|---|
| تعداد LED | ۶۴ (۸ ردیف × ۸ ستون)، معمولاً قرمز |
| آیسی راهانداز | MAX7219 |
| سیمهای داده | سه تا: DIN، CS و CLK |
| ولتاژ | ۵ ولت |
| شدت نور | ۱۶ پله (۰ تا ۱۵) از داخل برنامه |
| زنجیر کردن | تا ۸ ماژول پشت سر هم روی همان سه سیم |
سیمبندی
| مشخصه | مقدار |
|---|---|
| VCC | ۵ ولت |
| GND | GND |
| DIN | پایهی ۱۲ |
| CS | پایهی ۱۰ |
| CLK | پایهی ۱۱ |
هر سه پایهی دیجیتال دلخواه را میشود استفاده کرد؛ فقط باید همان شمارهها را در برنامه بنویسی.
کد کامل: یک شکلک
کتابخانهی LedControl لازم است. همین کد در شبیهساز هم اجرا میشود:
#include "LedControl.h"
// LedControl(DIN, CLK, CS, number of modules)
LedControl lc = LedControl(12, 11, 10, 1);
byte smile[8] = {
B00111100,
B01000010,
B10100101,
B10000001,
B10100101,
B10011001,
B01000010,
B00111100
};
void setup() {
lc.shutdown(0, false); // wake the chip up
lc.setIntensity(0, 8); // brightness 0..15
lc.clearDisplay(0);
for (int row = 0; row < 8; row++) {
lc.setRow(0, row, smile[row]);
}
}
void loop() {}
هر ردیف یک عدد دودویی است
هر ردیف ماتریس هشت LED دارد و با یک بایت توصیف میشود: هر رقم ۱ یعنی LED روشن و هر ۰ یعنی خاموش. B10000001 یعنی LED اول و آخر آن ردیف روشناند. چپترین رقم، چپترین LED است. برای طراحی شکل، یک جدول ۸×۸ روی کاغذ بکش، خانهها را سیاه کن و هر ردیف را به صفر و یک بنویس.
دستورهای کتابخانه
| دستور | کار |
|---|---|
shutdown(0, false) | بیدار کردن آیسی (بدون این، هیچ چیزی روشن نمیشود) |
setIntensity(0, 8) | شدت نور از ۰ تا ۱۵ |
clearDisplay(0) | خاموش کردن همهی LEDها |
setLed(0, row, col, true) | روشن یا خاموش کردن یک LED |
setRow(0, row, B11110000) | تعیین یک ردیف کامل |
setColumn(0, col, B11110000) | تعیین یک ستون کامل |
عدد اول در همهی دستورها شمارهی ماژول است: اولین ماژول ۰، دومی ۱ و همینطور تا آخر زنجیر.
چراغ دونده
void loop() {
for (int row = 0; row < 8; row++) {
for (int col = 0; col < 8; col++) {
lc.setLed(0, row, col, true);
delay(60);
lc.setLed(0, row, col, false);
}
}
}
در شبیهساز
در مود آردوینوی شبیه ساز مدار، «LED Matrix 8×8» را از جعبهابزار بیاور، VCC و GND را به ۵ ولت و زمین، و DIN، CS و CLK را به پایههای ۱۲، ۱۰ و ۱۱ بزن. برنامه را که اجرا کنی، همان نقطههای قرمز روی ماژول روشن میشوند. اگر shutdown(0, false) را ننویسی، در شبیهساز هم مثل قطعهی واقعی ماتریس تاریک میماند.
اشتباههای رایج
- ماتریس تاریک است: خط
lc.shutdown(0, false)جا افتاده. MAX7219 همیشه در حالت خواب روشن میشود. - جابهجا نوشتن پایهها: ترتیب در برنامه DIN، CLK، CS است، نه به ترتیب نوشتهی روی ماژول.
- شکل چرخیده یا آینهای: بعضی ماژولها ماتریس را ۹۰ درجه چرخیده لحیم کردهاند؛ جای ردیف و ستون را عوض کن.
- تغذیه از پایهی آردوینو: چند ماژول زنجیرشده با نور زیاد، جریان زیادی میکشند و به منبع تغذیهی جدا نیاز دارند.
ایدهی پروژه
- تاس دیجیتال با یک دکمه
- نمایش دما با سنسور DHT به شکل ستون
- بازی مار با دو دکمه یا پتانسیومتر
- تابلوی متن روان با چند ماژول زنجیرشده
🛒 قبل از خرید، لیست خرید قطعات الکترونیک را ببین و قطعه را اول در شبیه ساز مدار امتحان کن.
پروژههایی که از این قطعه استفاده میکنند
یاد بگیر، امتحان کن، بعد بخر
- ⚡ ماتریس LED هشت در هشت (MAX7219) را در شبیه ساز مدار آنلاین رایگان امتحان کن
- 🛒 راهنمای خرید ماتریس LED هشت در هشت (MAX7219) و قطعات الکترونیک