ESP32 - DotStar LED Strip

In deze tutorial leert u hoe u de ESP32 gebruikt om een DotStar RGB LED-strip aan te sturen. We behandelen uitgebreid:

Hardware vereist

1×ESP32 ESP-WROOM-32 Ontwikkelingsmodule
1×USB Type-C kabel
1×DotStar RGB LED-Strip
1×1000uF condensator
1×470Ω weerstand
1×5V voeding adapter
1×DC power jack
1×Jumperkabels
1×(Aanbevolen) Schroefklem Uitbreidingsboard voor ESP32
1×(Aanbevolen) Breakout Expansion Board for ESP32
1×(Aanbevolen) Stromsplitter voor ESP32

Of u kunt de volgende kits kopen:

1×DIYables Sensorkit (30 sensoren/displays)
1×DIYables Sensorkit (18 sensoren/displays)
Openbaarmaking: Sommige van de links in deze sectie zijn Amazon-affiliate links. We kunnen een commissie ontvangen voor aankopen die via deze links worden gedaan, zonder extra kosten voor u. We waarderen uw steun.

Over de DotStar RGB LED Strip

Pinout

De DotStar RGB LED-strip heeft vier pinnen:

  • GND pin: dient aangesloten te worden op GND (0V)
  • CI pin: Clock-pin die het kloksignaal ontvangt. Deze pin dient verbonden te worden met een ESP32-pin.
  • DI pin: Data-pin die het besturingssignaal ontvangt. Deze pin moet verbonden zijn met een ESP32-pin.
  • 5V pin: moet verbonden zijn met 5V van een externe voeding
DotStar Pinout

Aansluitschema

ESP32 DotStar RGB LED strip Aansluitschema

This image is created using Fritzing. Click to enlarge image

Hoe programmeer je de DotStar RGB LED Strip

  • Include de DotStar bibliotheek
#include <Adafruit_DotStar.h> #include <SPI.h> // COMMENTAAR DEZE REGEL UIT VOOR GEMMA OF TRINKET
  • Declareer een DotStar object
#define NUMPIXELS 144 // Aantal LEDs in de strip // Zo kunt u de LEDs vanaf twee willekeurige pinnen aansturen: #define DATAPIN 16 #define CLOCKPIN 17 Adafruit_DotStar strip(NUMPIXELS, DATAPIN, CLOCKPIN, DOTSTAR_BRG);
  • Initialiseer de DotStar
strip.begin(); // Initialiseer de pinnen voor output strip.setBrightness(255); strip.show(); // Zet direct alle LEDs uit
  • Stel kleur (r, g, b) in van elke individuele LED (pixel)
strip.setPixelColor(pixel, g, r, b);
  • Stel helderheid in voor de hele strip
strip.setBrightness(100); // waarde tussen 0 en 255

※ Notiz:

  • DotStar.setBrightness() regelt de helderheid van álle pixels op de LED-strip. Om de helderheid van een individuele pixel in te stellen, kunt u de kleurwaarden schalen.
  • De instellingen van DotStar.setBrightness() en DotStar.setPixelColor() worden pas zichtbaar na het aanroepen van DotStar.show().

ESP32 Code

De onderstaande code laat de pixels één voor één rood kleuren, met een vertraging per pixel

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-dotstar-led-strip */ #include <Adafruit_DotStar.h> #include <SPI.h> // COMMENT OUT THIS LINE FOR GEMMA OR TRINKET #define NUMPIXELS 144 // Number of LEDs in strip // Here's how to control the LEDs from any two pins: #define DATAPIN 16 // The ESP32 pin GPIO16 #define CLOCKPIN 17 // The ESP32 pin GPIO17 Adafruit_DotStar strip(NUMPIXELS, DATAPIN, CLOCKPIN, DOTSTAR_BRG); void setup() { Serial.begin(9600); strip.begin(); // INITIALIZE NeoPixel strip object (REQUIRED) strip.show(); // Turn OFF all pixels ASAP strip.setBrightness(255); } void loop() { for (int pixel = 0; pixel < NUMPIXELS; pixel++) { // red color int r = 255; // CHANGE COLOR AS YOUR DESIRE int g = 0; // CHANGE COLOR AS YOUR DESIRE int b = 0; // CHANGE COLOR AS YOUR DESIRE strip.clear(); // turn off all pixel strip.setPixelColor(pixel, g, r, b); // turn on a single pixel strip.show(); delay(1000); // keep each pixel on 1 seconds } }

Snelle stappen

  • Gebruikt u voor het eerst een ESP32? Bekijk dan onze handleiding voor het instellen van de ESP32-omgeving binnen Arduino IDE.
  • Voer de bedrading uit zoals in de bovenstaande afbeelding.
  • Verbind de ESP32 met uw PC via een micro USB-kabel.
  • Open de Arduino IDE op uw PC.
  • Selecteer het juiste ESP32 board (bijv. ESP32 Dev Module) en de juiste COM-poort.
  • Klik op het Bibliotheken-icoon in de linkerzijbalk van de Arduino IDE.
  • Zoek op “Adafruit DotStar” en selecteer de DotStar-bibliotheek van Adafruit.
  • Klik op de Installeren-knop om de DotStar-bibliotheek te installeren.
ESP32 DotStar bibliotheek
  • U krijgt een pop-up om ook de afhankelijkheden te installeren. Klik op de Alles installeren-knop.
ESP32 afhankelijkheden bibliotheek
  • Kopieer de bovenstaande code en open deze met Arduino IDE.
  • Klik in de Arduino IDE op de Uploaden-knop om de code naar de ESP32 te sturen.
  • Bekijk het LED-effect.

ESP32 Code - LED Strip Comet Effect

De onderstaande code realiseert het ‘comet’ effect op de DotStar LED strip

/* * Deze ESP32 code is ontwikkeld door newbiely.nl * Deze ESP32 code wordt zonder enige beperking aan het publiek beschikbaar gesteld. * Voor volledige instructies en schema's, bezoek: * https://newbiely.nl/tutorials/esp32/esp32-dotstar-led-strip */ #include <Adafruit_DotStar.h> #include <SPI.h> // COMMENT OUT THIS LINE FOR GEMMA OR TRINKET #define COMET_LENGTH_ALL 30 // in pixel COMET_LENGTH_ALL = COMET_LENGTH_BODY + COMET_LENGTH_HEAD #define COMET_LENGTH_BODY 25 // in pixel #define COMET_LENGTH_HEAD 5 // in pixel #define TWO_COMET_DISTANCE 10 // in pixel #define COMET_SPEED 2000 // in millisecond, the time need to move through 144 pixels #define COMET_COLOR_R 204 // color #define COMET_COLOR_G 255 // color #define COMET_COLOR_B 255 // color #define COMET_BRIGHTNESS_MIN 1 #define COMET_BRIGHTNESS_MAX 200 #define COMET_BRIGHTNESS_HEAD 80 #define FLICKER_MAX 255 #define FLICKER_MIN 100 #define FLICKER_SPEED 800 // in millisecond #define NUMPIXELS 144 // Number of LEDs in strip // Here's how to control the LEDs from any two pins: #define DATAPIN 16 // The ESP32 pin GPIO16 #define CLOCKPIN 17 // The ESP32 pin GPIO17 Adafruit_DotStar strip(NUMPIXELS, DATAPIN, CLOCKPIN, DOTSTAR_BRG); int pos_head = 0; unsigned long cometTimeStart; unsigned long flickerTimeStart; unsigned long progress; unsigned long cometBrightness; unsigned long flickerBrightness; unsigned long TIME_PER_PIXEL; void setup() { Serial.begin(9600); strip.begin(); // INITIALIZE NeoPixel strip object (REQUIRED) strip.show(); // Turn OFF all pixels ASAP strip.setBrightness(255); TIME_PER_PIXEL = map(1, 0, NUMPIXELS, 0, COMET_SPEED); cometTimeStart = millis(); flickerTimeStart = millis(); } void loop() { progress = millis() - flickerTimeStart; if (progress >= 2 * FLICKER_SPEED) { progress = 2 * FLICKER_SPEED; flickerTimeStart = millis(); } if (progress > FLICKER_SPEED) progress = 2 * FLICKER_SPEED - progress; flickerBrightness = map(progress, 0, FLICKER_SPEED, FLICKER_MIN, FLICKER_MAX); strip.setBrightness(flickerBrightness); progress = millis() - cometTimeStart; if (progress >= TIME_PER_PIXEL) { pos_head++; pos_head %= (COMET_LENGTH_ALL + TWO_COMET_DISTANCE); int offset = COMET_LENGTH_ALL - pos_head; for (int pixel = 0; pixel < NUMPIXELS; pixel++) { int pos_offset = pixel + offset; pos_offset %= (COMET_LENGTH_ALL + TWO_COMET_DISTANCE); if (pos_offset < COMET_LENGTH_BODY) cometBrightness = map(pos_offset, 0, COMET_LENGTH_BODY - 1, COMET_BRIGHTNESS_MIN, COMET_BRIGHTNESS_MAX); else if (pos_offset >= COMET_LENGTH_BODY && pos_offset < COMET_LENGTH_ALL) cometBrightness = map(pos_offset - COMET_LENGTH_BODY + 1, 0, COMET_LENGTH_ALL - COMET_LENGTH_BODY, COMET_BRIGHTNESS_MAX, COMET_BRIGHTNESS_HEAD); else cometBrightness = 0; int r = (COMET_COLOR_R * cometBrightness) >> 8; int g = (COMET_COLOR_G * cometBrightness) >> 8; int b = (COMET_COLOR_B * cometBrightness) >> 8; strip.setPixelColor(pixel, g, r, b); } strip.show(); cometTimeStart = millis(); // new circle } }

※ Notiz:

Voor andere LED-effecten bieden wij een betaalde programmeerservice aan.

Video Tutorial

We overwegen het maken van videotutorials. Als u videotutorials belangrijk vindt, abonneer u dan op ons YouTube-kanaal om ons te motiveren de video's te maken.

Bekijk onze video-tutorial voor visuele ondersteuning bij dit project! De video geeft extra uitleg en helpt het proces beter te begrijpen.

※ ONZE BERICHTEN

  • U bent welkom om de link naar deze tutorial te delen. Gebruik onze inhoud echter niet op andere websites. We hebben veel moeite en tijd gestoken in het maken van de inhoud, respecteer alstublieft ons werk!