This tutorial is part of: ESP32-S3 RGB LED ማትሪክስ
አስደሳች እና ተግባራዊ አፕሊኬሽኖችን ለመፍጠር የESP32-S3 RGB ማትሪክስ ሞጁልን በመጠቀም አሪፍ ፕሮጀክት። ወደ ሌሎች ቪዲዮዎች የሚወስዱ አገናኞች ከዚህ ጽሑፍ በታች ይገኛሉ።
የESP32-S3 RGB LED ማትሪክስ ፕሮጀክት 2 - የሚንቀሳቀስ ጽሑፍ
ፕሮጀክት 2 – በESP32-S3 RGB LED ማትሪክስ ላይ የጽሑፍ ማንሸራተት
በዚህ ፕሮጀክት ውስጥ የESP32-S3 RGB LED ማትሪክስን ወደ ትንሽ የጽሑፍ ባነር እንለውጣለን። አጭር መልእክት (ለምሳሌ Robojax) በ8×8 RGB ማሳያ ላይ ይንሸራተታል፣ እና ጽሑፉን፣ ቀለሙን፣ ብሩህነቱን እና የማንሸራተት ፍጥነቱን በቀላሉ በኮዱ ውስጥ መቀየር ይችላሉ። ይህ ለቀላል ማሳወቂያዎች፣ የስም መለያዎች ወይም ትናንሽ የሁኔታ መልዕክቶች በጣም ጠቃሚ ነው።
በዚህ ተከታታይ ውስጥ ያሉት ስድስቱም ፕሮጀክቶች በአንድ የYouTube ቪዲዮ ውስጥ ተብራርተዋል። ተመሳሳዩ ቪዲዮ በዚህ ገጽ ላይ ተካቷል፣ ስለዚህ የጽሑፍ ማንሸራተት በእውነተኛ ጊዜ እንዴት እንደሚመስል እና እያንዳንዱ ቅንብር በእነማው ላይ እንዴት ተጽዕኖ እንደሚያሳድር በትክክል ማየት ይችላሉ። ለዚህ ፕሮጀክት የተሟላ ኮድ ከጽሑፉ በታች በራስ-ሰር ተጭኗል፣ እና የESP32-S3 RGB LED ማትሪክስ ሞጁሉን ከኮዱ ክፍል ስር ከተዘረዘሩት የተባባሪ መደብሮች መግዛት ይችላሉ።
ይህ ፕሮጀክት በፕሮጀክት 1 (የሚንቀሳቀስ ነጥብ እና የቀለም መቆጣጠሪያ) መሠረቶች ላይ ይገነባል እና የNeoMatrix ቤተ-መጽሐፍትን በመጠቀም የጽሑፍ አቀራረብ እና ማንሸራተት ይጨምራል።


የESP32-S3 RGB LED ማትሪክስ ሞጁል አጠቃላይ እይታ
ሃርድዌሩ በስድስቱም ፕሮጀክቶች ውስጥ ተመሳሳይ ነው፡- ከWi-Fi እና ብሉቱዝ ጋር የESP32-S3 ማይክሮ መቆጣጠሪያ፣ 8×8 RGB LED ማትሪክስ (64 አድራሻ ሊደረግባቸው የሚችሉ RGB LEDs)፣ QMI8658C አክስሌሮሜትር፣ USB ወደብ እና ተደራሽ የIO ፒኖች።

- ESP32-S3 – ለላቁ ፕሮጀክቶች ከWi-Fi/BLE ጋር ዋና ሲፒዩ።
- 8×8 RGB ማትሪክስ – ለአዶዎች፣ ጽሑፍ እና እነማዎች 64 RGB LEDs።
- QMI8658C አክስሌሮሜትር – በኋለኞቹ ፕሮጀክቶች ለማዘንበል እና አቅጣጫ ለመወሰን ይጠቅማል።
- USB ወደብ – በArduino IDE በኩል ለኃይል እና ለፕሮግራም አወጣጥ ይጠቅማል።
- የተጋለጡ ፒኖች – ለሌላ IO ቦርዱን እንደ መደበኛ ESP32 እንዲጠቀሙ ያስችሉዎታል።
- Boot / Reset አዝራሮች – ለፈርምዌር ሰቀላ እና ስኬቾችን እንደገና ለማስጀመር።
በፕሮጀክት 2 ውስጥ በዋናነት በማትሪክስ እና በNeoMatrix የጽሑፍ ተግባራት ላይ እናተኩራለን። አክስሌሮሜትሩ ገና ጥቅም ላይ አልዋለም፣ ነገር ግን ተመሳሳዩ ቦርድ ሁሉንም የኋላ መስተጋብር እና የጨዋታ ፕሮጀክቶችን ይይዛል።

በቪዲዮው ውስጥ የተካተቱ ፕሮጀክቶች (የጊዜ ማህተሞች)
ከዚህ ጽሑፍ ጋር የሚሄደው ቪዲዮ ስድስቱንም ፕሮጀክቶች ይሸፍናል። ግምታዊ የጊዜ ማህተሞች፡-
- 00:00 – መግቢያ
- 02:01 – የESP32 ቦርዶችን መጫን
- 03:32 – ቤተ-መጻሕፍትን መጫን
- 05:32 – ፕሮጀክት 1፡ የሚንቀሳቀስ ነጥብ
- 11:11 – ፕሮጀክት 2፡ የጽሑፍ ማንሸራተት
- 12:59 – ፕሮጀክት 3፡ HTTP ጽሑፍ
- 16:41 – ፕሮጀክት 4፡ የማዘንበል ነጥብ
- 18:55 – ፕሮጀክት 5፡ ወደ ላይ ቀስት
- 20:02 – ፕሮጀክት 6፡ ዒላማ ጨዋታ
ይህን ጽሑፍ እያነበቡ ቪዲዮውን እንዲመለከቱ ይበረታታሉ። ጽሑፉ በ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 ማትሪክስ ቦርድዎን ከ
Tools > Boardይምረጡ። - ሞጁሉን በUSB ያገናኙ እና በ
Tools > Portስር ትክክለኛውን የCOM/ሰሪያል ወደብ ይምረጡ።
የቦርድ አይነት ወይም ወደብ ትክክል ካልሆነ፣ ስኬቹ አይሰቀልም።
NeoMatrix እና አስፈላጊ ቤተ-መጻሕፍትን መጫን
የጽሑፍ ማንሸራተት የሚተገበረው Adafruit NeoMatrix እና ጥገኞቹን በመጠቀም ነው። በቪዲዮው ውስጥ በቤተ-መጻሕፍት አስተዳዳሪ በኩል ተጭነዋል።
የሚከተሉትን ያስፈልግዎታል፡-
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 ስር የምሳሌ ስኬቾችን ማየት ይኖርዎታል።
ፕሮጀክት 2 – የኮድ ቅንብሮች (የጽሑፍ ማንሸራተት)
ሙሉው የጽሑፍ ማንሸራተት ስኬች በድረ-ገጹ ላይ ከዚህ ጽሑፍ በታች በራስ-ሰር ተጭኗል። እዚህ ላይ የሚያርትዑትን የውቅር እሴቶች ላይ ብቻ እናተኩራለን፡- ፒን፣ የማትሪክስ መጠን፣ ብሩህነት፣ የጽሑፍ ሕብረቁምፊ፣ ቀለም፣ የማንሸራተት ፍጥነት እና አማራጭ አቅጣጫ።
ከዚህ በታች ያሉት ሁሉም ቁርጥራጮች ዋናውን አመክንዮ ሳይነኩ ባህሪውን በፍጥነት ማስተካከል እንዲችሉ ከስኬቹ አናት ላይ ካለው የውቅር ክፍል የተወሰዱ ናቸው።
የማትሪክስ ፒን እና መጠን
ልክ እንደ ፕሮጀክት 1፣ የRGB ማትሪክስ ከGPIO 14 ጋር የተገናኘ እና 64 LEDs (8×8) ይዟል። እነዚህ ሁለት መስመሮች ከሞጁልዎ ጋር የሚዛመዱ መሆናቸውን ያረጋግጡ፡-
// ከ8×8 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);
ፓነሉን በብሩህ አካባቢ ወይም ለአጭር ጊዜ ከተጠቀሙ፣ ይህን እሴት መጨመር ይችላሉ፣ ነገር ግን ከማሳያው ቅርብ ከሆኑ በጣም ከፍ ከማድረግ ይቆጠቡ።
የሚሽከረከር ጽሑፍ
ትክክለኛው መልእክት እንደ ሕብረቁምፊ ተከማችቷል። በቪዲዮው ውስጥ፣ የምሳሌ ጽሑፉ 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; // ነባሪ፡ ወደ ግራ ማሽከርከር
ዋናው loop ከዚያ 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 ማትሪክስ ሞጁሉን መግዛት ይችላሉ።
This tutorial is part of: ESP32-S3 RGB LED ማትሪክስ
- ESP32-S3 RGB LED ማትሪክስ ፕሮጀክት 1- መሰረታዊ ነጥብ
- የESP32-S3 RGB LED ማትሪክስ ፕሮጀክት 3 - ከሞባይል ስልክ የሚመጣ ጽሑፍ
- ESP32-S3 RGB LED ማትሪክስ ፕሮጀክት 4 - ዘንበል ነጥብ
- ESP32-S3 RGB LED ማትሪክስ ፕሮጀክት 5 - ቀስት ሁልጊዜ ወደ ላይ
- የESP32-S3 RGB LED ማትሪክስ ፕሮጀክት 6 - ሲብል ጨዋታ
- ESP32-S3 RGB LED ማትሪክስ ዋይ-ፋይ + NTP የሰዓት ፕሮጀክት -1 መሰረታዊ ሰዓት
- የESP32-S3 RGB LED ማትሪክስ የበይነመረብ ሰዓት ፕሮጀክት - 2 ሰዓት ባለብዙ ቀለም ጊዜ እና ቀን ማሳያ
- የESP32-S3 RGB LED ማትሪክስ የበይነመረብ ሰዓት ፕሮጀክት - 3 የምሽት ቀለም ከቀን ጋር
- የESP32-S3 RGB LED ማትሪክስ የበይነመረብ ሰዓት ፕሮጀክት - 5 የቀስተ ደመና ቀለም
- የESP32-S3 RGB LED ማትሪክስ የበይነመረብ ሰዓት ፕሮጀክት - 4 የዘፈቀደ ቀለም
- 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
ፋይሎች📁
ፍሪትዚንግ ፋይል
-
esp32-S3-supermini-tht fritzing part
esp32-S3-supermini-tht.fzpz0.02 MB