Пребарување код

ESP32-S3 RGB LED матричен проект 1 - Основна точка

ESP32-S3 RGB LED матричен проект 1 - Основна точка

Проект 1 – Анимација на подвижна точка и срце на ESP32-S3 RGB LED матрица

Во овој проект започнуваме со наједноставната можна анимација на ESP32-S3 RGB LED матрицата: една точка што се движи низ 8×8 RGB екранот. Покрај тоа, додаваме и мала анимација на срце за да можете да ја претворите плочката во мал декоративен екран кога е вклучена. Ова е одличен прв чекор за да се запознаете со контролирање на поединечни пиксели, бои и брзина на анимација на матрицата.

Сите шест проекти во оваа серија се демонстрирани и објаснети во едно видео. Истото видео е вградено на оваа страница, па можете да ја погледнете целосната објаснување чекор-по-чекор и живата демонстрација на анимациите со подвижна точка и срце. Целосниот код за овој проект се вчитува автоматски под статијата, а можете да го купите ESP32-S3 RGB LED Matrix модулот од партнерските продавници наведени под делот со код.

Ако штотуку започнувате со оваа плочка, овој проект е совршен начин да:

  • Проверите дали вашата ESP32-S3 плочка и USB-врската работат.
  • Потврдите дека 8×8 RGB матрицата е поврзана на точниот пин.
  • Експериментирате со основно време на анимација, боја и осветленост.

Преглед на ESP32-S3 RGB LED Matrix модулот

Плочката користена во овој проект се базира на ESP32-S3 микроконтролерот, комбинирана со 8×8 RGB LED матрица (64 поединечно адресирани RGB LED диоди), QMI8658C сензор за движење на задната страна и USB-порт за напојување и програмирање.

Клучни карактеристики на овој модул:

  • ESP32-S3 двојадрен микроконтролер со поддршка за Wi-Fi и Bluetooth.
  • 8×8 RGB LED матрица (64 RGB LED диоди) на предната страна на плочката, идеална за икони, текст и мали игри.
  • QMI8658C акцелерометар / сензор за движење на задната страна, за да можете да детектирате навалување, движење и ориентација за интерактивни проекти.
  • USB-порт и за програмирање и за напојување.
  • Достапни пинови на рабовите, така што плочката може да се користи и како обичен ESP32 за други IO проекти.
  • Копчиња за boot и reset за влегување во режим на програмирање и рестартирање на вашата скица.

Во овој прв проект ја користиме само 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.

Инсталирање на ESP32 плочки во Arduino IDE

Пред да испратите било каков код на ESP32-S3, мора да го инсталирате пакетот за поддршка на ESP32 плочки во Arduino IDE. Во видеото, ова е демонстрирано во делот „инсталирање плочки“.

Општи чекори:

  1. Отворете го Arduino IDE и одете на File > Preferences.
  2. Во полето „Additional Boards Manager URLs“, додајте ја официјалната URL-адреса за ESP32 плочки.
  3. Отворете Tools > Board > Boards Manager…, пребарајте ESP32 и инсталирајте го пакетот за ESP32 плочки.
  4. По инсталацијата, одете на Tools > Board и изберете го точниот запис за вашиот ESP32-S3 RGB LED Matrix модул.
  5. Поврзете ја плочката преку USB и изберете го нејзиниот сериски порт под Tools > Port.

Ако точната плочка и порт не се избрани, вашата скица нема да се испрати, дури и ако вашиот код е точен.

Инсталирање на NeoMatrix и потребните библиотеки

LED матрицата внатрешно го користи Adafruit NeoPixel драјверот, а за полесно 2D цртање ја користиме Adafruit NeoMatrix библиотеката. Инсталирањето на NeoMatrix автоматски ќе ги повлече зависностите.

NeoMatrix и зависности

Инсталирајте ги следниве од Library Manager:

  • Adafruit NeoMatrix
  • Adafruit NeoPixel
  • Adafruit GFX Library

Во Library Manager:

  1. Отворете Sketch > Include Library > Manage Libraries….
  2. Пребарајте Adafruit NeoMatrix и кликнете Install.
  3. Дозволете на IDE да ги инсталира сите предложени зависности (Adafruit GFX и Adafruit NeoPixel).

QMI8658C библиотека за сензор за движење (за подоцнежни проекти)

Проектот 1 не го користи акцелерометарот директно, но е добра идеја да ја инсталирате библиотеката за сензорот за движење сега, бидејќи ќе биде потребна за проектите 4, 5 и 6.

Од Library Manager:

  1. Пребарајте ја QMI8658 библиотеката по името на авторот.
  2. Инсталирајте ја библиотеката за да се појави под File > Examples за брзо тестирање.

Проект 1 – Поставки на кодот (Подвижна точка и срце)

Целосната скица што го извршува Проектот 1 автоматски се вчитува под оваа статија на веб-страницата. Овде се фокусираме само на клучните поставки што најверојатно ќе ги менувате: пин, број на пиксели, осветленост, боја и брзина на анимација. За анимацијата на срцето, исто така покажуваме како да ја контролирате бојата и дали срцето е полно или само контура.

LED пин и број на пиксели

На овој модул, 8×8 RGB матрицата е поврзана на GPIO 14 од ESP32-S3. Вкупниот број на пиксели е 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 пиксели, да контролирате боја, да прилагодувате осветленост и да поставувате брзина на анимација. Исто така гледате колку е лесно да се префрлите од подвижна точка на статично или анимирано срце на истиот хардвер.

Погрижете се да го погледнете целосното видео вградено на оваа страница за комплетна, чекор-по-чекор демонстрација на подвижната точка и анимациите на срцето, заедно со останатите пет проекти. Целосниот изворен код е достапен под оваа статија, и можете да ги поддржите идните проекти со купување на модулот преку affiliate линковите наведени под делот со код.

Слики

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
Јазик: 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();
  }



}

Работи што можеби ќе ви требаат

Ресурси и референци

Датотеки📁

Fritzing датотека