ESP32(5):PWM波输出,LED呼吸灯

一、ESP32Cam引脚示意图

二、ArduinoIDE程序编写

public.h

#ifndef _public_H
#define _public_H

#include "Arduino.h"

//类型重定义
typedef unsigned char u8;
typedef unsigned int u16;
typedef unsigned long u32;

#endif

led.c

#include "led.h"

//led初始化
void led_init(void)
{
  pinMode(led1_pin, OUTPUT);//设置引脚为输出模式
}

led.h

#ifndef _led_H
#define _led_H

#include "public.h"

//LED管脚定义
#define led1_pin  4

//函数声明
void led_init(void);

#endif

pwm.c

#include "pwm.h"

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

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

pwm.h

#ifndef _pwm_H
#define _pwm_H

#include "public.h"


//函数声明
void pwm_init(u8 pin,u8 chanel,u8 freq,u8 resolution);
void pwm_set_duty(u8 chanel,u16 duty);

#endif

main.c

#include "public.h"
#include "led.h"
#include "pwm.h"


//定义全局变量
u16 g_duty_value=0;
u8 g_fx=1;

void setup() {
  pwm_init(led1_pin,0,1000,10);
  
}

void loop() {
  if(g_fx==1)
  {
    g_duty_value+=10;
    if(g_duty_value>1010)g_fx=0;
  }
  else
  {
    g_duty_value-=10;
    if(g_duty_value<10)g_fx=1;
  }
  pwm_set_duty(0,g_duty_value);
  delay(10);
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值