16  RGB LED

The ESP32 board we are using has an built in RGB LED on pin D8. The following code is an example of how to use it. Please note that it requires the installation of the "Freenove_WS2812_Lib_for_ESP32.h" library. It can be found in the Arduino IDE library manager or downloaded from the github repository. If you are not sure how to install a library follow our guide.

Download code
// Include the library for controlling WS2812 LEDs using ESP32
// https://github.com/Freenove/Freenove_WS2812_Lib_for_ESP32
#include "Freenove_WS2812_Lib_for_ESP32.h" 

// Define the number of LEDs and the pin they are connected to
#define LEDS_COUNT 1
#define LEDS_PIN D8
#define CHANNEL 0

// Create an instance of the WS2812 LED strip with the specified number of LEDs, pin number, and color type
Freenove_ESP32_WS2812 strip = Freenove_ESP32_WS2812(LEDS_COUNT, LEDS_PIN, CHANNEL, TYPE_GRB);

// Define an array of colors to cycle through
// u8 = unsigned 8-bit integer (a byte), capable of holding numbers from 0 t0 255
//                  R    G    B
u8 m_color[][3] = {{255, 0,   0  },        // red
                   {0,   255, 0  },        // green
                   {0,   0,   255},        // blue
                   {255, 255, 255},        // white
                   {255, 255, 0  },        // yellow
                   {255, 0  , 255},        // magenta
                   {0,   255, 255},        // cyan
                   {0,   0,   0}           // black
                  };
// number of colors = total bytes in m_color divided by bytes in m_color[0
int N_colors = sizeof(m_color) / sizeof(m_color[0]);
// Setup function - runs once when the microcontroller starts up
void setup() {
  // Initialize the LED strip
  strip.begin();
  // Set the brightness of the LEDs to 50%
  strip.setBrightness(50);
}

// Loop function - runs repeatedly while the microcontroller is powered on
void loop() {
  // 1.
  // Cycle through the array of colors defined before
  for (int j = 0; j < N_colors; j++) {
    // Set LED to the current color and display the result
    for (int i = 0; i < LEDS_COUNT; i++) {
      strip.setLedColorData(i, m_color[j][0],
                               m_color[j][1],
                               m_color[j][2]
                           );
      strip.show();
      delay(500); // milliseconds
    }
  }
  delay(1000);  // milliseconds
  // 2.
  // Cycle through a range of colors using the Wheel function
  for (int j = 0; j < 255; j++) {
    strip.setLedColorData(0, strip.Wheel(j));
    strip.show();
    delay(10);
  }
  // 3.
  // make LED black and wait 1 second before starting all over
  for (int j = 0; j < 255; j++) {
    strip.setLedColorData(0, 0, 0, 0);
    strip.show();
  }
  delay(1000);  // milliseconds
}