📜 ماموریت ۸۲: متن متحرک روی ماتریس
حروف را ستونبهستون در یک آرایه بذار. هر بار یه ستون جلو برو (offset++) و ۸ ستون را روی ماتریس بکش.
سطح: چالشی ⭐⭐⭐ · مود: آردوینو — با کد
هدفها
- ☐ یه آردوینو روی صحنه باشه
- ☐ یه ماتریس LED با MAX7219
- ☐ ماتریس کشیده بشه
- ☐ یه جابهجایی (offset) که حرکت بده
- ☐ عملگر بیتی برای ساختن ردیف
- ☐ شبیهسازی در حال اجرا
قطعههای لازم
- Arduino Uno
- LED Matrix 8×8 (MAX7219)
💡 گیر کردی؟ داخل شبیهساز راهنما را ببین، و اگر باز هم نشد دکمهی «برام حلش کن» مدار را برایت میچیند تا ببینی چطور کار میکند.
جواب کامل
اول خودت امتحان کن! بعد جواب را ببین 👀
سیمکشی
- Arduino Uno (VCC5) ⟷ LED Matrix 8×8 (MAX7219) (VCC)
- LED Matrix 8×8 (MAX7219) (GND) ⟷ Arduino Uno (GND1)
- Arduino Uno (D12) ⟷ LED Matrix 8×8 (MAX7219) (DIN)
- Arduino Uno (D10) ⟷ LED Matrix 8×8 (MAX7219) (CS)
- Arduino Uno (D11) ⟷ LED Matrix 8×8 (MAX7219) (CLK)
کد
// Scrolling text "HI" on the 8x8 matrix
#include <LedControl.h>
LedControl lc(12, 11, 10, 1);
// One byte per column, bit 0 = top row. "H I" plus blank space.
byte cols[16] = {
0x7E, 0x08, 0x08, 0x08, 0x7E, 0x00, // H
0x42, 0x7E, 0x42, 0x00, // I
0x00, 0x00, 0x00, 0x00, 0x00, 0x00
};
int offset = 0;
void setup() {
lc.shutdown(0, false);
lc.setIntensity(0, 5);
lc.clearDisplay(0);
}
void loop() {
for (int r = 0; r < 8; r++) {
byte row = 0;
for (int c = 0; c < 8; c++) {
byte col = cols[(offset + c) % 16];
if ((col >> r) & 1) row = row | (B10000000 >> c);
}
lc.setRow(0, r, row);
}
offset = (offset + 1) % 16; // move one column to the left
delay(120);
}
ماموریتهای مشابه
⏰
ماموریت ۸۰: ساعت زنگدار
🚪
ماموریت ۸۴: در هوشمند با کارت RFID
🔋
ماموریت ۷۵: زمان شارژ خازن
🌐
ماموریت ۸۹: کلید LED در صفحهی وب
📚 برای یاد گرفتن پایهها سری به دورهی آموزش آردوینو بزن · 🎯 همهی ماموریتها