一、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);
}