Search Code

د ESP32-S3 RGB LED میټرکس پروژه ۱ - بنسټیز ډاټ

د ESP32-S3 RGB LED میټرکس پروژه ۱ - بنسټیز ډاټ

پروژه ۱ – انیمیشن نقطه متحرک او زړه په ESP32-S3 RGB LED میټرکس باندې

په دې پروژه کې موږ په ESP32-S3 RGB LED میټرکس باندې له ساده ممکنه انیمیشن سره پیل کوو: یو واحد نقطه چې د ۸×۸ RGB ښودنې په اوږدو کې حرکت کوي. د دې تر څنګ، موږ یو کوچنی د زړه انیمیشن هم ورزیاتوو ترڅو تاسو کولی شئ بورډ په یو کوچني سینګاري ښودونکي بدل کړئ کله چې دا فعال وي. دا د انفرادي پکسلونو، رنګونو، او د انیمیشن سرعت کنټرول سره بلد کیدو لپاره یو ښه لومړی ګام دی.

د دې لړۍ ټول شپږ پروژې په یوه ویډیو کې ښودل شوي او تشریح شوي دي. هماغه ویډیو په دې پاڼه کې ځای پر ځای شوې ده، نو تاسو کولی شئ د ګام په ګام بشپړه تشریح او د نقطې او زړه د انیمیشنونو ژوندۍ ننداره وګورئ. د دې پروژې بشپړ کوډ په اتوماتيک ډول د مقالې لاندې بار شوی دی، او تاسو کولی شئ د ESP32-S3 RGB LED میټرکس ماډل د کوډ برخې لاندې لیست شوي اړوند پلورنځیو څخه واخلئ.

که تاسو یوازې د دې بورډ سره پیل کوئ، دا پروژه ستاسو لپاره یوه بشپړه لار ده چې:

  • تایید کړئ چې ستاسو ESP32-S3 بورډ او USB اړیکه کار کوي.
  • تایید کړئ چې ۸×۸ RGB میټرکس سم پن سره وصل دی.
  • د بنسټیز انیمیشن وخت، رنګ، او روښانتیا سره تجربه وکړئ.

د ESP32-S3 RGB LED میټرکس ماډل کتنه

په دې پروژه کې کارول شوی بورډ د ESP32-S3 مایکروکنټرولر پر بنسټ دی، چې د ۸×۸ RGB LED میټرکس (۶۴ انفرادي پته لرونکي RGB LEDs)، په شا اړخ کې د QMI8658C حرکت سینسر، او د بریښنا او پروګرام کولو لپاره USB بندر سره یوځای شوی دی.

د دې ماډل کلیدي ځانګړتیاوې:

  • ESP32-S3 دوه کور لرونکی مایکروکنټرولر د Wi-Fi او بلوتوث ملاتړ سره.
  • ۸×۸ RGB LED میټرکس (۶۴ RGB LEDs) د بورډ په مخ کې، د آیکونونو، متن، او کوچنیو لوبو لپاره مثالی.
  • QMI8658C اکسلرومیټر / حرکت سینسر په شا اړخ کې، نو تاسو کولی شئ د متقابلو پروژو لپاره ټیلټ، حرکت، او سمت کشف کړئ.
  • USB بندر د پروګرام کولو او بریښنا دواړو لپاره.
  • لاسرسي پنونه د څنډو په شاوخوا کې، نو بورډ لاهم د نورو IO پروژو لپاره د عادي ESP32 په څیر کارول کیدی شي.
  • بوټ او ریسیټ تڼۍ د پروګرام کولو حالت ته د ننوتلو او ستاسو د سکیچ بیا پیلولو لپاره.

په دې لومړۍ پروژه کې موږ یوازې د بورډ د LED میټرکس برخه کاروو، مګر هماغه هارډویر دومره پیاوړی دی چې د متن ښودنې، ویب کنټرول شوي پیغامونو، د حرکت کنټرول شوي لوبو، او نور ډیر څه پرمخ بوځي – کوم چې د دې لړۍ په نورو پروژو کې پوښل شوي دي.

په ویډیو کې پوښل شوي پروژې (وخت نښې)

ټول شپږ پروژې هماغه YouTube ویډیو شریکوي. نږدې وخت نښې دا دي:

  • 00:00 – پیژندنه
  • 02:01 – د ESP32 بورډونو نصبول
  • 03:32 – د کتابتونونو نصبول
  • 05:32 – پروژه ۱: حرکت کوونکې نقطه (او بنسټیز رنګ / سرعت تنظیمات)
  • 11:11 – پروژه ۲: د متن سکرول
  • 12:59 – پروژه ۳: HTTP متن
  • 16:41 – پروژه ۴: ټیلټ نقطه
  • 18:55 – پروژه ۵: پورته تیر
  • 20:02 – پروژه ۶: هدف لوبه

د غوره پوهیدو لپاره، تاسو ته په کلکه سپارښتنه کیږي چې ویډیو وګورئ پداسې حال کې چې دا مقاله تعقیب کوئ. ویډیو په میټرکس باندې د نقطې او زړه ژوندی چلند، او همدارنګه د Arduino IDE دننه ټول ګامونه ښیې.

په Arduino IDE کې د ESP32 بورډونو نصبول

مخکې له دې چې کوم کوډ ESP32-S3 ته پورته کړئ، تاسو باید په Arduino IDE کې د ESP32 بورډ ملاتړ بسته نصب کړئ. په ویډیو کې، دا د "بورډونو نصبولو" برخې په شاوخوا کې ښودل شوی دی.

عمومي ګامونه:

  1. Arduino IDE خلاص کړئ او File > Preferences ته لاړ شئ.
  2. د "Additional Boards Manager URLs" ساحه کې، د ESP32 بورډونو رسمي URL اضافه کړئ.
  3. Tools > Board > Boards Manager… خلاص کړئ، د ESP32 لټون وکړئ، او د ESP32 بورډونو بسته نصب کړئ.
  4. د نصبولو وروسته، Tools > Board ته لاړ شئ او د خپل ESP32-S3 RGB میټرکس ماډل لپاره سم بورډ داخل انتخاب کړئ.
  5. بورډ د USB له لارې وصل کړئ او د Tools > Port لاندې د هغې سیریل بندر غوره کړئ.

که سم بورډ او بندر نه وي غوره شوي، ستاسو سکیچ به نه پورته کیږي، حتی که ستاسو کوډ سم وي.

د NeoMatrix او اړینو کتابتونونو نصبول

LED میټرکس په داخلي توګه د Adafruit NeoPixel ډرایور کاروي، او د اسانه 2D رسم کولو لپاره موږ د Adafruit NeoMatrix کتابتون کاروو. د NeoMatrix نصبول به په اتوماتيک ډول اړین انحصارونه راوړي.

NeoMatrix او انحصارونه

لاندې د کتابتون مدیر څخه نصب کړئ:

  • Adafruit NeoMatrix
  • Adafruit NeoPixel
  • Adafruit GFX Library

د کتابتون مدیر کې:

  1. Sketch > Include Library > Manage Libraries… خلاص کړئ.
  2. د Adafruit NeoMatrix لټون وکړئ او Install کلیک وکړئ.
  3. IDE ته اجازه ورکړئ چې ټول وړاندیز شوي انحصارونه نصب کړي (Adafruit GFX او Adafruit NeoPixel).

د QMI8658C حرکت سینسر کتابتون (د وروستیو پروژو لپاره)

پروژه ۱ اکسلرومیټر په مستقیم ډول نه کاروي، مګر دا یوه ښه نظریه ده چې د حرکت سینسر کتابتون اوس نصب کړئ ځکه چې دا به د ۴، ۵، او ۶ پروژو لپاره اړین وي.

د کتابتون مدیر څخه:

  1. د QMI8658 کتابتون د هغې د لیکوال نوم په واسطه ولټوئ.
  2. کتابتون نصب کړئ ترڅو دا د چټکې ازموینې لپاره د File > Examples لاندې ښکاره شي.

پروژه ۱ – د کوډ تنظیمات (حرکت کوونکې نقطه او زړه)

هغه بشپړ سکیچ چې پروژه ۱ پرمخ وړي د دې مقالې لاندې په ویب پاڼه کې په اتوماتيک ډول بار کیږي. دلته موږ یوازې په هغو کلیدي ترتیباتو تمرکز کوو چې تاسو یې احتمالاً بدلول غواړئ: پن، د پکسلونو شمېر، روښانتیا، رنګ، او د انیمیشن سرعت. د زړه د انیمیشن لپاره موږ دا هم ښیو چې څنګه رنګ کنټرول کړو او آیا زړه ډک وي یا یوازې کرښه.

د LED پن او د پکسلونو شمېر

په دې ماډل کې، د 8×8 RGB میټرکس د ESP32-S3 له GPIO 14 سره وصل دی. د پکسلونو ټول شمېر 64 (8 × 8) دی. ستاسو په کوډ کې، تاسو باید ورته یو څه وګورئ:

 
// پن چې د 8×8 RGB میټرکس سره وصل دی 
const int MATRIX_PIN = 14;
 // باید په دې ماډل کې 14 وي 
// د LEDs ټول شمېر (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 همغږۍ فنکشنونو په کارولو سره رسم کیږي. تاسو یوازې اړتیا لرئ پورته متغیرونه بدل کړئ ترڅو د هغې بڼه ځانګړې کړئ.

لنډیز

پروژه ۱ تاسو ته د ESP32-S3 RGB LED میټرکس سره یو ساده مګر پیاوړی پیل ټکی درکوي: تاسو زده کوئ چې څنګه ټول 64 پکسلونه په ګوته کړئ، رنګ کنټرول کړئ، روښانتیا تنظیم کړئ، او د انیمیشن سرعت وټاکئ. تاسو دا هم وینئ چې څنګه په ورته هارډویر کې له حرکت کوونکي نقطې څخه جامد یا انیمیشن زړه ته بدلول څومره اسانه دي.

ډاډ ترلاسه کړئ چې په دې پاڼه کې ځای پر ځای شوی بشپړ ویډیو وګورئ د حرکت کوونکي نقطې او زړه انیمیشنونو بشپړ، ګام په ګام مظاهرې لپاره، د پاتې پنځو پروژو سره یوځای. بشپړ سرچینه کوډ د دې مقالې لاندې شتون لري، او تاسو کولی شئ راتلونکي پروژې ملاتړ وکړئ د کوډ برخې لاندې لیست شوي اړوند لینکونو له لارې ماډل پیرودلو سره.

Images

ESP32 S3 Matrix  pin out
ESP32 S3 Matrix pin out
ESP32 S3 Matrix displaying green heart
ESP32 S3 Matrix displaying green heart
ESP32 S3 Matrix displaying rainbow heart
ESP32 S3 Matrix displaying rainbow heart
ESP32-S3 RGB Matrix- Mobile Phone Text
ESP32-S3 RGB Matrix- Mobile Phone Text
ESP32-S3-Mtrix - Alway Up
ESP32-S3-Mtrix - Alway Up
799-ESP32-S3 RGB LED Matrix Project 1 - Dot
Language: C++
/* 
  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();
  }



}

Things you might need

Resources & references

Files📁

Fritzing File