This tutorial is part of: Matrix ya LED ya ESP32-S3 RGB
Mradi mzuri wa kuunda kwa ajili ya matumizi ya kufurahisha na ya vitendo kwa kutumia moduli ya ESP32-S3 RGB Matrix. Viungo vya video zingine viko chini ya makala haya.
Mradi wa Matrix ya LED ya RGB ya ESP32-S3 2 - Maandishi Yanayotembea
Mradi 2 – Kusogeza Maandishi kwenye ESP32-S3 RGB LED Matrix
Katika mradi huu tunageuza ESP32-S3 RGB LED Matrix kuwa bango dogo la maandishi. Ujumbe mfupi (kwa mfano Robojax) unasogeza kwenye onyesho la 8×8 RGB, na unaweza kubadilisha kwa urahisi maandishi, rangi, mwangaza, na kasi ya kusogeza moja kwa moja kwenye msimbo. Hii ni muhimu sana kwa arifa rahisi, lebo za majina, au ujumbe mdogo wa hali.
Miradi yote sita katika mfululizo huu imeonyeshwa na kuelezewa katika video moja ya YouTube. Video hiyo hiyo imepachikwa kwenye ukurasa huu, ili uweze kuona jinsi kusogeza kwa maandishi kunavyoonekana kwa wakati halisi na jinsi kila mpangilio unavyoathiri uhuishaji. Msimbo kamili wa mradi huu unapakiwa kiotomatiki chini ya makala, na unaweza kununua moduli ya ESP32-S3 RGB LED Matrix kutoka maduka ya washirika yaliyoorodheshwa chini ya sehemu ya msimbo.
Mradi huu unajenga juu ya misingi ya Mradi 1 (kusogeza nukta na udhibiti wa rangi) na unaongeza uchapishaji wa maandishi na kusogeza kwa kutumia maktaba ya NeoMatrix.


Muhtasari wa Moduli ya ESP32-S3 RGB LED Matrix
Vifaa ni sawa katika miradi yote sita: microcontroller ya ESP32-S3 yenye Wi-Fi na Bluetooth, matrix ya 8×8 RGB LED (LED 64 za RGB zinazoweza kushughulikiwa), accelerometer ya QMI8658C, bandari ya USB, na pini za IO zinazoweza kufikiwa.:contentReference[oaicite:0]{index=0}

- ESP32-S3 – CPU kuu yenye Wi-Fi/BLE kwa miradi ya hali ya juu.
- Matrix ya 8×8 RGB – LED 64 za RGB kwa ikoni, maandishi, na uhuishaji.
- Accelerometer ya QMI8658C – inatumika katika miradi ya baadaye kwa kuinamisha na mwelekeo.
- Bandari ya USB – inatumika kwa nishati na kupanga programu kupitia Arduino IDE.
- Pini zilizo wazi – zinakuruhusu kutumia bodi kama ESP32 ya kawaida kwa IO nyingine.
- Vifungo vya Boot / Reset – kwa kupakia firmware na kuanzisha upya sketches.
Katika Mradi 2 tunazingatia hasa matrix na kazi za maandishi za NeoMatrix. Accelerometer bado haijatumika, lakini bodi hiyo hiyo itashughulikia miradi yote ya mwingiliano na michezo ya baadaye pia.

Miradi Iliyofunikwa kwenye Video (Muda)
Video inayoambatana na makala hii inashughulikia miradi yote sita. Muda wa takriban ni:
- 00:00 – Utangulizi
- 02:01 – Kusakinisha bodi za ESP32
- 03:32 – Kusakinisha maktaba
- 05:32 – Mradi 1: Nukta Inayosogeza
- 11:11 – Mradi 2: Kusogeza Maandishi
- 12:59 – Mradi 3: Maandishi ya HTTP
- 16:41 – Mradi 4: Nukta ya Kuinamisha
- 18:55 – Mradi 5: Mshale Juu
- 20:02 – Mradi 6: Mchezo wa Lengo
Unahimizwa kutazama video huku ukisoma makala hii. Inaonyesha maandishi yakusogeza moja kwa moja kwenye LED matrix na inapitia hatua zote katika Arduino IDE.
Kusakinisha Bodi za ESP32 katika Arduino IDE
Kabla ya kuendesha msimbo wa kusogeza maandishi, hakikisha usaidizi wa ESP32 umesakinishwa katika Arduino IDE yako:
- Fungua
File > Preferencesna ongeza URL ya bodi za ESP32 kwenye “Additional Boards Manager URLs”. - Nenda kwenye
Tools > Board > Boards Manager…, tafutaESP32, na usakinishe pakiti rasmi ya ESP32. - Chagua bodi yako ya ESP32-S3 RGB Matrix kutoka
Tools > Board. - Unganisha moduli kupitia USB na uchague bandari sahihi ya COM/serial chini ya
Tools > Port.
Ikiwa aina ya bodi au bandari si sahihi, sketch haitapakia.
Kusakinisha NeoMatrix na Maktaba Zinazohitajika
Kusogeza kwa maandishi kunatekelezwa kwa kutumia Adafruit NeoMatrix na vitegemezi vyake. Katika video, vinasakinishwa kupitia Library Manager.
Utahitaji:
Adafruit NeoMatrixAdafruit NeoPixelAdafruit GFX Library
- Fungua
Sketch > Include Library > Manage Libraries…. - Tafuta
Adafruit NeoMatrixna bofya Install. - Ukishauriwa, ruhusu kusakinisha
Adafruit GFXnaAdafruit NeoPixelkama vitegemezi.
Ikiwa usakinishaji umefanikiwa, unapaswa kuona mifano ya sketches chini ya File > Examples > Adafruit NeoMatrix na File > Examples > Adafruit NeoPixel.
Mradi 2 – Mipangilio ya Msimbo (Kusogeza Maandishi)
Sketch kamili ya kusogeza maandishi inapakiwa kiotomatiki chini ya makala hii kwenye tovuti. Hapa tunazingatia tu thamani za usanidi ambazo pengine utataka kuhariri: pini, ukubwa wa matrix, mwangaza, mfuatano wa maandishi, rangi, kasi ya kusogeza, na mwelekeo wa hiari.
Vipande vyote hapa chini vimechukuliwa kutoka sehemu ya usanidi juu ya sketch ili uweze kurekebisha haraka tabia bila kugusa mantiki kuu.
Pini na Ukubwa wa Matrix
Kama Mradi 1, matrix ya RGB imeunganishwa kwenye GPIO 14 na ina LED 64 (8×8). Hakikisha mistari hii miwili inalingana na moduli yako:
// Pini iliyounganishwa kwenye matrix ya 8×8 RGB
const int MATRIX_PIN = 14; // lazima iwe 14 kwenye moduli hii // Ukubwa wa matrix (upana na urefu)
const int MATRIX_WIDTH = 8;
const int MATRIX_HEIGHT = 8;
Ikiwa unakili mfano kutoka maktaba ya NeoMatrix, inaweza kutumia pini au ukubwa tofauti; badilisha kila wakati ili ulingane na bodi hii.
Mwangaza wa Maandishi
Mwangaza kwa kawaida unadhibitiwa kwa thamani kati ya 0 na 255, ambapo 0 ni kuzima na 255 ni mwangaza wa juu. Thamani ya wastani kwa kawaida inatosha:
// Mwangaza wa jumla wa matrix (0–255)
uint8_t matrixBrightness = 40; // mwangaza wa ndani unaostarehe // Katika
setup():
matrix.setBrightness(matrixBrightness);
Ikiwa unatumia paneli katika mazingira yenye mwanga mkali au kwa muda mfupi, unaweza kuongeza thamani hii, lakini epuka kwenda juu sana ikiwa uko karibu na skrini.
Maandishi ya Kusogeza
Ujumbe halisi huhifadhiwa kama mfuatano. Katika video, mfano wa maandishi ni Robojax. Unaweza kuubadilisha kuwa lebo au ujumbe wowote mfupi unaoupenda:
// Maandishi ya kusogeza kwenye matrix ya 8×8 const char scrollText[] = "Robojax";
// badilisha hii kuwa ujumbe wako
Kumbuka kwamba hii ni matrix ya 8×8 tu, kwa hivyo ujumbe mrefu sana utachukua muda mrefu kusogeza na unaweza kuwa mgumu kusoma.
Rangi ya Maandishi (Thamani za RGB)
Rangi ya maandishi yanayosogeza imewekwa na vipengele vya nyekundu, kijani, na bluu (0–255). Kwa mfano, nyekundu safi ni (255, 0, 0), kijani safi ni (0, 255, 0), na bluu safi ni (0, 0, 255). Katika sketch utaona kitu kama:
// Rangi ya maandishi (R, G, B) uint8_t textRed = 255; // kipengele cha nyekundu uint8_t textGreen = 0; // kipengele cha kijani uint8_t textBlue = 0; // kipengele cha bluu
Kubadilisha rangi:
- Njano:
textRed = 255; textGreen = 255; textBlue = 0; - Samawati ya kijani (Cyan):
textRed = 0; textGreen = 255; textBlue = 255; - Nyeupe:
textRed = 255; textGreen = 255; textBlue = 255;
Video pia inaonyesha kutumia kichagua rangi cha mtandaoni kupata thamani za RGB na kisha kuziweka kwenye msimbo.:contentReference[oaicite:1]{index=1}
Kasi ya Kusogeza (Ucheleweshaji Kati ya Fremu)
Kasi ya kusogeza inadhibitiwa na thamani ya ucheleweshaji katika millisekunde kati ya kila hatua ya kusasisha. Thamani ndogo hufanya maandishi kusogea haraka; thamani kubwa hupunguza kasi. Katika sketch, unapaswa kupata kigezo kama:
// Ucheleweshaji kati ya hatua za kusogeza (katika millisekunde) int scrollDelayMs = 50;
// ndogo = haraka, kubwa = polepole
Mifano:
scrollDelayMs = 20;→ kusogeza haraka.scrollDelayMs = 50;→ kasi ya wastani (sawa na video).scrollDelayMs = 100;au zaidi → kusogeza polepole, rahisi kusoma.
Ndani ya loop(), thamani hii inatumika katika wito wa delay(scrollDelayMs); baada ya kila kuchora upya kwa nafasi ya maandishi.
Mwelekeo wa Kusogeza (Hiari)
Katika mradi wa “kusogeza maandishi kwa msingi” kwa kawaida tunasogeza kushoto, lakini ni muhimu kufafanua kigezo cha mwelekeo wa ishara ili uweze kujaribu mielekeo mingine baadaye (kushoto, kulia, juu, chini).
Mfumo mmoja wa kawaida ni:
// Kiteua mwelekeo wa kusogeza // 0 = kushoto, 1 = kulia, 2 = juu, 3 = chini
int scrollDirection = 0; // chaguo-msingi: sogeza kushoto
Kitanzi kikuu kisha hukagua scrollDirection na kusogeza maandishi katika mwelekeo uliochaguliwa. Kwa Mradi wa 2 unaweza kuiacha kwa 0 (kushoto), lakini ikiwa utapanua sketch baadaye unaweza kuongeza masharti kama:
if (scrollDirection == 0) {
// sogeza maandishi kushoto
} else if (scrollDirection == 1) {
// sogeza maandishi kulia
} else if (scrollDirection == 2) {
// sogeza maandishi juu
} else if (scrollDirection == 3) {
// sogeza maandishi chini
}
Kwa makala hii tunaandika mpangilio tu. Utekelezaji kamili ni sehemu ya msimbo uliopakiwa chini ya makala.
Muhtasari
Mradi wa 2 unageuza ESP32-S3 RGB LED Matrix yako kuwa onyesho rahisi lakini la kuvutia la maandishi. Kwa kuhariri vigezo vichache tu juu ya msimbo, unaweza kubadilisha haraka:
- Ujumbe unaoonyeshwa (
scrollText). - Rangi ya maandishi (
textRed,textGreen,textBlue). - Mwangaza wa matrix (
matrixBrightness). - Kasi ya kusogeza (
scrollDelayMs). - Mwelekeo wa kusogeza (
scrollDirection, ikiwa utachagua kuitumia).
Sketch kamili ya mradi huu inapatikana chini ya makala hii (imepakiwa kiotomatiki na tovuti). Kwa maelekezo ya kina ya hatua kwa hatua na onyesho la moja kwa moja la maandishi yanayosogeza, hakikisha unatazama sehemu inayolingana ya video. Ikiwa unapenda mradi huu na unataka kuujenga mwenyewe, unaweza pia kununua moduli ya ESP32-S3 RGB LED Matrix kutoka kwenye viungo vya washirika vilivyoorodheshwa chini ya msimbo.
This tutorial is part of: Matrix ya LED ya ESP32-S3 RGB
- Mradi wa Matrix ya LED ya RGB ya ESP32-S3 1- Nukta ya Msingi
- Mradi wa ESP32-S3 RGB LED Matrix 3 - Maandishi kutoka kwa simu ya mkononi
- Mradi wa ESP32-S3 RGB LED Matrix 4 - Nukta ya kuinamia
- Mradi wa Matrix ya LED ya RGB ya ESP32-S3 5 - Mshale daima juu
- Mchezo wa Cible wa Mradi wa Matrix ya LED ya RGB ya ESP32-S3 6
- Mradi wa Saa ya Matrix ya LED ya RGB ya ESP32-S3 Wi-Fi + NTP -1 Saa ya Msingi
- Mradi wa Saa ya Mtandao ya Matrix ya LED ya RGB ya ESP32-S3 - Saa 2 za rangi nyingi za Kuonyesha Muda na Tarehe
- Mradi wa Saa ya Mtandao ya Matrix ya LED ya RGB ya ESP32-S3 - Rangi 3 za Usiku na Tarehe
- Mradi wa Saa ya Mtandao ya Matrix ya LED ya RGB ya ESP32-S3 - Rangi 5 za Upinde wa mvua
- Mradi wa Saa ya Mtandao ya Matrix ya LED ya RGB ya ESP32-S3 - Rangi 4 za Nasibu
- 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();
}
}
Tänker att du kanske behöver
-
Amazon
-
eBay
-
AliExpressPurchase ESP32-S3 RGB Matrix from AliExpresss.click.aliexpress.com
-
AliExpressPurchase ESP32-S3 RGB Matrix from AliExpress (2)s.click.aliexpress.com
Resurser och referenser
-
Interna🎨 Color picker Toolrobojax.com
Filer📁
Fritzing-fil
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB