Search Code

Mradi wa Matrix ya LED ya RGB ya ESP32-S3 1- Nukta ya Msingi

Mradi wa Matrix ya LED ya RGB ya ESP32-S3 1- Nukta ya Msingi

Mradi 1 – Nukta Inayosonga na Uhuishaji wa Moyo kwenye ESP32-S3 RGB LED Matrix

Katika mradi huu tunaanza na uhuishaji rahisi zaidi unaowezekana kwenye ESP32-S3 RGB LED Matrix: nukta moja inayosonga kwenye skrini ya 8×8 RGB. Zaidi ya hayo, tunaongeza uhuishaji mdogo wa moyo ili uweze kugeuza bodi kuwa skrini ndogo ya mapambo inapowashwa. Hii ni hatua nzuri ya kwanza ya kujifunza kudhibiti pixel binafsi, rangi, na kasi ya uhuishaji kwenye matrix.

Miradi yote sita katika mfululizo huu imeonyeshwa na kuelezewa katika video moja. Video hiyo hiyo imepachikwa kwenye ukurasa huu, ili uweze kutazama maelezo kamili ya hatua kwa hatua na maonyesho ya moja kwa moja ya uhuishaji wa nukta na moyo. Msimbo kamili wa mradi huu umepakiwa kiotomatiki chini ya makala, na unaweza kununua moduli ya ESP32-S3 RGB LED Matrix kutoka maduka ya washirika yaliyoorodheshwa chini ya sehemu ya msimbo.

Ikiwa unaanza tu na bodi hii, mradi huu ni njia bora ya:

  • Kuthibitisha kwamba bodi yako ya ESP32-S3 na muunganisho wa USB zinafanya kazi.
  • Kuhakikisha kwamba matrix ya 8×8 RGB imeunganishwa kwenye pini sahihi.
  • Kujaribu muda wa uhuishaji wa msingi, rangi, na mwangaza.

Muhtasari wa Moduli ya ESP32-S3 RGB LED Matrix

Bodi inayotumika katika mradi huu inategemea microcontroller ya ESP32-S3, ikiunganishwa na matrix ya 8×8 RGB LED (LED 64 za RGB zinazoweza kushughulikiwa kibinafsi), sensor ya mwendo ya QMI8658C nyuma, na bandari ya USB kwa nguvu na upangaji programu.

Vipengele muhimu vya moduli hii:

  • ESP32-S3 microcontroller ya cores mbili yenye msaada wa Wi-Fi na Bluetooth.
  • Matrix ya 8×8 RGB LED (LED 64 za RGB) mbele ya bodi, bora kwa icons, maandishi, na michezo midogo.
  • Sensor ya QMI8658C accelerometer / mwendo upande wa nyuma, ili uweze kugundua kuinama, mwendo, na mwelekeo kwa miradi shirikishi.
  • Bandari ya USB kwa upangaji programu na nguvu.
  • Pini zinazoweza kufikiwa kuzunguka kingo, ili bodi iweze kutumika kama ESP32 ya kawaida kwa miradi mingine ya IO.
  • Vifungo vya boot na reset kwa kuingia hali ya upangaji programu na kuanzisha upya sketch yako.

Katika mradi huu wa kwanza tunatumia tu sehemu ya LED matrix ya bodi, lakini hardware hiyo hiyo ina nguvu ya kutosha kuendesha maonyesho ya maandishi, ujumbe unaodhibitiwa na wavuti, michezo inayodhibitiwa na mwendo, na zaidi — ambayo yamefunikwa katika miradi mingine ya mfululizo huu.

Miradi Iliyofunikwa kwenye Video (Nyakati)

Miradi yote sita inashiriki video moja ya YouTube. Nyakati za takriban ni:

  • 00:00 – Utangulizi
  • 02:01 – Kusakinisha bodi za ESP32
  • 03:32 – Kusakinisha maktaba
  • 05:32 – Mradi 1: Nukta Inayosonga (na mipangilio ya msingi ya rangi / kasi)
  • 11:11 – Mradi 2: Kusogeza Maandishi
  • 12:59 – Mradi 3: Maandishi ya HTTP
  • 16:41 – Mradi 4: Nukta ya Kuinama
  • 18:55 – Mradi 5: Mshale Juu
  • 20:02 – Mradi 6: Mchezo wa Shabaha

Kwa uelewa bora, unahimizwa sana kutazama video huku ukifuata makala hii. Video inaonyesha tabia ya moja kwa moja ya nukta na moyo kwenye matrix, pamoja na hatua zote ndani ya Arduino IDE.

Kusakinisha Bodi za ESP32 kwenye Arduino IDE

Kabla ya kupakia msimbo wowote kwenye ESP32-S3, lazima usakinishe kifurushi cha msaada wa bodi za ESP32 kwenye Arduino IDE. Katika video, hii inaonyeshwa karibu na sehemu ya “kusakinisha bodi”.

Hatua za jumla:

  1. Fungua Arduino IDE na nenda kwenye File > Preferences.
  2. Katika sehemu ya “Additional Boards Manager URLs”, ongeza URL rasmi ya bodi za ESP32.
  3. Fungua Tools > Board > Boards Manager…, tafuta ESP32, na usakinishe kifurushi cha bodi za ESP32.
  4. Baada ya usakinishaji, nenda kwenye Tools > Board na uchague ingizo sahihi la bodi kwa moduli yako ya ESP32-S3 RGB Matrix.
  5. Unganisha bodi kupitia USB na uchague bandari yake ya serial chini ya Tools > Port.

Ikiwa bodi na bandari sahihi hazijachaguliwa, sketch yako haitapakia, hata kama msimbo wako ni sahihi.

Kusakinisha NeoMatrix na Maktaba Zinazohitajika

Matrix ya LED inatumia kiendeshaji cha Adafruit NeoPixel ndani, na kwa kuchora 2D rahisi tunatumia maktaba ya Adafruit NeoMatrix. Kusakinisha NeoMatrix kutavuta kiotomatiki vitegemezi.

NeoMatrix na Vitegemezi

Sakinisha zifuatazo kutoka kwenye Library Manager:

  • Adafruit NeoMatrix
  • Adafruit NeoPixel
  • Adafruit GFX Library

Katika Library Manager:

  1. Fungua Sketch > Include Library > Manage Libraries….
  2. Tafuta Adafruit NeoMatrix na bofya Install.
  3. Ruhusu IDE kusakinisha vitegemezi vyote vilivyopendekezwa (Adafruit GFX na Adafruit NeoPixel).

Maktaba ya Sensor ya Mwendo ya QMI8658C (Kwa Miradi ya Baadaye)

Mradi 1 hautumii accelerometer moja kwa moja, lakini ni wazo zuri kusakinisha maktaba ya sensor ya mwendo sasa kwa sababu itahitajika kwa Miradi 4, 5, na 6.

Kutoka kwenye Library Manager:

  1. Tafuta maktaba ya QMI8658 kwa jina la mwandishi wake.
  2. Sakinisha maktaba ili ionekane chini ya File > Examples kwa majaribio ya haraka.

Mradi 1 – Mipangilio ya Msimbo (Nukta Inayosonga na Moyo)

Mchoro kamili unaoendesha Mradi wa 1 hupakiwa kiotomatiki chini ya makala hii kwenye tovuti. Hapa tunazingatia tu mipangilio muhimu ambayo kuna uwezekano utaibadilisha: pini, idadi ya saizi (pixels), mwangaza, rangi, na kasi ya uhuishaji. Kwa uhuishaji wa moyo, pia tunaonyesha jinsi ya kudhibiti rangi na kama moyo ni imara au una mzunguko tu.

Pini ya LED na Idadi ya Saizi

Kwenye moduli hii, matrix ya RGB 8×8 imeunganishwa kwenye GPIO 14 ya ESP32-S3. Jumla ya idadi ya saizi ni 64 (8 × 8). Katika msimbo wako, unapaswa kuona kitu sawa na:

 
// Pini iliyounganishwa kwenye matrix ya RGB 8×8 
const int MATRIX_PIN = 14;
 // lazima iwe 14 kwenye moduli hii 
// Jumla ya idadi ya LED (matrix 8 × 8) 
const int NUMPIXELS = 64; // badilisha tu ikiwa unatumia ukubwa tofauti wa matrix 

Ikiwa kwa bahati mbaya utaacha NUMPIXELS kwenye 16 (kutoka mfano wa awali wa NeoPixel), robo tu ya matrix itatumika na uhuishaji hautajaza skrini nzima ya 8×8.

Mpangilio wa Rangi na Aina ya LED

Mikanda na matrix tofauti za LED zinaweza kutumia mpangilio tofauti wa rangi (kwa mfano, GRB badala ya RGB). Matrix kwenye bodi hii inatarajia mpangilio wa RGB. Katika kijenzi cha NeoPixel au NeoMatrix, hakikisha aina ya rangi imewekwa kwa usahihi:


 // Mfano wa kitu cha mtindo wa NeoPixel: 
Adafruit_NeoPixel pixels( NUMPIXELS, MATRIX_PIN, NEO_RGB + NEO_KHZ800 // hakikisha hii inalingana na mpangilio wa rangi wa matrix ); 

Ikiwa utagundua kuwa nyekundu na kijani zimebadilishana kwenye skrini, angalia mstari huu kwanza na urekebishe mpangilio wa rangi.

Kasi ya Uhuishaji (Ucheleweshaji Kati ya Hatua)

Kasi ya nukta inayosonga kawaida hudhibitiwa na thamani rahisi ya ucheleweshaji katika millisekunde. Ucheleweshaji mdogo unamaanisha mwendo wa haraka; ucheleweshaji mkubwa unamaanisha mwendo wa polepole. Tafuta kigezo sawa na:

 
// Ucheleweshaji kati ya miondoko ya nukta (katika millisekunde)
 int dotDelayMs = 50; // 50 ms ni ya haraka kiasi 

Marekebisho ya kawaida:

  • Weka dotDelayMs = 20; kwa nukta inayosonga haraka sana.
  • Weka dotDelayMs = 100; au zaidi kwa uhuishaji wa polepole na wa utulivu.

Katika kazi ya loop(), thamani hii kawaida hupitishwa kwa delay(dotDelayMs); baada ya kila sasisho la fremu.

Rangi ya Nukta na Mwangaza

Rangi ya RGB ya nukta inayosonga inadhibitiwa na thamani tatu katika kiwango cha 0–255 (nyekundu, kijani, bluu). Kwa mfano:

 
// Rangi ya nukta (R, G, B) kutoka 0–255 uint8_t dotRed = 255; // nyekundu kamili 
uint8_t dotGreen = 0; // hakuna kijani 
uint8_t dotBlue = 0; // hakuna bluu 

Hii itazalisha nukta nyekundu angavu. Michanganyiko mingine muhimu:

  • Nyekundu safi: (255, 0, 0)
  • Kijani safi: (0, 255, 0)
  • Bluu safi: (0, 0, 255)
  • Njano: (255, 255, 0)
  • Nyeupe: (255, 255, 255)

Mwangaza wa jumla kawaida hudhibitiwa na kazi tofauti ya mwangaza:

 
// Mwangaza wa jumla wa matrix (0–255) 
uint8_t matrixBrightness = 40; // weka chini ili kuepuka mwangaza mwingi // Katika setup(): matrix.setBrightness(matrixBrightness); 

Thamani karibu na 30–60 kawaida ni nzuri kwa matumizi ya ndani.

Mipangilio ya Sura ya Moyo

Mbali na nukta inayosonga, unaweza kuonyesha moyo mdogo kwenye matrix wakati bodi inapowashwa kwa mara ya kwanza. Msimbo wa mfano wa makala (uliopakiwa hapa chini) unajumuisha mipangilio sawa na:

 
// Rangi ya moyo (moyo imara) 
uint8_t heartRed = 255; 
uint8_t heartGreen = 0; 
uint8_t heartBlue = 0; 
// Hiari: hali za upinde wa mvua au mzunguko 
bool showOutlinedHeart = false; 
// true = mzunguko tu 
bool useRainbowHeart = false; 
// true = badilisha rangi kwa muda 

Matumizi ya kawaida:

  • Weka showOutlinedHeart = false; na useRainbowHeart = false; kwa moyo imara nyekundu.
  • Weka showOutlinedHeart = true; kuonyesha mzunguko wa moyo tu.
  • Weka useRainbowHeart = true; kubadilisha rangi ya moyo kwa upinde wa mvua kila wakati.

Moyo huchorwa kwa kutumia kazi za kuratibu za NeoMatrix ndani ya msimbo chini ya makala. Unahitaji tu kubadilisha vigezo vilivyo hapo juu ili kubinafsisha muonekano wake.

Muhtasari

Mradi wa 1 unakupa mwanzo rahisi lakini wenye nguvu na ESP32-S3 RGB LED Matrix: unajifunza jinsi ya kushughulikia saizi zote 64, kudhibiti rangi, kurekebisha mwangaza, na kuweka kasi ya uhuishaji. Pia unaona jinsi ilivyo rahisi kubadili kutoka nukta inayosonga hadi moyo tuli au uliohuishwa kwenye vifaa vile vile.

Hakikisha unatazama video kamili iliyopachikwa kwenye ukurasa huu kwa maonyesho kamili ya hatua kwa hatua ya nukta inayosonga na uhuishaji wa moyo, pamoja na miradi mitano iliyobaki. Msimbo kamili wa chanzo unapatikana chini ya makala hii, na unaweza kusaidia miradi ya baadaye kwa kununua moduli kupitia viungo vya washirika vilivyoorodheshwa chini ya sehemu ya msimbo.

Bilder

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
Språk: 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();
  }



}

Tänker att du kanske behöver

Resurser och referenser

Filer📁

Fritzing-fil