Raadi Koodka

Mashruuca LED Matrix RGB ee ESP32-S3 2 - Qoraal Guurguura

Mashruuca LED Matrix RGB ee ESP32-S3 2 - Qoraal Guurguura

Mashruuc 2 – Qoraalka Guurgura ee ESP32-S3 RGB LED Matrix

Mashruucan waxaan u rogaynaa ESP32-S3 RGB LED Matrix qoraal yar oo calaamad ah. Farriin gaaban (tusaale ahaan Robojax) waxay ku guurguurtaa bandhigga 8×8 RGB, waxaadna si fudud u beddeli kartaa qoraalka, midabka, iftiinka, iyo xawaaraha guurguurista si toos ah koodka. Tani waxay aad faa'iido ugu leedahay ogeysiisyada fudud, calaamadaha magacyada, ama farriimaha xaaladda yaryar.

Dhammaan lixda mashruuc ee taxanahan waxaa lagu muujiyay oo lagu sharaxay hal fiidiyow oo YouTube ah. Isla fiidiyowga ayaa ku dhex jira boggan, si aad si sax ah u aragto sida qoraalka guurguurista ugu ekaado waqtiga dhabta ah iyo sida goob kasta u saameeyo animation-ka. Koodhka dhammaystiran ee mashruucan waxaa si toos ah hoos loogu shubay maqaalka, waxaadna ka iibsan kartaa qaybta ESP32-S3 RGB LED Matrix module-ka dukaamada la xiriira ee ku qoran hoosta qaybta koodhka.

Mashruucan wuxuu ku dhisanyahay aasaaska Mashruuca 1 (dhibicda guurguurta iyo xakamaynta midabka) wuxuuna ku darayaa qoraal-soo-saaris iyo guurguuris iyadoo la adeegsanayo maktabadda NeoMatrix.

Koboca ESP32-S3 RGB LED Matrix Module

Qalabku wuxuu la mid yahay dhammaan lixda mashruuc: ESP32-S3 microcontroller oo leh Wi-Fi iyo Bluetooth, 8×8 RGB LED matrix (64 RGB LED oo la xakameyn karo), QMI8658C accelerometer, USB port, iyo IO pins la heli karo.:contentReference[oaicite:0]{index=0}

  • ESP32-S3 – CPU-ga ugu weyn oo leh Wi-Fi/BLE mashruucyada horumarsan.
  • 8×8 RGB matrix – 64 RGB LED oo loogu talagalay astaamaha, qoraalka, iyo animation-ka.
  • QMI8658C accelerometer – loo isticmaalo mashruucyada dambe ee leexinta iyo jihada.
  • USB port – loo isticmaalo korontada iyo barnaamijyada iyadoo la adeegsanayo Arduino IDE.
  • Pins-ka la soo bandhigay – waxay kuu oggolaanayaan inaad u isticmaasho board-ka sida ESP32 caadi ah oo IO kale ah.
  • Boot / Reset buttons – loogu talagalay soo-qaadista firmware-ka iyo dib-u-bilowga sketches-ka.

Mashruuca 2 waxaan inta badan diirada saareynaa matrix-ka iyo shaqooyinka qoraalka NeoMatrix. Accelerometer-ka weli lama isticmaalin, laakiin isla board-ka ayaa maamuli doona dhammaan mashruucyada isdhexgalka iyo ciyaaraha ee dambe.

Mashruucyada Ku Qoran Fiidiyowga (Waqtiyada)

Fiidiyowga la socda maqaalkan wuxuu daboolayaa dhammaan lixda mashruuc. Waqtiyada qiyaasta ah waa:

  • 00:00 – Hordhac
  • 02:01 – Rakibidda ESP32 boards
  • 03:32 – Rakibidda maktabadaha
  • 05:32 – Mashruuca 1: Dhibicda Guurguurta
  • 11:11 – Mashruuca 2: Qoraalka Guurguurta
  • 12:59 – Mashruuca 3: HTTP Qoraal
  • 16:41 – Mashruuca 4: Dhibicda Leexinta
  • 18:55 – Mashruuca 5: Fallaarta Kor
  • 20:02 – Mashruuca 6: Ciyaarta Bartilmaameedka

Waxaa lagu dhiirigelinayaa inaad daawato fiidiyowga adigoo akhrinaya maqaalkan. Wuxuu muujinayaa qoraalka guurguurista si toos ah LED matrix-ka wuxuuna ku dhex maraa dhammaan tillaabooyinka Arduino IDE-ga.

Rakibidda ESP32 Boards ee Arduino IDE

Ka hor intaadan ku orod koodhka qoraalka guurguurta, hubi in taageerada ESP32 lagu rakibay Arduino IDE-gaaga:

  1. Fur File > Preferences oo ku dar URL-ka ESP32 boards ee “Additional Boards Manager URLs”.
  2. Tag Tools > Board > Boards Manager…, raadi ESP32, oo rakib xirmada rasmiga ah ee ESP32.
  3. Dooro ESP32-S3 RGB Matrix board-kaaga ka Tools > Board.
  4. Ku xir module-ka USB-ga oo dooro COM/serial port-ka saxda ah ee Tools > Port.

Haddii nooca board-ka ama port-ka uu khaldan yahay, sketch-ku ma soo-qaadi doono.

Rakibidda NeoMatrix iyo Maktabadaha Loo Baahan Yahay

Qoraalka guurguurta waxaa lagu hirgeliyay iyadoo la adeegsanayo Adafruit NeoMatrix iyo waxyaabaha ay ku tiirsan tahay. Fiidiyowga, waxaa lagu rakibay Library Manager-ka.

Waxaad u baahan doontaa:

  • Adafruit NeoMatrix
  • Adafruit NeoPixel
  • Adafruit GFX Library
  1. Fur Sketch > Include Library > Manage Libraries….
  2. Raadi Adafruit NeoMatrix oo guji Install.
  3. Marka la weydiisto, u oggolow inay rakibto Adafruit GFX iyo Adafruit NeoPixel sida waxyaabaha ku tiirsan.

Haddii rakibidda ay guulaysato, waxaad arki doontaa tusaalooyin sketches ah oo hoos yimaada File > Examples > Adafruit NeoMatrix iyo File > Examples > Adafruit NeoPixel.

Mashruuca 2 – Goobaha Koodhka (Qoraalka Guurguurta)

Sketch-ka dhammaystiran ee qoraalka guurguurta waxaa si toos ah hoos loogu shubay maqaalkan ee website-ka. Halkan waxaan diirada saareynaa kaliya qiimaha goobta ee aad u badan tahay inaad rabto inaad wax ka beddesho: pin-ka, cabbirka matrix-ka, iftiinka, xarafka qoraalka, midabka, xawaaraha guurguurista, iyo jihada ikhtiyaariga ah.

Dhammaan qaybaha hoose waxaa laga soo qaaday qaybta goobta ee kor ku taal sketch-ka si aad si degdeg ah u hagaajiso dhaqanka iyada oo aan taabanin macnaha guud.

Pin-ka Matrix-ka iyo Cabbirka

Sida Mashruuca 1, RGB matrix-ka waxaa ku xiran GPIO 14 wuxuuna ka kooban yahay 64 LED (8×8). Hubi in labadan sadar ay la mid yihiin module-kaaga:


 // Pin-ka ku xiran 8×8 RGB matrix 
const int MATRIX_PIN = 14; // waa inuu ahaadaa 14 module-kan // Cabbirka matrix-ka (ballaca iyo dhererka)
 const int MATRIX_WIDTH = 8; 
const int MATRIX_HEIGHT = 8; 

Haddii aad ka koobiyaysato tusaale ka maktabadda NeoMatrix, waxaa laga yaabaa inay isticmaasho pin ama cabbir kala duwan; had iyo jeer u beddel si ay u waafaqaan board-kan.

Iftiinka Qoraalka

Iftiinka waxaa sida caadiga ah lagu xakameeyaa qiime u dhexeeya 0 iyo 255, halkaas oo 0 uu yahay dami iyo 255 uu yahay iftiinka ugu sarreeya. Qiime dhexdhexaad ah ayaa sida caadiga ah ku filan:


// Heerka iftiinka guud ee matrix-ka (0–255) 
uint8_t matrixBrightness = 40; // heer iftiin gudaha ah oo raaxo leh // In 
setup(): 
matrix.setBrightness(matrixBrightness); 

Haddii aad isticmaasho panel-ka jawi iftiin badan ama waqti gaaban, waxaad kordhin kartaa qiimahan, laakiin iska ilaali inaad aad u sarreysiiso haddii aad ku dhowdahay shaashadda.

Qoraalka Lagu Dhaqaajinayo

Fariinta dhabta ah waxay ku kaydsan tahay sida string. Fiidiyowga, tusaalaha qoraalku waa Robojax. Waxaad u beddeli kartaa calaamad ama fariin kasta oo gaaban oo aad jeceshahay:


 // Qoraalka lagu dhaqaajinayo matrix-ka 8×8 const char scrollText[] = "Robojax";
 // tan u beddel fariintaada 

Xusuusnow in kani yahay matrix 8×8 oo keliya, markaa fariimaha aad u dhaadheer waxay qaadan doonaan waqti dheer si ay u dhaqaaqaan waxaana laga yaabaa inay adkaato in la akhriyo.

Midabka Qoraalka (Qiimaha RGB)

Midabka qoraalka dhaqaaqaya waxaa lagu dejiyaa qaybaha casaanka, cagaarka, iyo buluugga (0–255). Tusaale ahaan, casaanka saafiga ah waa (255, 0, 0), cagaarka saafiga ah waa (0, 255, 0), iyo buluugga saafiga ah waa (0, 0, 255). Qoraalka koodka waxaad arki doontaa wax la mid ah:


 // Midabka qoraalka (R, G, B) uint8_t textRed = 255; // qaybta casaanka uint8_t textGreen = 0; // qaybta cagaarka uint8_t textBlue = 0; // qaybta buluugga 

Si aad u beddesho midabka:

  • Jaalle: textRed = 255; textGreen = 255; textBlue = 0;
  • Ciyaan: textRed = 0; textGreen = 255; textBlue = 255;
  • Cad: textRed = 255; textGreen = 255; textBlue = 255;

Fiidiyowgu wuxuu kaloo muujinayaa isticmaalka qalabka doorashada midabka ee khadka tooska ah si aad u hesho qiimaha RGB ka dibna aad ku geliso koodka.:contentReference[oaicite:1]{index=1}

Xawaaraha Dhaqaaqa (Dib u Dhigista Inta U Dhaxaysa Frames-ka)

Xawaaraha dhaqaaqa waxaa lagu xakameeyaa qiime dib u dhigis ah oo ku jira milliseconds inta u dhaxaysa tallaabo kasta oo cusboonaysiin. Qiime yar wuxuu qoraalka ka dhigayaa mid dhaqso badan; qiime weyn wuxuu gaabinayaa. Qoraalka koodka, waxaad tahay inaad hesho doorsoome la mid ah:


// Dib u dhigista inta u dhaxaysa tallaabooyinka dhaqaaqa (milliseconds) int scrollDelayMs = 50; 
// yar = dhaqso badan, weyn = gaabis ah 

Tusaalooyin:

  • scrollDelayMs = 20; → dhaqaaq dhaqso badan.
  • scrollDelayMs = 50; → xawaare dhexdhexaad ah (la mid ah fiidiyowga).
  • scrollDelayMs = 100; ama ka badan → dhaqaaq gaabis ah, oo fudud in la akhriyo.

Gudaha loop(), qiimahan waxaa lagu isticmaalaa wicitaanka delay(scrollDelayMs); ka dib markasta oo dib loo sawiro booska qoraalka.

Jihada Dhaqaaqa (Ikhtiyaar)

Mashruuca “dhaqaaqa qoraalka ee aasaasiga ah” waxaan badanaa u dhaqaajinaynaa bidix, laakiin waxaa faa'iido leh in la qeexo doorsoome jihayn calaamadeysan si aad u tijaabiso jihada kale markii dambe (bidix, midig, kor, hoos).

Qaab caadi ah waa:


 // Doorashada jihada dhaqaaqa // 0 = bidix, 1 = midig, 2 = kor, 3 = hoos 
int scrollDirection = 0; // tan asalka ah: u dhaqaaq bidix 

Loop-ka ugu weyn wuxuu markaa hubinayaa scrollDirection wuxuuna u dhaqaajinayaa qoraalka jihada la doortay. Mashruuca 2 waxaad ku dhaafi kartaa 0 (bidix), laakiin haddii aad sii ballaadhiso koodka markii dambe waxaad ku dari kartaa shuruudo la mid ah:


 if (scrollDirection == 0) { 
// u dhaqaaq qoraalka bidix 
} else if (scrollDirection == 1) { 
// u dhaqaaq qoraalka midig 
} else if (scrollDirection == 2) { 
// u dhaqaaq qoraalka kor
 } else if (scrollDirection == 3) { 
// u dhaqaaq qoraalka hoos 
}
 

Maqaalkan waxaan kaliya diiwaangelinaynaa dejinta. Hirgelinta buuxda waxay qayb ka tahay koodka lagu shubay hoosta maqaalka.

Soo Koobid

Mashruuca 2 wuxuu ESP32-S3 RGB LED Matrix-kaaga u beddelaa shaashad qoraal fudud laakiin soo jiidasho leh. Adigoo wax ka beddelaya dhawr doorsoome oo keliya oo ku yaal xagga sare ee koodka, waxaad si dhakhso leh u beddeli kartaa:

  • Fariinta la muujinayo (scrollText).
  • Midabka qoraalka (textRed, textGreen, textBlue).
  • Heerka iftiinka matrix-ka (matrixBrightness).
  • Xawaaraha dhaqaaqa (scrollDelayMs).
  • Jihada dhaqaaqa (scrollDirection, haddii aad doorato inaad isticmaasho).

Koodka buuxa ee mashruucan wuxuu ka heli karaa hoosta maqaalkan (waxaa si toos ah u shubay website-ka). Faahfaahin tallaabo-tallaabo ah oo dhamaystiran iyo muujin toos ah oo ku saabsan dhaqaaqa qoraalka, hubi inaad daawato qaybta ku habboon ee fiidiyowga. Haddii aad jeceshahay mashruuca oo aad rabto inaad adigu dhisto, waxaad kaloo ka iibsan kartaa qalabka ESP32-S3 RGB LED Matrix module-ka linkiyada xiriirka ee hoosta koodka ku qoran.

Sawirro

ESP32 S3 Matrix
ESP32 S3 Matrix
ESP32 S3 Matrix  pin out
ESP32 S3 Matrix pin out
ESP32-S3_RGB_8x8_matrix1
ESP32-S3_RGB_8x8_matrix1
ESP32-S3_RGB_8x8_matrix-2
ESP32-S3_RGB_8x8_matrix-2
ESP32-S3-Mtrix - Alway Up
ESP32-S3-Mtrix - Alway Up
800-ESP32-S3 RGB LED Matrix Project 2 - Scrolling Text
Luqadda: C++
/* 
  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();
  }
}

Waad u baahan tahay

Kheyraadka & Tixraacyada

Faylasha📁

Faylka Fritzing