这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【换取手持数字示波器】+ESP32C6与PWM(脉冲宽度调制)

共2条 1/1 1 跳转至

【换取手持数字示波器】+ESP32C6与PWM(脉冲宽度调制)

工程师
2024-04-07 16:37:40   被打赏 30 分(兑奖)     打赏

开发平台:Arduino

开发板:Beetle ESP32 C6

功能:PWM使用


Beetle ESP32 C6与PWM(脉冲宽度调制)的结合使用,可以实现对连接到开发板的设备的精确控制,比如LED灯的亮度调节。PWM通过改变脉冲信号的占空比来控制输出,从而实现对电压、电流等参数的精确调节。

在Beetle ESP32 C6上使用PWM,你可以编写代码来设置特定GPIO口为PWM输出模式,并设定PWM的频率和占空比。这样,连接到这些GPIO口的设备(如LED灯)就可以根据设定的PWM参数进行工作。

照片:

PWM控制器设置

定时器配置

通过调用函数并传递包含以下配置设置的数据结构来设置计时器:

速度模式

计时器编号

PWM信号频率

PWM占空比的解决

代码:


// 使用12位精度为LEDC定时器

#define LEDC_TIMER_12_BIT 12


// 使用5000 Hz作为LEDC的基础频率

#define LEDC_BASE_FREQ 5000


// 渐变LED的引脚(对于内置LED,可以替换为LED_BUILTIN常量)

#define LED_PIN 15


int brightness = 0; // LED的亮度

int fadeAmount = 5; // 每次循环LED亮度变化的数量


// 类似于Arduino的analogWrite函数

// value的值必须在0和valueMax之间

void ledcAnalogWrite(uint8_t pin, uint32_t value, uint32_t valueMax = 255) {

// 计算占空比,4095来自于2的12次方减1

uint32_t duty = (4095 / valueMax) * min(value, valueMax);


// 将占空比写入LEDC

ledcWrite(pin, duty);

}


void setup() {

// 设置定时器并将定时器附加到LED引脚

ledcAttach(LED_PIN, LEDC_BASE_FREQ, LEDC_TIMER_12_BIT);

}


void loop() {

// 设置LEDC通道0的亮度

ledcAnalogWrite(LED_PIN, brightness);


// 为下一次循环更改亮度:

brightness = brightness + fadeAmount;


// 在渐变结束时反转渐变的方向:

if (brightness <= 0 || brightness >= 255) {

fadeAmount = -fadeAmount;

}

// 等待30毫秒以查看渐变效果

delay(30);

}





关键词: DFRobot     盖革    

专家
2024-04-15 08:59:11     打赏
2楼

谢谢分享


共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]