Skip to content

PWM

PWM的LED呼吸灯

cpp
#include <Arduino.h>

#define LED_1 15

int status = 0;

int pwm_value = 0;
int flag = 1;

//PWM初始化
//pin:引脚号
//chanel:PWM输出通道0-15
//freq:PWM输出频率,单位HZ
//resolution:PWM占空比的分辨率1-16,比如设置8,分辨率范围0-255
void pwm_init(int pin, int chanel, int freq, int resolution) {
  ledcSetup(chanel, freq, resolution);// PWM初始化
  ledcAttachPin(pin, chanel); // 绑定PWM通道到GPIO上
}

//PWM占空比设置
void pwm_set_duty(int chanel, int duty){
  ledcWrite(chanel,duty);// 改变PWM的占空比
}


void setup() {
  Serial.begin(115200);
  pinMode(LED_1, OUTPUT); //设置引脚为输出模式

  digitalWrite(LED_1,0); //引脚输出低电平


  pwm_init(LED_1,0,1000,8);
}

void loop() {
  if(flag){
    pwm_value++;
    if(pwm_value > 50) {
      delay(800);
      flag = 0;
    }
  } else {
    pwm_value--;
    if(pwm_value < 0) {
      delay(800);
      flag = 1;
    }
  }
  pwm_set_duty(0, pwm_value);
  delay(10);
}

PWM的Beep蜂鸣器

md
 * 接线说明:按键模块-->ESP32 IO
 *         LED模块-->ESP32 IO
 *         (D1-D4)-->(15,2,0,4)
 *
 *         BEEP-->ESP32 IO
 *         (BEEP)-->(16)
cpp