本项止转自github官方arduino-esp32 传在这里仅为阅读源码方便
projectuser
2019-07-05 50148ccffe21ff54262064ec9f2245900eaf18aa
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
/*
 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);
}