Introduction: ESP32-S2 Saola Making the RGB Work
I could not find any example code on how to access the Neo Pixel on my new ESP32-S2 so I decided to write some and share for anyone else who would like to do the same.
Step 1: Here Is Some Code to Get Your NeoPixel on Your ESP32-S2 Cycling.
First you need the ESP32 S2 devices installed in your Arduino IDE, downloaded here:
https://github.com/espressif/arduino-esp32/tree/es...
You will need the NeoPixel Library from Adafruit to get this sketch to work.
https://github.com/adafruit/Adafruit_NeoPixel
Finally just run the code attached.
// //Sample code to control the single NeoPixel on the ESP32-S2 Saola // #include <Adafruit_NeoPixel.h> // On the ESP32S2 SAOLA GPIO is the NeoPixel. #define PIN 18 //Single NeoPixel Adafruit_NeoPixel pixels(1, PIN, NEO_GRB + NEO_KHZ800); #define DELAYVAL 25 // Time (in milliseconds) to pause between color change void setup() { //This pixel is just way to bright, lower it to 10 so it does not hurt to look at. pixels.setBrightness(10); pixels.begin(); // INITIALIZE NeoPixel (REQUIRED) } // Simple function to return a color in the rainbow // Input a value 0 to 255 to get a color value. uint32_t Wheel(byte WheelPos) { //Assume the wheel value is less than 85, if so Green value is 0 uint32_t returnColor = Adafruit_NeoPixel::Color((byte)(255 - (WheelPos * 3)), 0, (byte)(WheelPos * 3)); //If we are greater than 170 Red value is 0 if (WheelPos > 84 && WheelPos < 170) { WheelPos -= 85; returnColor = Adafruit_NeoPixel::Color(0, (byte)(WheelPos * 3), (byte)(255 - WheelPos * 3)); } //Finally above 170 and Blue value is 0 else if (WheelPos >= 170) { WheelPos -= 170; returnColor = Adafruit_NeoPixel::Color((byte)(WheelPos * 3), (byte)(255 - WheelPos * 3), 0); } return returnColor; } //Counter to run from 0-255 to cycle the colors of the rainbow. int colorCount = 0; void loop() { //Set the new color on the pixel. pixels.setPixelColor(0, Wheel(colorCount++)); // Send the updated pixel colors to the hardware. pixels.show(); //Cycle the colors at the end. if (colorCount > 255) colorCount = 0; // Pause before next pass through loop delay(DELAYVAL); }