دا ټیوټوریل برخه ده له: ESP32-S3 RGB LED Matrix
د ESP32-S3 RGB Matrix ماډل په کارولو سره د ساتیرۍ او عملي غوښتنلیکونو لپاره د جوړولو عالي پروژه. د نورو ویډیوګانو لینکونه د دې مقالې لاندې دي.
د ESP32-S3 RGB LED میټرکس پروژه ۲ - سکرول کېدونکی متن
پروژه ۲ – سکرول متن په ESP32-S3 RGB LED Matrix
په دې پروژه کې موږ ESP32-S3 RGB LED Matrix په یوه کوچنۍ متن بڼر بدلوو. یو لنډ پیغام (د مثال په توګه Robojax) د ۸×۸ RGB ښودونکي په اوږدو کې سکرول کېږي، او تاسو کولی شئ په اسانۍ سره متن، رنګ، روښانتیا، او د سکرول سرعت په مستقیم ډول په کوډ کې بدل کړئ. دا د ساده خبرتیاوو، نوم ټاګونو، یا کوچنیو حالت پیغامونو لپاره ډېر ګټور دی.
د دې لړۍ ټول شپږ پروژې په یوه واحد YouTube ویډیو کې نندارې ته وړاندې شوي او تشریح شوي دي. همدا ویډیو په دې پاڼه کې ځای پر ځای شوې ده، نو تاسو کولی شئ په ریښتیني وخت کې وګورئ چې د متن سکرول څنګه ښکاري او هر ترتیب څنګه په انیمیشن اغیزه کوي. د دې پروژې بشپړ کوډ په اتوماتيک ډول د مقالې لاندې بار شوی دی، او تاسو کولی شئ د ESP32-S3 RGB LED Matrix ماډل د کوډ برخې لاندې لیست شوي پلورنځیو څخه واخلئ.
دا پروژه د پروژې ۱ (متحرک نقطه او د رنګ کنټرول) په اساساتو باندې جوړه شوې ده او د NeoMatrix کتابتون په کارولو سره د متن رینډرینګ او سکرول اضافه کوي.


د ESP32-S3 RGB LED Matrix ماډل عمومي کتنه
هارډویر د ټولو شپږو پروژو لپاره ورته دی: یو ESP32-S3 مایکروکنټرولر د Wi-Fi او Bluetooth سره، یو ۸×۸ RGB LED میټرکس (۶۴ د پتې وړ RGB LEDs)، یو QMI8658C اکسلیټرومیټر، USB بندر، او د لاسرسي وړ IO پنونه.:contentReference[oaicite:0]{index=0}

- ESP32-S3 – اصلي CPU د Wi-Fi/BLE سره د پرمختللو پروژو لپاره.
- ۸×۸ RGB میټرکس – ۶۴ RGB LEDs د آیکونونو، متن، او انیمیشنونو لپاره.
- QMI8658C اکسلیټرومیټر – په وروستیو پروژو کې د ټیلټ او اورینټیشن لپاره کارول کېږي.
- USB بندر – د بریښنا او د Arduino IDE له لارې د پروګرام کولو لپاره کارول کېږي.
- ښکاره پنونه – تاسو ته اجازه درکوي چې بورډ د نورو IO لپاره د عادي ESP32 په څیر وکاروئ.
- Boot / Reset تڼۍ – د فرم ویئر اپلوډ او د سکیچونو بیا پیلولو لپاره.
په پروژه ۲ کې موږ په عمده توګه په میټرکس او د NeoMatrix متن دندو تمرکز کوو. اکسلیټرومیټر تر اوسه نه دی کارول شوی، مګر همدا بورډ به د وروستیو تعامل او لوبو پروژو لپاره هم کار وکړي.

په ویډیو کې پوښل شوي پروژې (وختونه)
هغه ویډیو چې د دې مقالې سره تړلې ده ټول شپږ پروژې پوښي. نږدې وختونه دا دي:
- 00:00 – پیژندنه
- 02:01 – د ESP32 بورډونو نصبول
- 03:32 – د کتابتونونو نصبول
- 05:32 – پروژه ۱: متحرک نقطه
- 11:11 – پروژه ۲: د متن سکرول
- 12:59 – پروژه ۳: HTTP متن
- 16:41 – پروژه ۴: ټیلټ نقطه
- 18:55 – پروژه ۵: پورته تیر
- 20:02 – پروژه ۶: هدف لوبه
تاسو هڅول کېږئ چې د دې مقالې لوستلو پرمهال ویډیو وګورئ. دا په LED میټرکس کې د متن سکرول په ژوندۍ بڼه ښیي او په Arduino IDE کې ټول ګامونه تشریح کوي.
په Arduino IDE کې د ESP32 بورډونو نصبول
د متن سکرول کوډ چلولو دمخه، ډاډ ترلاسه کړئ چې د ESP32 ملاتړ ستاسو په Arduino IDE کې نصب شوی دی:
File > Preferencesخلاص کړئ او د ESP32 بورډونو URL د "Additional Boards Manager URLs" ته اضافه کړئ.Tools > Board > Boards Manager…ته لاړ شئ، دESP32لټون وکړئ، او رسمي ESP32 پیکج نصب کړئ.- خپل ESP32-S3 RGB Matrix بورډ د
Tools > Boardڅخه غوره کړئ. - ماډل د USB له لارې وصل کړئ او د
Tools > Portلاندې سم COM/سیریل بندر غوره کړئ.
که د بورډ ډول یا بندر سم نه وي، سکیچ به اپلوډ نشي.
د NeoMatrix او اړینو کتابتونونو نصبول
د متن سکرول د Adafruit NeoMatrix او د هغې انحصارونو په کارولو سره پلي شوی دی. په ویډیو کې، دوی د Library Manager له لارې نصب شوي دي.
تاسو به اړتیا ولرئ:
Adafruit NeoMatrixAdafruit NeoPixelAdafruit GFX Library
Sketch > Include Library > Manage Libraries…خلاص کړئ.- د
Adafruit NeoMatrixلټون وکړئ او د Install تڼۍ کلیک وکړئ. - کله چې وغوښتل شي، اجازه ورکړئ چې
Adafruit GFXاوAdafruit NeoPixelد انحصارونو په توګه نصب کړي.
که نصب بریالی وي، تاسو باید د File > Examples > Adafruit NeoMatrix او File > Examples > Adafruit NeoPixel لاندې مثال سکیچونه وګورئ.
پروژه ۲ – د کوډ ترتیبات (د متن سکرول)
د متن سکرول بشپړ سکیچ په اتوماتيک ډول د دې مقالې لاندې په ویب پاڼه کې بار شوی دی. دلته موږ یوازې په هغو ترتیب ارزښتونو تمرکز کوو چې تاسو به یې شاید بدلول غواړئ: پن، د میټرکس اندازه، روښانتیا، د متن سټرینګ، رنګ، د سکرول سرعت، او اختیاري لوري.
لاندې ټول ټوټې د سکیچ په پورتنۍ برخه کې د ترتیب برخې څخه اخیستل شوي دي ترڅو تاسو په چټکۍ سره چلند تنظیم کړئ پرته له دې چې اصلي منطق ته لاس ورکړئ.
د میټرکس پن او اندازه
لکه د پروژې ۱ په څیر، RGB میټرکس GPIO 14 سره وصل دی او 64 LEDs (۸×۸) لري. ډاډ ترلاسه کړئ چې دا دوه کرښې ستاسو له ماډل سره سمون لري:
// پن د ۸×۸ RGB میټرکس سره وصل شوی
const int MATRIX_PIN = 14; // باید په دې ماډل کې 14 وي // د میټرکس اندازه (سور او لوړوالی)
const int MATRIX_WIDTH = 8;
const int MATRIX_HEIGHT = 8;
که تاسو د NeoMatrix کتابتون څخه یو مثال کاپي کړئ، دا ممکن مختلف پن یا اندازه وکاروي؛ تل یې د دې بورډ سره سمون لپاره بدل کړئ.
د متن روښانتیا
روښانتیا معمولا د 0 او 255 ترمنځ ارزښت سره کنټرول کېږي، چیرته چې 0 بند او 255 اعظمي روښانتیا ده. یو معتدل ارزښت معمولا کافي دی:
// د میټرکس ټولیز روښانتیا (0–255)
uint8_t matrixBrightness = 40; // د کورني چاپېریال لپاره راحته روښانتیا // په
setup():
matrix.setBrightness(matrixBrightness);
که تاسو پینل په روښانه چاپېریال کې یا د لنډې مودې لپاره کاروئ، تاسو کولی شئ دا ارزښت زیات کړئ، خو که تاسو نندارې ته نږدې یاست نو د ډېر لوړ ارزښت څخه ډډه وکړئ.
د سکرول کولو متن
اصلي پیغام د یوې تار (string) په توګه ساتل شوی. په ویډیو کې، بېلګه متن Robojax دی. تاسو کولی شئ دا په هر لنډ نښان یا پیغام بدل کړئ چې موږ یې خوښوو:
// په 8×8 میټرکس باندې د سکرول کولو متن const char scrollText[] = "Robojax";
// دا خپل پیغام ته بدل کړئ
په یاد ولرئ چې دا یوازې 8×8 میټرکس دی، نو ډېر اوږد پیغامونه به د سکرول لپاره ډېر وخت ونیسي او ممکن لوستل یې ستونزمن شي.
د متن رنګ (RGB ارزښتونه)
د سکرول کولو متن رنګ د سور، شین او نیلي برخو (0–255) لخوا ټاکل کیږي. د بېلګې په توګه، خالص سور (255, 0, 0) دی، خالص شین (0, 255, 0) دی، او خالص نیلي (0, 0, 255) دی. په سکیچ کې به تاسو داسې یو څه وګورئ:
// د متن رنګ (R, G, B) uint8_t textRed = 255; // سور برخه uint8_t textGreen = 0; // شین برخه uint8_t textBlue = 0; // نیلي برخه
د رنګ بدلولو لپاره:
- ژیړ:
textRed = 255; textGreen = 255; textBlue = 0; - فیروزي:
textRed = 0; textGreen = 255; textBlue = 255; - سپین:
textRed = 255; textGreen = 255; textBlue = 255;
ویډیو دا هم ښیي چې څنګه د آنلاین رنګ غوره کونکي په کارولو سره RGB ارزښتونه ومومئ او بیا یې په کوډ کې دننه کړئ.
د سکرول سرعت (د چوکاټونو ترمنځ ځنډ)
د سکرول سرعت د هر تازه کولو ګام ترمنځ په ملی ثانیو کې د ځنډ ارزښت لخوا کنټرولیږي. کوچنی ارزښت متن ګړندی حرکت کوي؛ لوی ارزښت یې ورو کوي. په سکیچ کې، تاسو باید داسې یو متغیر ومومئ:
// د سکرول ګامونو ترمنځ ځنډ (په ملی ثانیو کې) int scrollDelayMs = 50;
// کوچنی = ګړندی، لوی = ورو
بېلګې:
scrollDelayMs = 20;→ ګړندی سکرول.scrollDelayMs = 50;→ منځنی سرعت (د ویډیو په څیر).scrollDelayMs = 100;یا ډېر → ورو، د لوستلو لپاره اسانه سکرول.
د loop() دننه، دا ارزښت د متن د موقعیت په هر بیا انځورولو وروسته په delay(scrollDelayMs); کې کارول کیږي.
د سکرول لوري (اختیاري)
د "بنسټیز متن سکرول" پروژه کې موږ معمولا کیڼ لوري ته سکرول کوو، خو دا ګټوره ده چې یو سمبولیک لوري متغیر تعریف کړو ترڅو تاسو وروسته د نورو لوریو (کیڼ، ښي، پورته، ښکته) سره تجربه وکړئ.
یو عام نمونه دا ده:
// د سکرول لوري انتخاب کوونکی // 0 = کیڼ، 1 = ښي، 2 = پورته، 3 = ښکته
int scrollDirection = 0; // ډیفالټ: کیڼ لوري ته سکرول
اصلي لوپ بیا scrollDirection معاینه کوي او متن په ټاکل شوي لوري حرکت کوي. د پروژې 2 لپاره تاسو کولی شئ دا په 0 (کیڼ) پریږدئ، خو که تاسو وروسته سکیچ وغځوئ نو کولی شئ داسې شرایط اضافه کړئ:
if (scrollDirection == 0) {
// متن کیڼ لوري ته حرکت ورکړئ
} else if (scrollDirection == 1) {
// متن ښي لوري ته حرکت ورکړئ
} else if (scrollDirection == 2) {
// متن پورته حرکت ورکړئ
} else if (scrollDirection == 3) {
// متن ښکته حرکت ورکړئ
}
د دې مقالې لپاره موږ یوازې ترتیب مستند کوو. بشپړ تطبیق د کوډ برخه ده چې د مقالې لاندې بار شوې ده.
لنډیز
پروژه 2 ستاسو ESP32-S3 RGB LED میټرکس په یو ساده خو د پام وړ متن نندارې بدلوي. د کوډ په پورتنۍ برخه کې د یو څو متغیرونو په سمولو سره، تاسو کولی شئ په چټکۍ سره بدل کړئ:
- کوم پیغام ښودل کیږي (
scrollText). - د متن رنګ (
textRed,textGreen,textBlue). - د میټرکس روښانتیا (
matrixBrightness). - د سکرول سرعت (
scrollDelayMs). - د سکرول لوري (
scrollDirection، که تاسو یې کارول غوره کړئ).
د دې پروژې بشپړ سکیچ د دې مقالې لاندې شتون لري (د ویب پاڼې لخوا په اتوماتيک ډول بار شوی). د تفصیلي ګام په ګام تنظیم او د سکرول کولو متن ژوندۍ نندارې لپاره، ډاډ ترلاسه کړئ چې د ویډیو اړونده برخه وګورئ. که تاسو پروژه خوښوئ او غواړئ چې پخپله یې جوړه کړئ، تاسو کولی شئ د ESP32-S3 RGB LED میټرکس ماډل د کوډ لاندې لیست شوي اړوند لینکونو څخه واخلئ.
دا ټیوټوریل برخه ده له: ESP32-S3 RGB LED Matrix
- د ESP32-S3 RGB LED میټرکس پروژه ۱ - بنسټیز ډاټ
- د ESP32-S3 RGB LED میټرکس پروژه ۳ - د ګرځنده تلیفون څخه متن
- ESP32-S3 RGB LED میټرکس پروژه ۴ - ټیلټ ډاټ
- د ESP32-S3 RGB LED میټرکس پروژه ۵ - تل پورته تیر
- د ESP32-S3 RGB LED میټرکس پروژه ۶ - د هدف لوبه
- د ESP32-S3 RGB LED میټرکس وای-فای + NTP وخت ساعت پروژه -1 اساسي ساعت
- د ESP32-S3 RGB LED میټرکس انټرنیټ ساعت پروژه - ۲ ساعت څو رنګه وخت او نېټه ښودنه
- د ESP32-S3 RGB LED میټرکس انټرنیټ ساعت پروژه - ۳ د شپې رنګونه د نیټې سره
- د ESP32-S3 RGB LED میټرکس انټرنیټ ساعت پروژه - 5 د رینبو رنګ
- د ESP32-S3 RGB LED میټرکس انټرنیټ ساعت پروژه - ۴ تصادفي رنګونه
- ESP32-S3 RGB LED Matrix test for RGB, GRB setting
/*
Project 2: Text scroll – ESP32-S3 RGB LED Matrix (Waveshare)
This sketch displays the scrolling text on 8x8 matrix
▶️ Video Tutorial:
https://youtu.be/JKLuYrRcLMI
📚⬇️ Resources & Code Page:
https://robojax.com/RJT829
QMI8658_RGB_2
*/
#include <Arduino.h>
#include <Adafruit_GFX.h>
#include <Adafruit_NeoMatrix.h>
#include <Adafruit_NeoPixel.h>
// -------- LED MATRIX SETUP --------
#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
);
// =========================
// USER SETTINGS
// =========================
// Text to scroll
const char* MESSAGE = "ROBOJAX ";
// Brightness (0–255)
uint8_t BRIGHTNESS = 10;
// Scroll speed (milliseconds between steps)
// Smaller = faster
uint16_t SCROLL_DELAY = 80;
// Scroll direction
enum ScrollDir {
SCROLL_LEFT,
SCROLL_RIGHT,
SCROLL_UP,
SCROLL_DOWN
};
// Change this to set direction
ScrollDir DIRECTION = SCROLL_LEFT;
// Text color (set RGB here)
uint8_t COLOR_R = 255;
uint8_t COLOR_G = 0;
uint8_t COLOR_B = 0;
// =========================
// INTERNAL STATE
// =========================
uint16_t textColor;
int16_t posX, posY;
int16_t textWidth, textHeight;
uint32_t lastStepTime = 0;
// Compute text size in pixels for default 5x7 font
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;
}
// Initialize starting position based on direction
void resetScrollPosition() {
switch (DIRECTION) {
case SCROLL_LEFT:
// Start just off the right edge
posX = matrix.width();
posY = 0; // top row for 8x8
break;
case SCROLL_RIGHT:
// Start just off the left edge
posX = -textWidth;
posY = 0;
break;
case SCROLL_UP:
posX = 0;
posY = matrix.height(); // start below bottom
break;
case SCROLL_DOWN:
posX = 0;
posY = -textHeight; // start above top
break;
}
}
// One scroll step
void stepScroll() {
// Move position
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;
}
// Draw frame
matrix.fillScreen(0);
matrix.setCursor(posX, posY);
matrix.print(MESSAGE);
matrix.show();
}
void setup() {
matrix.begin();
matrix.setBrightness(BRIGHTNESS);
matrix.setTextWrap(false); // No automatic wrapping
matrix.setTextSize(1); // Default 5x7 font
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();
}
}
هغه شیان چې تاسو ورته اړتیا لرئ
-
امازون
-
ای بی
-
علی ایکسپریسPurchase ESP32-S3 RGB matrix from AliExpresss.click.aliexpress.com
-
علی ایکسپریسPurchase ESP32-S3 RGB matrix from AliExpress (2)s.click.aliexpress.com
سرچینې او حوالې
-
دننه🎨 Color picker Toolrobojax.com
فایلونه📁
Fritzing فایل
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB