Kod Ara

ESP32-S3 RGB LED Matris Projesi 1- Temel Nokta

ESP32-S3 RGB LED Matris Projesi 1- Temel Nokta

Proje 1 – ESP32-S3 RGB LED Matriste Hareket Eden Nokta ve Kalp Animasyonu

Bu projede, ESP32-S3 RGB LED Matriste mümkün olan en basit animasyonla başlıyoruz: 8×8 RGB ekranda hareket eden tek bir nokta. Bunun üzerine, kartı açıldığında küçük bir dekoratif ekrana dönüştürebilmeniz için küçük bir kalp animasyonu ekliyoruz. Bu, matriste tek tek pikselleri, renkleri ve animasyon hızını kontrol etmeye alışmak için harika bir ilk adımdır.

Bu serideki altı projenin tamamı tek bir videoda gösterilmiş ve açıklanmıştır. Aynı video bu sayfaya gömülüdür, böylece hareket eden nokta ve kalp animasyonlarının adım adım açıklamasını ve canlı gösterimini izleyebilirsiniz. Bu projenin tam kodu makalenin altında otomatik olarak yüklenir ve ESP32-S3 RGB LED Matrix modülünü kod bölümünün altında listelenen bağlı kuruluş mağazalarından satın alabilirsiniz.

Bu kartla yeni başlıyorsanız, bu proje şunlar için mükemmel bir yoldur:

  • ESP32-S3 kartınızın ve USB bağlantınızın çalıştığını doğrulamak.
  • 8×8 RGB matrisin doğru pine bağlandığını onaylamak.
  • Temel animasyon zamanlaması, renk ve parlaklık ile denemeler yapmak.

ESP32-S3 RGB LED Matrix Modülüne Genel Bakış

Bu projede kullanılan kart, ESP32-S3 mikrodenetleyicisine dayanır ve 8×8 RGB LED matris (64 ayrı ayrı adreslenebilir RGB LED), arkada bir QMI8658C hareket sensörü ve güç ile programlama için bir USB bağlantı noktası ile birleştirilmiştir.:contentReference[oaicite:0]{index=0}

Bu modülün temel özellikleri:

  • ESP32-S3 Wi-Fi ve Bluetooth desteğine sahip çift çekirdekli mikrodenetleyici.
  • 8×8 RGB LED matris (64 RGB LED) kartın önünde, simgeler, metinler ve küçük oyunlar için idealdir.
  • QMI8658C ivmeölçer / hareket sensörü arka tarafta, böylece etkileşimli projeler için eğimi, hareketi ve yönelimi algılayabilirsiniz.
  • USB bağlantı noktası hem programlama hem de güç için.
  • Erişilebilir pinler kenarlarda, böylece kart diğer IO projeleri için normal bir ESP32 gibi de kullanılabilir.
  • Boot ve reset düğmeleri programlama moduna girmek ve taslağınızı yeniden başlatmak için.

Bu ilk projede yalnızca kartın LED matris kısmını kullanıyoruz, ancak aynı donanım metin ekranları, web kontrollü mesajlar, hareket kontrollü oyunlar ve daha fazlasını çalıştıracak kadar güçlüdür — bunlar bu serinin diğer projelerinde ele alınmaktadır.

Videoda Ele Alınan Projeler (Zaman Damgaları)

Altı projenin tümü aynı YouTube videosunu paylaşır. Yaklaşık zaman damgaları şunlardır:

  • 00:00 – Giriş
  • 02:01 – ESP32 kartlarını kurma
  • 03:32 – Kütüphaneleri kurma
  • 05:32 – Proje 1: Hareket Eden Nokta (ve temel renk / hız ayarları)
  • 11:11 – Proje 2: Metin Kaydırma
  • 12:59 – Proje 3: HTTP Metni
  • 16:41 – Proje 4: Eğim Noktası
  • 18:55 – Proje 5: Yukarı Ok
  • 20:02 – Proje 6: Hedef Oyunu

En iyi anlayış için, bu makaleyi takip ederken videoyu izlemeniz şiddetle önerilir. Video, matristeki noktanın ve kalbin canlı davranışını ve Arduino IDE içindeki tüm adımları gösterir.

Arduino IDE'de ESP32 Kartlarını Kurma

ESP32-S3'e herhangi bir kod yüklemeden önce, Arduino IDE'de ESP32 kart destek paketini kurmanız gerekir. Videoda bu, “kartları kurma” bölümünde gösterilmiştir.

Genel adımlar:

  1. Arduino IDE'yi açın ve Dosya > Tercihler bölümüne gidin.
  2. “Ek Kart Yöneticisi URL'leri” alanına resmi ESP32 kartları URL'sini ekleyin.
  3. Araçlar > Kart > Kart Yöneticisi… bölümünü açın, ESP32 arayın ve ESP32 kartları paketini kurun.
  4. Kurulumdan sonra Araçlar > Kart bölümüne gidin ve ESP32-S3 RGB Matrix modülünüz için doğru kart girişini seçin.
  5. Kartı USB ile bağlayın ve Araçlar > Port altında seri bağlantı noktasını seçin.

Doğru kart ve bağlantı noktası seçilmezse, kodunuz doğru olsa bile taslağınız yüklenmez.

NeoMatrix ve Gerekli Kütüphaneleri Kurma

LED matris dahili olarak Adafruit NeoPixel sürücüsünü kullanır ve daha kolay 2D çizim için Adafruit NeoMatrix kütüphanesini kullanırız. NeoMatrix'i kurmak bağımlılıkları otomatik olarak getirir.

NeoMatrix ve Bağımlılıkları

Kütüphane Yöneticisinden aşağıdakileri kurun:

  • Adafruit NeoMatrix
  • Adafruit NeoPixel
  • Adafruit GFX Library

Kütüphane Yöneticisinde:

  1. Eskiz > Kütüphane Ekle > Kütüphaneleri Yönet… bölümünü açın.
  2. Adafruit NeoMatrix arayın ve Kur düğmesine tıklayın.
  3. IDE'nin önerilen tüm bağımlılıkları (Adafruit GFX ve Adafruit NeoPixel) kurmasına izin verin.

QMI8658C Hareket Sensörü Kütüphanesi (Sonraki Projeler İçin)

Proje 1 ivmeölçeri doğrudan kullanmaz, ancak hareket sensörü kütüphanesini şimdi kurmak iyi bir fikirdir çünkü Proje 4, 5 ve 6 için gerekli olacaktır.

Kütüphane Yöneticisinden:

  1. QMI8658 kütüphanesini yazar adına göre arayın.
  2. Hızlı test için Dosya > Örnekler altında görünecek şekilde kütüphaneyi kurun.

Proje 1 – Kod Ayarları (Hareket Eden Nokta ve Kalp)

Proje 1'i çalıştıran tam taslak, bu makalenin altında web sitesinde otomatik olarak yüklenir. Burada yalnızca değiştirme olasılığınız olan temel ayarlara odaklanıyoruz: pin, piksel sayısı, parlaklık, renk ve animasyon hızı. Kalp animasyonu için ayrıca rengin nasıl kontrol edileceğini ve kalbin içi dolu mu yoksa sadece çerçeve mi olduğunu da gösteriyoruz.

LED Pini ve Piksel Sayısı

Bu modülde, 8×8 RGB matris ESP32-S3'ün GPIO 14'üne bağlıdır. Toplam piksel sayısı 64'tür (8 × 8). Kodunuzda şuna benzer bir şey görmelisiniz:

 
// 8×8 RGB matrise bağlı pin 
const int MATRIX_PIN = 14;
 // bu modülde 14 olmalı 
// Toplam LED sayısı (8 × 8 matris) 
const int NUMPIXELS = 64; // yalnızca farklı bir matris boyutu kullanıyorsanız değiştirin 

Yanlışlıkla NUMPIXELS değerini 16'da bırakırsanız (orijinal NeoPixel örneğinden), matrisin yalnızca dörtte biri kullanılır ve animasyon 8×8 ekranın tamamını doldurmaz.

Renk Sırası ve LED Türü

Farklı LED şeritleri ve matrisleri farklı renk sıraları kullanabilir (örneğin, RGB yerine GRB). Bu karttaki matris RGB sırasını bekler. NeoPixel veya NeoMatrix yapıcı işlevinde, renk türünün doğru ayarlandığından emin olun:


 // NeoPixel tarzı bir nesne için örnek: 
Adafruit_NeoPixel pixels( NUMPIXELS, MATRIX_PIN, NEO_RGB + NEO_KHZ800 // bunun matris renk sırasıyla eşleştiğinden emin olun ); 

Ekranda kırmızı ve yeşilin yer değiştirdiğini fark ederseniz, önce bu satırı kontrol edin ve renk sırasını düzeltin.

Animasyon Hızı (Adımlar Arası Gecikme)

Hareket eden noktanın hızı genellikle milisaniye cinsinden basit bir gecikme değeriyle kontrol edilir. Daha küçük bir gecikme daha hızlı hareket anlamına gelir; daha büyük bir gecikme daha yavaş hareket anlamına gelir. Şuna benzer bir değişken arayın:

 
// Nokta hareketleri arasındaki gecikme (milisaniye cinsinden)
 int dotDelayMs = 50; // 50 ms oldukça hızlıdır 

Tipik ayarlamalar:

  • Çok hızlı hareket eden bir nokta için dotDelayMs = 20; ayarlayın.
  • Yavaş ve sakin bir animasyon için dotDelayMs = 100; veya daha yüksek bir değer ayarlayın.

loop() fonksiyonunda bu değer genellikle her kare güncellemesinden sonra delay(dotDelayMs); olarak iletilir.

Nokta Rengi ve Parlaklık

Hareket eden noktanın RGB rengi, 0–255 aralığındaki üç değerle (kırmızı, yeşil, mavi) kontrol edilir. Örneğin:

 
// Nokta rengi (R, G, B) 0–255 arası uint8_t dotRed = 255; // tam kırmızı 
uint8_t dotGreen = 0; // yeşil yok 
uint8_t dotBlue = 0; // mavi yok 

Bu, parlak kırmızı bir nokta üretir. Bazı kullanışlı kombinasyonlar:

  • Saf kırmızı: (255, 0, 0)
  • Saf yeşil: (0, 255, 0)
  • Saf mavi: (0, 0, 255)
  • Sarı: (255, 255, 0)
  • Beyaz: (255, 255, 255)

Genel parlaklık genellikle ayrı bir parlaklık fonksiyonuyla kontrol edilir:

 
// Genel matris parlaklığı (0–255) 
uint8_t matrixBrightness = 40; // fazla parlamayı önlemek için düşük tutun // setup() içinde: matrix.setBrightness(matrixBrightness); 

İç mekan kullanımı için 30–60 civarında bir değer genellikle rahattır.

Kalp Şekli Ayarları

Hareket eden noktaya ek olarak, kart ilk açıldığında matriste küçük bir kalp görüntüleyebilirsiniz. Makalenin örnek kodu (aşağıda yüklenen) şuna benzer ayarlar içerir:

 
// Kalp rengi (içi dolu kalp) 
uint8_t heartRed = 255; 
uint8_t heartGreen = 0; 
uint8_t heartBlue = 0; 
// İsteğe bağlı: gökkuşağı veya çerçeve modları 
bool showOutlinedHeart = false; 
// true = yalnızca çerçeve 
bool useRainbowHeart = false; 
// true = zamanla renkleri döngüye sokar 

Tipik kullanım:

  • İçi dolu kırmızı bir kalp için showOutlinedHeart = false; ve useRainbowHeart = false; ayarlayın.
  • Yalnızca kalp çerçevesini göstermek için showOutlinedHeart = true; ayarlayın.
  • Kalp rengini sürekli olarak gökkuşağı efektiyle döngüye sokmak için useRainbowHeart = true; ayarlayın.

Kalp, makalenin altındaki kodda NeoMatrix koordinat fonksiyonları kullanılarak çizilir. Görünümünü özelleştirmek için yalnızca yukarıdaki değişkenleri değiştirmeniz yeterlidir.

Özet

Proje 1, ESP32-S3 RGB LED Matris ile basit ama güçlü bir başlangıç noktası sunar: 64 pikselin tamamına nasıl erişeceğinizi, rengi nasıl kontrol edeceğinizi, parlaklığı nasıl ayarlayacağınızı ve animasyon hızını nasıl belirleyeceğinizi öğrenirsiniz. Ayrıca aynı donanımda hareket eden bir noktadan statik veya animasyonlu bir kalbe geçmenin ne kadar kolay olduğunu da görürsünüz.

Hareket eden nokta ve kalp animasyonlarının yanı sıra kalan beş projenin adım adım tam bir gösterimi için bu sayfada gömülü olan videoyu mutlaka izleyin. Tam kaynak kodu bu makalenin altında mevcuttur ve kod bölümünün altında listelenen bağlı kuruluş bağlantıları aracılığıyla modülü satın alarak gelecekteki projeleri destekleyebilirsiniz.

Görseller

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
Dil: 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();
  }



}

İhtiyacın olabileceğini düşünüyor

Kaynaklar ve referanslar

Dosyalar📁

Fritzing Dosyası