این آموزش بخشی است از: ماتریس LED RGB مدل ESP32-S3
پروژه جالبی برای ایجاد کاربردهای سرگرمکننده و کاربردی با استفاده از ماژول ماتریس RGB ESP32-S3. لینک سایر ویدیوها در زیر این مقاله آمده است.
پروژه ماتریس LED RGB ESP32-S3 2 - متن متحرک
پروژه ۲ - پیمایش متن بر روی ماتریس LED RGB ESP32-S3
در این پروژه ما ماتریس LED RGB ESP32-S3 را به یک بنر متنی کوچک تبدیل میکنیم. یک پیام کوتاه (به عنوان مثالRobojax) بر روی نمایشگر RGB 8×8 حرکت میکند و میتوانید به راحتی متن، رنگ، روشنایی و سرعت حرکت را مستقیماً در شِفر (کود) تغییر دهید. این برای اعلانهای ساده، برچسبهای نام یا پیامهای وضعیت کوچک بسیار مفید است.
تمام شش پروژه در این مجموعه در یک ویدیو یوتیوب نمایش داده شده و توضیح داده میشوند. همان ویدیو در این صفحه جاسازی شده است، بنابراین میتوانید بهطور دقیق ببینید که نحوه اسکرول متن در زمان واقعی چگونه به نظر میرسد و هر تنظیم چگونه بر انیمیشن تأثیر میگذارد. شِفر (کود) کامل این پروژه بهطور خودکار در زیر مقاله بارگذاری میشود، و میتوانید ماجیول ماتریس LED RGB ESP32-S3 را از فروشگاههای وابسته که در بخش شِفر (کود) ذکر شدهاند، خریداری کنید.
این پروژه بر اساس مبانی پروژه ۱ (حرکت نقطه و کنترل رنگ) ساخته شده و رندرینگ متن و اسکرولینگ را با استفاده از کتابخانه NeoMatrix اضافه میکند.


بررسی کلی ماجیول ماتریس LED RGB ESP32-S3
سختافزار در تمامی شش پروژه یکسان است: یک میکروکنترلر ESP32-S3 با Wi-Fi و بلوتوث، یک ماتریس LED RGB 8×8 (۶۴ LED RGB قابل آدرسدهی)، یک شتابسنج QMI8658C، پورت USB و پایههای ورودی/خروجی قابل دسترسی.:contentReference[oaicite:0]{index=0}

- ESP32-S3- پردازنده اصلی با Wi-Fi/BLE برای پروژههای پیشرفته.
- ماتریس RGB ۸×۸- ۶۴ LED RGB برای آیکنها، متن و انیمیشنها.
- شتابسنج QMI8658C- در پروژههای بعدی برای کج شدن و جهتگیری استفاده شد.
- پورت USB- برای قدرت و برنامهنویسی از طریق محیط توسعه آردوینو استفاده میشود.
- پایههای نمایاناجازه میدهد تا از بورد مانند یک ESP32 معمولی برای ورودی و خروجیهای دیگر استفاده کنید.
- دکمههای راهاندازی / بازنشانی- برای بارگذاری فرمویر و راهاندازی مجدد طرحها.
در پروژه ۲ ما عمدتاً بر روی ماتریس و توابع متنی NeoMatrix تمرکز میکنیم. شتابسنج هنوز استفاده نشده است، اما همان برد تمام تعاملات و پروژههای بازی بعدی را نیز مدیریت خواهد کرد.

پروژههای پوششدادهشده در ویدیو (زمانبندی)
این ویدیو که همراه با این مقاله است، شامل تمامی شش پروژه میباشد. زمانبندی تقریبی به شرح زیر است:
- ۰۰:۰۰- مقدمه
- 00:01- نصب بوردهای ESP32
- 03:32- نصب کتابخانهها
- ۰۵:۳۲- پروژه ۱: نقطه متحرک
- ۱۱:۱۱- پروژه ۲: پیمایش متن
- ۱۲:۵۹- پروژه ۳: متن HTTP
- ۱۶:۴۱- پروژه ۴: نقطه مایل
- ۱۸:۵۵- پروژه 5: پیکان بالا
- ۲۰:۰۲- پروژه ۶: بازی هدف
شما تشویق میشوید که ویدئو را در حین خواندن این مقاله تماشا کنید. این ویدئو متن را بهصورت زنده بر روی ماتریس LED پیمایش میکند و تمام مراحل را در IDE آردوینو نشان میدهد.
نصب بردهای ESP32 در محیط برنامهنویسی آردوینو
قبل از اجرای شِفر (کود) اسکرول متن، مطمئن شوید که پشتیبانی از ESP32 در IDE آردوینو شما نصب شده است:
- باز کن
File > Preferencesو URL بردهای ESP32 را به "آدرسهای اضافی مدیر برد" اضافه کنید. - برو به
Tools > Board > Boards Manager…جستجو برایESP32و بسته رسمی ESP32 را نصب کنید. - از بورد ماتریس RGB ESP32-S3 خود را انتخاب کنید
Tools > Board. - ماجیول را از طریق USB متصل کنید و پورت COM/سریال صحیح را انتخاب کنید.
Tools > Port.
اگر نوع برد یا پورت صحیح نباشد، اسکچ بارگذاری نخواهد شد.
نصب NeoMatrix و کتابخانههای مورد نیاز
متن اسکرول با استفاده از آدافر بیت نیو ماتریکس و وابستگیهای آن پیادهسازی شده است. در ویدئو، آنها از طریق مدیر کتابخانه نصب میشوند.
شما نیاز خواهید داشت:
Adafruit NeoMatrixAdafruit NeoPixelAdafruit GFX Library
- باز کنید
Sketch > Include Library > Manage Libraries…. - جستجو برای
Adafruit NeoMatrixو کلیک کنیدنصب کنید. - هنگامی که خواسته شد، اجازه دهید نصب شود
Adafruit GFXوAdafruit NeoPixelبه عنوان وابستگیها.
اگر نصب موفقیت آمیز باشد، باید طرح های نمونه را زیر ببینیدFile > Examples > Adafruit NeoMatrixوFile > Examples > Adafruit NeoPixel.
پروژه ۲ - تنظیمات شِفر (کود) (اسکرول متن)
طراحی کامل متن اسکرول به طور خودکار در پایین این مقاله در وبسایت بارگذاری شده است. در اینجا تنها بر روی مقادیر تنظیماتی که احتمالاً میخواهید ویرایش کنید تمرکز میکنیم: پایه، اندازه ماتریس، روشنایی، رشته متنی، رنگ، سرعت اسکرول و جهت اختیاری.
تمام بخشهای زیر از قسمت پیکربندی در بالای طرح گرفته شدهاند تا بتوانید به سرعت رفتار را بدون تغییر در منطق اصلی تنظیم کنید.
پایه و اندازه ماتریس
مانند پروژه ۱، ماتریس RGB به GPIO ۱۴ متصل است و شامل ۶۴ LED (۸×۸) میباشد. مطمئن شوید که این دو خط با ماجیول شما مطابقت دارد:
// Pin connected to 8×8 RGB matrix
const int MATRIX_PIN = 14; // must be 14 on this module // Matrix size (width and height)
const int MATRIX_WIDTH = 8;
const int MATRIX_HEIGHT = 8;
اگر شما یک مثال از کتابخانه NeoMatrix کپی کنید، ممکن است از پایه یا اندازه متفاوتی استفاده کند؛ همیشه آنها را تغییر دهید تا با این برد مطابقت داشته باشند.
روشنایی متن
کنترل روشنایی معمولاً با مقداری بین ۰ تا ۲۵۵ انجام میشود، که در آن ۰ خاموش و ۲۵۵ حداکثر روشنایی است. یک مقدار متوسط معمولاً کافی است:
// Overall matrix brightness (0–255)
uint8_t matrixBrightness = 40; // comfortable indoor brightness // In
setup():
matrix.setBrightness(matrixBrightness);
اگر از صفحهنمایش در یک محیط روشن یا برای مدت کوتاهی استفاده میکنید، میتوانید این مقدار را افزایش دهید، اما از افزایش بیش از حد آن در صورت نزدیکی به صفحه نمایش اجتناب کنید.
متن برای پیمایش
پیام واقعی به صورت یک رشته ذخیره شده است. در ویدیو، متن نمونه این استRobojaxشما میتوانید آن را به هر برچسب یا پیغام کوتاهی که دوست دارید، تغییر دهید:
// Text to scroll on the 8×8 matrix const char scrollText[] = "Robojax";
// change this to your message
به یاد داشته باشید که این فقط یک ماتریس ۸×۸ است، بنابراین پیامهای بسیار طولانی زمان بیشتری برای نوردیدن خواهند گرفت و ممکن است خواندنشان دشوار شود.
رنگ متن (مقادیر RGB)
رنگ متن در حال حرکت با مؤلفههای قرمز، سبز و آبی (۰-۲۵۵) تنظیم میشود. به عنوان مثال، قرمز خالص است(255, 0, 0)سبز خالص است(0, 255, 0)و آبی خالص است(0, 0, 255). در طرح شما چیزی شبیه به این را خواهید دید:
// Text color (R, G, B) uint8_t textRed = 255; // red component uint8_t textGreen = 0; // green component uint8_t textBlue = 0; // blue component برای تغییر رنگ:
- زرد:
textRed = 255; textGreen = 255; textBlue = 0; - فیروزهای:
textRed = 0; textGreen = 255; textBlue = 255; - سفید:
textRed = 255; textGreen = 255; textBlue = 255;
ویدیو همچنین استفاده از یک انتخابکننده رنگ آنلاین برای پیدا کردن مقادیر RGB و سپس وارد کردن آنها در شِفر (کود) را نشان میدهد.:contentReference[oaicite:1]{index=1}
سرعت اسکرول (تأخیر بین فریمها)
سرعت پیمایش توسط یک مقدار تأخیر به میلیثانیه بین هر مرحله بهروزرسانی کنترل میشود. یک مقدار کوچکتر باعث حرکت سریعتر متن میشود؛ در حالی که یک مقدار بزرگتر آن را کندتر میکند. در طرح، باید یک متغیر مانند را پیدا کنید:
// Delay between scroll steps (in milliseconds) int scrollDelayMs = 50;
// smaller = faster, larger = slower
مثالها:
scrollDelayMs = 20;→ پیمایش سریع.scrollDelayMs = 50;→ سرعت متوسط (مشابه ویدیو).scrollDelayMs = 100;یا بیشتر → پیمایش کند و آسان برای خواندن.
درونloop()این مقدار در یک مورد استفاده میشودdelay(scrollDelayMs);بعد از هر بازنویسی موقعیت متن را فراخوانی کنید.
جهت اسکرول (اختیاری)
در پروژه "اسکرول متن پایه" ما معمولاً به سمت چپ اسکرول میکنیم، اما تعریف یک متغیر جهت نمادین مفید است تا بتوانید بعداً با سایر جهتها (چپ، راست، بالا، پایین) آزمایش کنید.
یک الگوی مشترک این است:
// Scroll direction selector // 0 = left, 1 = right, 2 = up, 3 = down
int scrollDirection = 0; // default: scroll to the left
حلقه اصلی سپس بررسی میکندscrollDirectionو متن را به سمت انتخاب شده حرکت میدهد. برای پروژه ۲ میتوانید آن را در0(چپ)، اما اگر بعداً طرح را گسترش دهید میتوانید شرایطی مانند: را اضافه کنید
if (scrollDirection == 0) {
// move text left
} else if (scrollDirection == 1) {
// move text right
} else if (scrollDirection == 2) {
// move text up
} else if (scrollDirection == 3) {
// move text down
}
برای این مقاله ما فقط تنظیمات را مستند میکنیم. پیادهسازی کامل بخشی از کدی است که در زیر مقاله بارگذاری شده است.
خلاصه
پروژه 2 ماتریس LED RGB ESP32-S3 شما را به یک نمایشگر متنی ساده اما جذاب تبدیل میکند. با ویرایش تنها چند متغیر در بالای شِفر (کود)، میتوانید به سرعت تغییر دهید:
- کدام پیام نمایش داده میشود (
scrollText). - رنگ متن
textRed,textGreen,textBlue). - روشنی ماتریس
matrixBrightness). - سرعت پیمایش
scrollDelayMs). - جهت اسکرول کردن
scrollDirectionاگر شما انتخاب کنید که از آن استفاده کنید).
طرح کامل این پروژه در زیر این مقاله موجود است (بهطور خودکار توسط وبسایت بارگذاری میشود). برای پیکربندی دقیق قدم به قدم و یک نمایش زنده از متن پیمایشی در حال فعالیت، حتماً بخش مربوطه ویدئو را تماشا کنید. اگر از پروژه خوشتان آمده و میخواهید خودتان آن را بسازید، میتوانید ماجیول ماتریس LED RGB ESP32-S3 را نیز از واصلهای وابستهای که زیر شِفر (کود) ذکر شدهاند، خریداری کنید.
این آموزش بخشی از: ماتریس LED RGB مدل ESP32-S3
- پروژههای ماتریس LED رنگی ESP32-S3 (بازی کجشدن، متن، پیکان، دموی وایفای)
- پروژه ماتریس LED RGB ESP32-S3 3 - متن از تلفن همراه
- پروژه ماتریس LED RGB ESP32-S3 4 - نقطه کج
- پروژه ماتریس LED RGB ESP32-S3 ۵ - پیکان همیشه به سمت بالا
- پروژه ماتریس LED RGB ESP32-S3 6 - بازی Cible
- پروژه ساعت پایه ESP32-S3 ماتریس LED RGB با Wi-Fi + ساعت زمان NTP -1
- پروژه ساعت اینترنتی ماتریس LED RGB ESP32-S3 - نمایش زمان و تاریخ چند رنگ 2 ساعته
- پروژه ساعت اینترنتی ماتریس LED RGB ESP32-S3 - ۳ رنگ شب با تاریخ
- پروژه ساعت اینترنتی ماتریس LED RGB ESP32-S3 - ۵ رنگ رنگین کمان
- پروژه ساعت اینترنتی ماتریس LED RGB ESP32-S3 - ۴ رنگ تصادفی
- آزمایش ماتریس LED RGB ESP32-S3 برای تنظیم RGB و GRB
/*
* پروژه ۲: نوار متن - ماتریس LED RGB ESP32-S3 (ویوشیر)
*
* این برنامه متن متحرک را روی ماتریس ۸ در ۸ نمایش میدهد
*
* ▶️ آموزش ویدیویی:
* https://youtu.be/JKLuYrRcLMI
*
* 📚⬇️ منابع و صفحه شِفر (کود):
* https://robojax.com/RJT829
*
* QMI8658_RGB_2
*/
#include <Arduino.h>
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
// -------- راه اندازی MATRIX LED --------
#define MATRIX_PIN 14
#define MATRIX_WIDTH 8
#define MATRIX_HEIGHT 8
Adafruit_NeoMatrix matrix = Adafruit_NeoMatrix(
MATRIX_WIDTH, MATRIX_HEIGHT, MATRIX_PIN,
NEO_MATRIX_TOP + NEO_MATRIX_LEFT +
NEO_MATRIX_ROWS + NEO_MATRIX_PROGRESSIVE,
NEO_RGB + NEO_KHZ800
);
// =========================
// تنظیمات کاربر
// =========================
// متن برای اسکرول
const char* MESSAGE = "ROBOJAX ";
// روشنایی (۰-۲۵۵)
uint8_t BRIGHTNESS = 10;
// سرعت پیمایش (میلیثانیه بین مراحل)
// کو Smaller = سریعتر
uint16_t SCROLL_DELAY = 80;
// جهت پیمایش
enum ScrollDir {
SCROLL_LEFT,
SCROLL_RIGHT,
SCROLL_UP,
SCROLL_DOWN
};
// این را به تنظیم جهت تغییر دهید
ScrollDir DIRECTION = SCROLL_LEFT;
// رنگ متن (RGB را در اینجا تنظیم کنید)
uint8_t COLOR_R = 255;
uint8_t COLOR_G = 0;
uint8_t COLOR_B = 0;
// =========================
// وضعیت داخلی
// =========================
uint16_t textColor;
int16_t posX, posY;
int16_t textWidth, textHeight;
uint32_t lastStepTime = 0;
// اندازه متن را به پیکسل برای فونت پیشفرض 5x7 محاسبه کنید
void computeTextSize() {
int16_t x1, y1;
uint16_t w, h;
matrix.getTextBounds((char*)MESSAGE, 0, 0, &x1, &y1, &w, &h);
textWidth = (int16_t)w;
textHeight = (int16_t)h;
}
// موقعیت شروع را بر اساس جهت تنظیم کنید
void resetScrollPosition() {
switch (DIRECTION) {
case SCROLL_LEFT:
// از لبه راست شروع کنید
posX = matrix.width();
posY = 0; // ردیف بالایی برای ۸x۸
break;
case SCROLL_RIGHT:
// از لبه چپ شروع کنید
posX = -textWidth;
posY = 0;
break;
case SCROLL_UP:
posX = 0;
posY = matrix.height(); // از پایین شروع کن
break;
case SCROLL_DOWN:
posX = 0;
posY = -textHeight; // بالا شروع کنید
break;
}
}
// یک مرحله پیمایش
void stepScroll() {
// جابجایی موقعیت
switch (DIRECTION) {
case SCROLL_LEFT:
posX--;
if (posX < -textWidth) {
posX = matrix.width();
}
break;
case SCROLL_RIGHT:
posX++;
if (posX > matrix.width()) {
posX = -textWidth;
}
break;
case SCROLL_UP:
posY--;
if (posY < -textHeight) {
posY = matrix.height();
}
break;
case SCROLL_DOWN:
posY++;
if (posY > matrix.height()) {
posY = -textHeight;
}
break;
}
// کادر بکشید
matrix.fillScreen(0);
matrix.setCursor(posX, posY);
matrix.print(MESSAGE);
matrix.show();
}
void setup() {
matrix.begin();
matrix.setBrightness(BRIGHTNESS);
matrix.setTextWrap(false); // بدون بستهبندی خودکار
matrix.setTextSize(1); // فونت پیشفرض ۵x۷
textColor = matrix.Color(COLOR_R, COLOR_G, COLOR_B);
matrix.setTextColor(textColor);
computeTextSize();
resetScrollPosition();
matrix.fillScreen(0);
matrix.show();
}
void loop() {
uint32_t now = millis();
if (now - lastStepTime >= SCROLL_DELAY) {
lastStepTime = now;
stepScroll();
}
}
مواردی که ممکن است به آنها نیاز داشته باشید
-
آمازون
-
ایبیخرید ماتریس RGB ESP32-S3 از eBayebay.us
-
علیاکسپرسخرید ماتریس RGB ESP32-S3 از علیاکسپرسs.click.aliexpress.com
-
علیاکسپرسمجموعه ماتریس RGB ESP32-S3 را از علیاکسپرس خریداری کنید (2)s.click.aliexpress.com
منابع و مراجع
-
داخلیابزار انتخاب رنگrobojax.com
فایلها📁
فایل فریزینگ
-
قطعه فریتزینگ esp32-S3-supermini-tht
esp32-S3-supermini-tht.fzpz0.02 MB