mirror of
				https://github.com/0xFEEDC0DE64/arduino-esp32.git
				synced 2025-11-03 23:51:39 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			58 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			58 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
/*
 | 
						|
 LEDC Software Fade
 | 
						|
 | 
						|
 This example shows how to software fade LED
 | 
						|
 using the ledcWrite function.
 | 
						|
 | 
						|
 Code adapted from original Arduino Fade example:
 | 
						|
 https://www.arduino.cc/en/Tutorial/Fade
 | 
						|
 | 
						|
 This example code is in the public domain.
 | 
						|
 */
 | 
						|
 | 
						|
// use first channel of 16 channels (started from zero)
 | 
						|
#define LEDC_CHANNEL_0     0
 | 
						|
 | 
						|
// 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_PIN            5
 | 
						|
 | 
						|
int brightness = 0;    // how bright the LED is
 | 
						|
int fadeAmount = 5;    // 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() {
 | 
						|
  // Setup timer and attach timer to a led pin
 | 
						|
  ledcSetup(LEDC_CHANNEL_0, LEDC_BASE_FREQ, LEDC_TIMER_13_BIT);
 | 
						|
  ledcAttachPin(LED_PIN, LEDC_CHANNEL_0);
 | 
						|
}
 | 
						|
 | 
						|
void loop() {
 | 
						|
  // set the brightness on LEDC channel 0
 | 
						|
  ledcAnalogWrite(LEDC_CHANNEL_0, brightness);
 | 
						|
 | 
						|
  // change the brightness for next time through the loop:
 | 
						|
  brightness = brightness + fadeAmount;
 | 
						|
 | 
						|
  // reverse the direction of the fading at the ends of the fade:
 | 
						|
  if (brightness <= 0 || brightness >= 255) {
 | 
						|
    fadeAmount = -fadeAmount;
 | 
						|
  }
 | 
						|
  // wait for 30 milliseconds to see the dimming effect
 | 
						|
  delay(30);
 | 
						|
}
 |