Soek Kode

ESP32 Tutoriaal 12/55 - WS2812 RGB-strook 4-projek met SunFounder se ESP32 IoT-leerkit

ESP32 Tutoriaal 12/55 - WS2812 RGB-strook 4-projek met SunFounder se ESP32 IoT-leerkit

In hierdie tutoriaal gaan ons ondersoek hoe om 'n WS2812 LED-strook met die ESP32-mikrobeheerder te beheer. Hierdie projek laat jou toe om 'n verskeidenheid kleure te skep en elke LED individueel te beheer, wat 'n prettige en visueel aantreklike manier bied om oor programmering en elektronika te leer. Teen die einde van hierdie tutoriaal sal jy 'n ten volle funksionele opstelling hê wat kleure en patrone dinamies kan verander.

SunFounder-ESP32-Les-12-LED-Strook.mp4_snapshot_00.02.422

Deur die ESP32-mikrobeheerder van SunFounder te gebruik, wat ingeboude Wi-Fi- en Bluetooth-vermoëns het, kan ons maklik die WS2812 RGB-LED-strook koppel en beheer. Die buigsaamheid van hierdie LED-strook maak voorsiening vir kreatiewe toepassings, of dit nou vir dekoratiewe beligting of opvoedkundige projekte is. Vir 'n beter begrip van die stappe wat betrokke is, kan jy na die video verwys by (in video by 00:00).

Hardeware Verduidelik

Die hoofkomponente vir hierdie projek sluit die ESP32-mikrobeheerder en die WS2812-LED-strook in. Die ESP32 is 'n kragtige mikrobeheerder wat take kan verrig soortgelyk aan dié van 'n Arduino, maar met bykomende konnektiwiteitsopsies. Dit het 'n ryk stel kenmerke wat dit in staat stel om aan die wolk te koppel, wat afstandbeheer en datalogging moontlik maak.

Die WS2812-LED-strook bestaan uit individueel adresseerbare RGB-LED's, wat beteken dat elke LED beheer kan word om verskillende kleure te vertoon. Die strook werk op 'n enkeldraad-protokol, wat toelaat dat veelvuldige LED's aanmekaargeskakel kan word sonder om sein kwaliteit te verloor. Elke LED bevat 'n ingeboude drywer wat die insetsein neem en dit vir die volgende LED in die ketting versterk.

Datablad Besonderhede

Vervaardiger Worldsemi
Deelnommer WS2812
Logika/IO-spanning 3.5–5.3 V
Toevoerspanning 5 V
Uitsetstroom (per kanaal) 20 mA maks
Piekstroom (per kanaal) 60 mA maks
PWM-frekwensie riglyn 400 Hz
Insetlogika-drempels 0.3 x VDD tot 0.7 x VDD
Spanningval / RDS(on) / versadiging 0.5 V maks
Termiese perke -25 tot 80 °C
Pakket 5050
Notas / variante Kan aanmekaargeskakel word vir langer stroke

 

  • Verseker behoorlike kragtoevoer (5 V) om LED-skade te vermy.
  • Gebruik 'n kapasitor (100 µF) oor die kragtoevoerterminale om spanningspulse glad te maak.
  • Hou datadrade kort om seindegradasie te verminder.
  • Wees versigtig met die LED-temperatuur; verseker behoorlike hitte-afvoer.
  • Neem korrekte polariteit waar wanneer krag en grond gekoppel word.
  • Gebruik 'n optrekweerstand op die datalyne as jy lang stroke gebruik.

Bedradingsinstruksies

ESP32-12-WS2812-wiring

Om die WS2812-LED-strook aan die ESP32 te bedraad, begin deur die kragtoevoer te koppel. Die +5V-draad van die LED-strook moet aan die 5V-pen op die ESP32 gekoppel word, en die gronddraad (GND) moet aan een van die GND-penne op die ESP32 gekoppel word.

Koppel volgende die data-insetdraad van die LED-strook aan pen 14 op die ESP32. Maak seker dat die verbindings veilig is om behoorlike data-oordrag te verseker. As jy veelvuldige stroke of langer afstande gebruik, oorweeg dit om 'n vlakverskuiwer te gebruik om seinintegriteit te verseker. Hierdie opstelling sal jou toelaat om die LED-strook direk vanaf die ESP32 te beheer.

Kode Voorbeelde & Deurloop

Die kode gebruik die Adafruit NeoPixel-biblioteek om die WS2812-LED-strook te beheer. Dit begin deur die LED-strook te initialiseer en die aanvanklike kleur op swart te stel. Die sleutelidentifiseerders in die kode sluit LED_PIN in, wat die pen definieer wat aan die datalyne van die LED-strook gekoppel is, en NUM_LEDS, wat die aantal LED's in die strook spesifiseer.

#include  // Sluit die Adafruit NeoPixel-biblioteek in

#define LED_PIN 14 // NeoPixel LED-strook
#define NUM_LEDS 8 // Aantal LED's

In die opstellingsfunksie word die strook geïnisialiseer met strip.begin(), en die aanvanklike kleur word op swart gestel met strip.show(). Dit berei die strook voor vir kleurveranderinge wanneer die program loop.

void setup() {
  strip.begin(); // Initialiseer die NeoPixel-strook
  strip.show(); // Stel aanvanklike kleur op swart
}

Die hoof-lus van die program bestaan uit twee for-lusse. Die eerste lus skakel elke LED een vir een aan deur sy kleur te stel en die strook op te dateer. Die tweede lus skakel elke LED op dieselfde manier af. Dit skep 'n eenvoudige maar effektiewe lig-animasie.

void loop() {
  // Skakel LED's een vir een aan
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, 100, 45, 0); // Stel die kleur van die i-de LED op rooi
    strip.show(); // Dateer die LED-strook op met die nuwe kleure
    delay(100); // Wag vir 100 millisekondes
  }
  
  // Skakel LED's een vir een af
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, 0, 0, 0); // Stel die kleur van die i-de LED op swart (skakel dit af)
    strip.show(); // Dateer die LED-strook op met die nuwe kleure
    delay(100); // Wag vir 100 millisekondes
  }
}

Kyk na die volledige kode-laaiprogram onder die artikel vir meer besonderhede oor hoe om verskillende kleureffekte en animasies te implementeer.

Demonstrasie / Wat om te Verwag

Sodra jy die bedrading voltooi en die kode opgelaai het, behoort jy te sien dat die LED's op die strook een vir een in 'n gespesifiseerde kleur aangaan, gevolg deur dat hulle in dieselfde volgorde afskakel. Dit skep 'n "lopende lig"-effek. As die LED's nie soos verwag aangaan nie, kontroleer jou bedradingverbindings weer en maak seker dat die kragtoevoer voldoende is. Verifieer ook dat die korrekte pen in die kode gedefinieer is (in video by 12:30).

Video Tydstempels

  • 00:00 Begin
  • 1:40 Inleiding tot WS2812 LED
  • 7:25 Projekdokumentasie-bladsy
  • 9:16 RGB-kleur verduidelik
  • 13:16 Bedrading verduidelik
  • 13:48 Arduino-kode-1 verduidelik
  • 19:03 Kies ESP32-bord en -poort op Arduino IDE
  • 20:45 Kode-1-demo
  • 22:00 Beheer van individuele LED
  • 24:16 Stapende lig-LED
  • 25:41 Heen en weer lig

Beelde

ESP32-12-WS2812-wiring
ESP32-12-WS2812-wiring
ESP32-12-WS2812-schematic
ESP32-12-WS2812-schematic
SunFounder-ESP32-Lesson-12-LED-Strip.mp4_snapshot_00.02.422
SunFounder-ESP32-Lesson-12-LED-Strip.mp4_snapshot_00.02.422
811-ESP32 Tutorial 12/55- Arduino code for WS2812 RGB LED stripe using ESP32
Taal: C++
#include <Adafruit_NeoPixel.h> // Include the Adafruit NeoPixel library

#define LED_PIN 14 // NeoPixel LED strip
#define NUM_LEDS 8 // Number of LEDs

// Create an instance of the Adafruit_NeoPixel class
Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, LED_PIN, NEO_GRB + NEO_KHZ800); 

void setup() {
  strip.begin(); // Initialize the NeoPixel strip
  strip.show(); // Set initial color to black
}

void loop() {
  // Turn on LEDs one by one
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, 100, 45, 0); // Set the color of the i-th LED to red
    strip.show(); // Update the LED strip with the new colors
    delay(100); // Wait for 100 milliseconds
  }
  
  // Turn off LEDs one by one
  for (int i = 0; i < NUM_LEDS; i++) {
    strip.setPixelColor(i, 0, 0, 0); // Set the color of the i-th LED to black (turn it off)
    strip.show(); // Update the LED strip with the new colors
    delay(100); // Wait for 100 milliseconds
  }
}

Goedere wat jy dalk nodig het

Hulpbronne en verwysings

Geen hulpbronne nog.

Lêers📁

Geen lêers beskikbaar.