Fading 2 or more LEDS using ESP32 and Arduino IDE
Fading 2 or more LEDS using ESP32 on Arduino IDE
This video shows how to fade or dim LED lights using ESP32.
Timing in the video
- 00:52 Introduction and calculating resistor for LED
- 04:09 Wiring LED with ESP32
- 15:16 Preparing Arduino IDE to work with ESP32
- 06:38 ESP32 Code to fade LED
- 12:14 Demonstration of fading LED
- 12:25 Connecting 2 LEDs in paralled to the same pin of ESP32
- 13:28 Fading 2 LEDS at two pins of ESP32 independantly
- 15:23 Demonstration of fading 2 LEDs separately
Resources for this sketch
- ESP32 Github repository
- ESP32 Datasheet (pdf)
- Robojax Arduino Course on Udemy
- Get Early Access to my videos via Patreon
Fading 2 or more LEDs using ESP32
/*
* Original code taken from ESP32 provided driver code
* This is Arduino code to control 2 or more LEDs and fade them
* using PWM and LEDC library of ESP32
*
* watch the video for explanation of this video:https://youtu.be/VCM6KMMvBfE
* Written/updated by Ahmad Shamshiri for Robojax Video channel www.Robojax.com
* Date: Dec 17, 2017, in Ajax, Ontario, Canada
* Disclaimer: this code is "AS IS" and for educational purpose only.
* this code has been downloaded from http://robojax.com/learn/arduino/
* Get this code and other Arduino codes from Robojax.com
Learn Arduino step by step in structured course with all material, wiring diagram and library
all in once place. Purchase My course on Udemy.com http://robojax.com/L/?id=62
****************************
Get early access to my videos via Patreon and have your name mentioned at end of very
videos I publish on YouTube here: http://robojax.com/L/?id=63 (watch until end of this video to list of my Patrons)
****************************
or make donation using PayPal http://robojax.com/L/?id=64
* * This code is "AS IS" without warranty or liability. Free to be used as long as you keep this note intact.*
* This code has been download from Robojax.com
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
// use first channel of 16 channels (started from zero)
#define LEDC_CHANNEL_0 0
#define LEDC_CHANNEL_1 1
// use 13 bit precission for LEDC timer
#define LEDC_TIMER_13_BIT 13
// use 5000 Hz as a LEDC base frequency
#define LEDC_BASE_FREQ 5000
// fade LED PIN (replace with LED_BUILTIN constant for built-in LED)
#define LED_PIN0 17
#define LED_PIN1 16
int brightness0 = 0; // how bright the LED is
int brightness1 = 0; // how bright the LED is
int fadeAmount0 = 5; // how many points to fade the LED by
int fadeAmount1 = 10; // how many points to fade the LED by
// Arduino like analogWrite
// value has to be between 0 and valueMax
void ledcAnalogWrite(uint8_t channel, uint32_t value, uint32_t valueMax = 255) {
// calculate duty, 8191 from 2 ^ 13 - 1
uint32_t duty = (8191 / valueMax) * min(value, valueMax);
// write duty to LEDC
ledcWrite(channel, duty);
}
void setup() {
// Robojax.com ESP32 Fading LEDs 20191217
// Setup timer and attach timer to a led pin
ledcSetup(LEDC_CHANNEL_0, LEDC_BASE_FREQ, LEDC_TIMER_13_BIT);
ledcAttachPin(LED_PIN0, LEDC_CHANNEL_0);
ledcSetup(LEDC_CHANNEL_1, LEDC_BASE_FREQ, LEDC_TIMER_13_BIT);
ledcAttachPin(LED_PIN1, LEDC_CHANNEL_1);
}
void loop() {
// Robojax.com ESP32 Fading LEDs 20191217
// set the brightness on LEDC channel 0
ledcAnalogWrite(LEDC_CHANNEL_0, brightness0);
ledcAnalogWrite(LEDC_CHANNEL_1, brightness1);
// change the brightness for next time through the loop:
brightness0 = brightness0 + fadeAmount0;
brightness1 = brightness1 + fadeAmount1;
// brightness1 +=100;
// reverse the direction of the fading at the ends of the fade:
if (brightness0 <= 0 || brightness0 >= 255) {
fadeAmount0 = -fadeAmount0;
}
if (brightness1 <= 0 || brightness1 >= 255) {
fadeAmount1 = -fadeAmount1;
}
// wait for 30 milliseconds to see the dimming effect
delay(30);
// Robojax.com ESP32 Fading LEDs 20191217
}