This tutorial is part of: ESP32-S3 RGB LED ማትሪክስ
አስደሳች እና ተግባራዊ አፕሊኬሽኖችን ለመፍጠር የESP32-S3 RGB ማትሪክስ ሞጁልን በመጠቀም አሪፍ ፕሮጀክት። ወደ ሌሎች ቪዲዮዎች የሚወስዱ አገናኞች ከዚህ ጽሑፍ በታች ይገኛሉ።
ESP32-S3 RGB LED ማትሪክስ ፕሮጀክት 1- መሰረታዊ ነጥብ
ፕሮጀክት 1 – በESP32-S3 RGB LED ማትሪክስ ላይ የሚንቀሳቀስ ነጥብ እና የልብ አኒሜሽን
በዚህ ፕሮጀክት ውስጥ በESP32-S3 RGB LED ማትሪክስ ላይ በጣም ቀላሉን አኒሜሽን እንጀምራለን፡ በ8×8 RGB ማሳያ ላይ የሚንቀሳቀስ አንድ ነጥብ። ከዚህ በተጨማሪ፣ ትንሽ የልብ አኒሜሽን እንጨምራለን ስለዚህ ቦርዱ ሲበራ ወደ ትንሽ ጌጣጌጥ ማሳያ መቀየር ይችላሉ። ይህ በማትሪክስ ላይ የግለሰብ ፒክስሎችን፣ ቀለሞችን እና የአኒሜሽን ፍጥነትን ለመቆጣጠር ለመላመድ ጥሩ የመጀመሪያ እርምጃ ነው።
በዚህ ተከታታይ ውስጥ ያሉት ስድስቱም ፕሮጀክቶች በአንድ ቪዲዮ ውስጥ ተብራርተዋል እና ተገልጸዋል። ተመሳሳዩ ቪዲዮ በዚህ ገጽ ላይ ተካቷል፣ ስለዚህ የሚንቀሳቀስ ነጥብ እና የልብ አኒሜሽኖችን ሙሉ የደረጃ በደረጃ ማብራሪያ እና የቀጥታ ማሳያ መመልከት ይችላሉ። የዚህ ፕሮጀክት ሙሉ ኮድ ከጽሑፉ በታች በራስ-ሰር ይጫናል፣ እና የESP32-S3 RGB LED ማትሪክስ ሞጁሉን በኮድ ክፍሉ ስር ከተዘረዘሩት የተባባሪ መደብሮች መግዛት ይችላሉ።
በዚህ ቦርድ ገና እየጀመሩ ከሆነ፣ ይህ ፕሮጀክት ለሚከተሉት ፍጹም መንገድ ነው፡
- የESP32-S3 ቦርድዎ እና የUSB ግንኙነት እየሰሩ መሆናቸውን ማረጋገጥ።
- የ8×8 RGB ማትሪክስ ከትክክለኛው ፒን ጋር መገናኘቱን ማረጋገጥ።
- በመሠረታዊ የአኒሜሽን ጊዜ፣ ቀለም እና ብሩህነት መሞከር።

የESP32-S3 RGB LED ማትሪክስ ሞጁል አጠቃላይ እይታ
በዚህ ፕሮጀክት ውስጥ ጥቅም ላይ የዋለው ቦርድ በESP32-S3 ማይክሮ መቆጣጠሪያ ላይ የተመሠረተ ነው፣ ከ8×8 RGB LED ማትሪክስ (64 በተናጥል አድራሻ ያላቸው RGB LEDs)፣ ከኋላ በኩል QMI8658C የእንቅስቃሴ ዳሳሽ እና ለኃይል እና ፕሮግራሚንግ የUSB ወደብ ያካትታል።
የዚህ ሞጁል ቁልፍ ባህሪያት፡

- ESP32-S3 ባለሁለት-ኮር ማይክሮ መቆጣጠሪያ ከWi-Fi እና ብሉቱዝ ድጋፍ ጋር።
- 8×8 RGB LED ማትሪክስ (64 RGB LEDs) በቦርዱ ፊት ለፊት፣ ለአዶዎች፣ ለጽሑፍ እና ለትናንሽ ጨዋታዎች ተስማሚ።
- QMI8658C አክስሌሮሜተር / የእንቅስቃሴ ዳሳሽ በጀርባ በኩል፣ ስለዚህ ለበይነተገናኝ ፕሮጀክቶች ዘንበልን፣ እንቅስቃሴን እና አቅጣጫን መለየት ይችላሉ።
- የUSB ወደብ ለሁለቱም ፕሮግራሚንግ እና ኃይል።
- �ልም የሚገኙ ፒኖች በጠርዙ ዙሪያ፣ ስለዚህ ቦርዱ ለሌሎች IO ፕሮጀክቶች እንደ መደበኛ ESP32 መጠቀም ይቻላል።
- የቡት እና የማስጀመሪያ አዝራሮች ወደ ፕሮግራሚንግ ሁነታ ለመግባት እና ስኬችዎን እንደገና ለማስጀመር።
በዚህ የመጀመሪያ ፕሮጀክት ውስጥ የቦርዱን የLED ማትሪክስ ክፍል ብቻ እንጠቀማለን፣ ነገር ግን ተመሳሳዩ ሃርድዌር የጽሑፍ ማሳያዎችን፣ በድር ቁጥጥር የሚደረግባቸውን መልዕክቶችን፣ በእንቅስቃሴ ቁጥጥር የሚደረግባቸውን ጨዋታዎች እና ሌሎችንም ለማሄድ በቂ ኃይል አለው — እነዚህም በዚህ ተከታታይ ሌሎች ፕሮጀክቶች ውስጥ ተካተዋል።
በቪዲዮው ውስጥ የተካተቱ ፕሮጀክቶች (የጊዜ ምልክቶች)
ስድስቱም ፕሮጀክቶች ተመሳሳይ የYouTube ቪዲዮ ይጋራሉ። ግምታዊ የጊዜ ምልክቶች፡
- 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፡ ዒላማ ጨዋታ
ለተሻለ ግንዛቤ፣ ይህን ጽሑፍ እየተከተሉ ቪዲዮውን እንዲመለከቱ በጥብቅ ይበረታታሉ። ቪዲዮው በማትሪክስ ላይ የነጥቡን እና የልቡን የቀጥታ ባህሪ እንዲሁም በArduino IDE ውስጥ ያሉትን ሁሉንም እርምጃዎች ያሳያል።
በArduino IDE ውስጥ የESP32 ቦርዶችን መጫን
ማንኛውንም ኮድ ወደ ESP32-S3 ከመጫንዎ በፊት፣ በArduino IDE ውስጥ የESP32 ቦርድ ድጋፍ ፓኬጅን መጫን አለብዎት። በቪዲዮው ውስጥ፣ ይህ በ"ቦርዶችን መጫን" ክፍል ዙሪያ ተብራርቷል።
አጠቃላይ እርምጃዎች፡
- Arduino IDE ን ይክፈቱ እና ወደ
File > Preferencesይሂዱ። - በ"Additional Boards Manager URLs" መስክ ውስጥ፣ ኦፊሴላዊውን የESP32 ቦርዶች URL ያክሉ።
Tools > Board > Boards Manager…ን ይክፈቱ፣ESP32ን ይፈልጉ እና ለESP32 ቦርዶች ፓኬጁን ይጫኑ።- ከተጫነ በኋላ፣ ወደ
Tools > Boardይሂዱ እና ለESP32-S3 RGB ማትሪክስ ሞጁልዎ ትክክለኛውን የቦርድ ግቤት ይምረጡ። - ቦርዱን በUSB ያገናኙ እና በ
Tools > Portስር ተከታታይ ወደቡን ይምረጡ።
ትክክለኛው ቦርድ እና ወደብ ካልተመረጡ፣ ኮድዎ ትክክል ቢሆንም ስኬችዎ አይጫንም።
NeoMatrix እና አስፈላጊ ቤተ-መጻሕፍትን መጫን
የLED ማትሪክስ በውስጡ የAdafruit NeoPixel ሾፌርን ይጠቀማል፣ እና ለቀላል 2D ስዕል የAdafruit NeoMatrix ቤተ-መጻሕፍትን እንጠቀማለን። NeoMatrix ን መጫን ጥገኞቹን በራስ-ሰር ያመጣል።
NeoMatrix እና ጥገኞች
ከሚከተሉት ውስጥ ከቤተ-መጻሕፍት አስተዳዳሪ ይጫኑ፡
Adafruit NeoMatrixAdafruit NeoPixelAdafruit GFX Library
በቤተ-መጻሕፍት አስተዳዳሪ ውስጥ፡
Sketch > Include Library > Manage Libraries…ን ይክፈቱ።Adafruit NeoMatrixን ይፈልጉ እና Install ን ጠቅ ያድርጉ።- IDE ሁሉንም የተጠቆሙ ጥገኞችን (Adafruit GFX እና Adafruit NeoPixel) እንዲጭን ይፍቀዱ።
QMI8658C የእንቅስቃሴ ዳሳሽ ቤተ-መጻሕፍት (ለቀጣይ ፕሮጀክቶች)
ፕሮጀክት 1 አክስሌሮሜተሩን በቀጥታ አይጠቀምም፣ ነገር ግን የእንቅስቃሴ ዳሳሽ ቤተ-መጻሕፍትን አሁን መጫን ጥሩ ሀሳብ ነው ምክንያቱም ለፕሮጀክቶች 4፣ 5 እና 6 ያስፈልጋልና።
ከቤተ-መጻሕፍት አስተዳዳሪ፡
- የQMI8658 ቤተ-መጻሕፍትን በደራሲው ስም ይፈልጉ።
- ቤተ-መጻሕፍቱን ይጫኑ ስለዚህ ለፈጣን ሙከራ በ
File > Examplesስር ይታያል።
ፕሮጀክት 1 – የኮድ ቅንብሮች (የሚንቀሳቀስ ነጥብ እና ልብ)
ፕሮጀክት 1ን የሚያሄደው ሙሉ ስኬች ከዚህ ጽሑፍ በታች በድረ-ገጹ ላይ በራስ-ሰር ተጭኗል። እዚህ ላይ ሊቀይሯቸው በሚችሏቸው ቁልፍ ቅንብሮች ላይ ብቻ እናተኩራለን፡- ፒን፣ የፒክሰል ብዛት፣ ብሩህነት፣ ቀለም እና የአኒሜሽን ፍጥነት። ለልብ አኒሜሽን ደግሞ ቀለሙን እና ልቡ ጠጣር ወይም ኮንቱር ብቻ መሆኑን እንዴት መቆጣጠር እንደሚቻል እናሳያለን።
የLED ፒን እና የፒክሰል ብዛት
በዚህ ሞጁል ላይ፣ የ8×8 RGB ማትሪክስ ከESP32-S3 GPIO 14 ጋር ተገናኝቷል። አጠቃላይ የፒክሰል ብዛት 64 (8 × 8) ነው። በኮድዎ ውስጥ፣ ከዚህ ጋር የሚመሳሰል ነገር ማየት አለብዎት፡-
// ከ8×8 RGB ማትሪክስ ጋር የተገናኘ ፒን
const int MATRIX_PIN = 14;
// በዚህ ሞጁል ላይ 14 መሆን አለበት
// አጠቃላይ የLEDዎች ብዛት (8 × 8 ማትሪክስ)
const int NUMPIXELS = 64; // የተለየ የማትሪክስ መጠን ከተጠቀሙ ብቻ ይቀይሩ
በአጋጣሚ NUMPIXELSን በ16 (ከመጀመሪያው NeoPixel ምሳሌ) ካስቀመጡት፣ የማትሪክሱ ሩብ ብቻ ጥቅም ላይ ይውላል እና አኒሜሽኑ መላውን 8×8 ስክሪን አይሞላም።
የቀለም ቅደም ተከተል እና የLED አይነት
የተለያዩ የLED ስትሪፖች እና ማትሪክሶች የተለያዩ የቀለም ቅደም ተከተሎችን ሊጠቀሙ ይችላሉ (ለምሳሌ፣ GRB ከRGB ይልቅ)። በዚህ ቦርድ ላይ ያለው ማትሪክስ RGB ቅደም ተከተል ይጠብቃል። በNeoPixel ወይም NeoMatrix ገንቢ ውስጥ፣ የቀለም አይነቱ በትክክል መቀናበሩን ያረጋግጡ፡-
// ለNeoPixel-አይነት ነገር ምሳሌ፡-
Adafruit_NeoPixel pixels( NUMPIXELS, MATRIX_PIN, NEO_RGB + NEO_KHZ800 // ይህ ከማትሪክስ ቀለም ቅደም ተከተል ጋር መዛመዱን ያረጋግጡ );
በማሳያው ላይ ቀይ እና አረንጓዴ የተለዋወጡ ሆነው ካስተዋሉ፣ በመጀመሪያ ይህንን መስመር ይፈትሹ እና የቀለም ቅደም ተከተሉን ያስተካክሉ።
የአኒሜሽን ፍጥነት (በደረጃዎች መካከል መዘግየት)
የሚንቀሳቀሰው ነጥብ ፍጥነት ብዙውን ጊዜ በሚሊሰከንድ በቀላል የመዘግየት እሴት ይቆጣጠራል። አነስተኛ መዘግየት ፈጣን እንቅስቃሴ ማለት ነው፤ ትልቅ መዘግየት ደግሞ ቀርፋፋ እንቅስቃሴ ማለት ነው። ከዚህ ጋር የሚመሳሰል ተለዋዋጭ ይፈልጉ፡-
// በነጥብ እንቅስቃሴዎች መካከል መዘግየት (በሚሊሰከንድ)
int dotDelayMs = 50; // 50 ms በጣም ፈጣን ነው
የተለመዱ ማስተካከያዎች፡-
- በጣም ፈጣን ለሚንቀሳቀስ ነጥብ
dotDelayMs = 20;ያዘጋጁ። - ለቀርፋፋ፣ የተረጋጋ አኒሜሽን
dotDelayMs = 100;ወይም ከዚያ በላይ ያዘጋጁ።
በloop() ተግባር ውስጥ፣ ይህ እሴት ብዙውን ጊዜ እያንዳንዱን ፍሬም ካዘመኑ በኋላ ለdelay(dotDelayMs); ይተላለፋል።
የነጥብ ቀለም እና ብሩህነት
የሚንቀሳቀሰው ነጥብ RGB ቀለም ከ0–255 ባለው ክልል ውስጥ በሦስት እሴቶች (ቀይ፣ አረንጓዴ፣ ሰማያዊ) ይቆጣጠራል። ለምሳሌ፡-
// የነጥብ ቀለም (R, G, B) ከ0–255 uint8_t dotRed = 255; // ሙሉ ቀይ
uint8_t dotGreen = 0; // አረንጓዴ የለም
uint8_t dotBlue = 0; // ሰማያዊ የለም
ይህ ደማቅ ቀይ ነጥብ ይፈጥራል። አንዳንድ ጠቃሚ ውህዶች፡-
- ንጹህ ቀይ፡
(255, 0, 0) - ንጹህ አረንጓዴ፡
(0, 255, 0) - ንጹህ ሰማያዊ፡
(0, 0, 255) - ቢጫ፡
(255, 255, 0) - ነጭ፡
(255, 255, 255)
አጠቃላይ ብሩህነት ብዙውን ጊዜ በተለየ የብሩህነት ተግባር ይቆጣጠራል፡-
// አጠቃላይ የማትሪክስ ብሩህነት (0–255)
uint8_t matrixBrightness = 40; // ከመጠን በላይ ብርሀን ለማስወገድ ዝቅተኛ ያድርጉት // በsetup() ውስጥ፡ matrix.setBrightness(matrixBrightness);
ከ30–60 አካባቢ ያለው እሴት ለቤት ውስጥ አገልግሎት ብዙውን ጊዜ ምቹ ነው።
የልብ ቅርጽ ቅንብሮች
ከሚንቀሳቀሰው ነጥብ በተጨማሪ፣ ቦርዱ ሲበራ በማትሪክሱ ላይ ትንሽ ልብ ማሳየት ይችላሉ። የጽሑፉ ናሙና ኮድ (ከታች የተጫነው) ከዚህ ጋር የሚመሳሰሉ ቅንብሮችን ያካትታል፡-
// የልብ ቀለም (ጠጣር ልብ)
uint8_t heartRed = 255;
uint8_t heartGreen = 0;
uint8_t heartBlue = 0;
// አማራጭ፡ ቀስተ ደመና ወይም ኮንቱር ሁነታዎች
bool showOutlinedHeart = false;
// true = ኮንቱር ብቻ
bool useRainbowHeart = false;
// true = በጊዜ ሂደት ቀለሞችን ያሽከርክሩ
የተለመደ አጠቃቀም፡-
- ለጠጣር ቀይ ልብ
showOutlinedHeart = false;እናuseRainbowHeart = false;ያዘጋጁ። - የልብ ኮንቱር ብቻ ለማሳየት
showOutlinedHeart = true;ያዘጋጁ። - የልብ ቀለምን በቀስተ ደመና ውጤት በተከታታይ ለማሽከርከር
useRainbowHeart = true;ያዘጋጁ።
ልቡ ከጽሑፉ በታች ባለው ኮድ ውስጥ በNeoMatrix መጋጠሚያ ተግባራት ተስሏል። መልኩን ለማበጀት ከላይ ያሉትን ተለዋዋጮች ብቻ መቀየር ያስፈልግዎታል።
ማጠቃለያ
ፕሮጀክት 1 ከESP32-S3 RGB LED ማትሪክስ ጋር ቀላል ግን ኃይለኛ የመነሻ ነጥብ ይሰጥዎታል፡- ሁሉንም 64 ፒክሰሎች እንዴት መድረስ፣ ቀለም መቆጣጠር፣ ብሩህነት ማስተካከል እና የአኒሜሽን ፍጥነት ማዘጋጀት ይማራሉ። እንዲሁም በተመሳሳይ ሃርድዌር ላይ ከሚንቀሳቀስ ነጥብ ወደ ቋሚ ወይም አኒሜሽን ልብ መቀየር ምን ያህል ቀላል እንደሆነ ያያሉ።
የሚንቀሳቀሰውን ነጥብ እና የልብ አኒሜሽኖችን፣ ከቀሪዎቹ አምስት ፕሮጀክቶች ጋር፣ ሙሉ የደረጃ-በ-ደረጃ ማሳያ ለማግኘት በዚህ ገጽ ላይ የተካተተውን ሙሉ ቪዲዮ መመልከትዎን ያረጋግጡ። ሙሉው የምንጭ ኮድ ከዚህ ጽሑፍ በታች ይገኛል፣ እና በኮድ ክፍሉ ስር በተዘረዘሩት የአጋር አገናኞች ሞጁሉን በመግዛት የወደፊት ፕሮጀክቶችን መደገፍ ይችላሉ።
This tutorial is part of: ESP32-S3 RGB LED ማትሪክስ
- የESP32-S3 RGB LED ማትሪክስ ፕሮጀክት 2 - የሚንቀሳቀስ ጽሑፍ
- የ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 1: the Dot – ESP32-S3 RGB LED Matrix (Waveshare)
dialysis a dot on scree and moves it
▶️ Video Tutorial:
https://youtu.be/JKLuYrRcLMI
📚⬇️ Resources & Code Page:
https://robojax.com/RJT829
QMI8658_RGB_2
*/
#include <Adafruit_NeoPixel.h>
#ifdef __AVR__
#include <avr/power.h> // Required for 16 MHz Adafruit Trinket
#endif
// Which pin on the Arduino is connected to the NeoPixels?
#define PIN 14 // On Trinket or Gemma, suggest changing this to 1
// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 64 // Popular NeoPixel ring size
// When setting up the NeoPixel library, we tell it how many pixels,
// and which pin to use to send signals. Note that for older NeoPixel
// strips you might need to change the third parameter -- see the
// strandtest example for more information on possible values.
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_RGB + NEO_KHZ800);
#define DELAYVAL 50 // Time (in milliseconds) to pause between pixels
void setup() {
// These lines are specifically to support the Adafruit Trinket 5V 16 MHz.
// Any other board, you can remove this part (but no harm leaving it):
#if defined(__AVR_ATtiny85__) && (F_CPU == 16000000)
clock_prescale_set(clock_div_1);
#endif
// END of Trinket-specific code.
pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
}
void loop() {
pixels.clear(); // Set all pixel colors to 'off'
// The first NeoPixel in a strand is #0, second is 1, all the way up
// to the count of pixels minus one.
for(int i=0; i<NUMPIXELS; i++) { // For each pixel...
// pixels.Color() takes RGB values, from 0,0,0 up to 255,255,255
// Here we're using a moderately bright green color:
pixels.setPixelColor(i, pixels.Color(255, 255, 0));
pixels.show(); // Send the updated pixel colors to the hardware.
delay(DELAYVAL); // Pause before next pass through loop
pixels.clear();
}
}
እንደሚያስፈልግዎት ይችላል
-
አማዞን
-
ኢቤይ
-
አሊኤክስፕሬስ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