4、ESP32 PWM(模拟输出)

1、PWM

        常规:analogWrite(pin, dutyCycle);        引脚输出指定占空比 PWM

                pin 代表引脚

                dutyCycle 的值在0~255之间,0为占空比0%,255为占空比100%

        (遇到过在一些 IO 上突然不好用的情况,可能与某些库冲突?)

#include <Arduino.h>

#define led 2


void setup()
{
    pinMode(led, OUTPUT);
}

void loop()
{
    analogWrite(led, 100);    // 输出 PWM,占空比 100/255
}

        数字 IO 轮转法:高低电平和延时实现,模拟PWM

                优点:所有 Pin 都可以输出

                缺点:CPU 不能干其他事情

#include <Arduino.h>

#define led 2


void setup()
{
    pinMode(led, OUTPUT);
}

void loop()
{
    digitalWrite(led, HIGH);
    delayMicroseconds(100);         // 输出PWM,占空比为100/1000 = 10%
    digitalWrite(led, LOW);
    delayMicrosecon
### ESP32 PWM 输出函数使用方法 对于ESP32,在不同的开发环境中,PWM输出的实现方式有所不同。 #### MicroPython 开发环境下的PWM输出 在MicroPython环境下,可以利用`machine.PWM()`类创建并配置PWM对象。下面是一个简单的例子用于展示如何操作一个LED灯使其亮度渐变[^1]: ```python from machine import Pin, PWM import time # 创建PWM实例,并绑定到指定GPIO引脚上 pwm = PWM(Pin(25)) # 设置PWM频率 pwm.freq(1000) # 初始占空比设为0% pwm.duty_u16(0) while True: # LED由暗至亮再由亮转暗的过程模拟呼吸效果 for duty_cycle in range(0, 65535, 512): pwm.duty_u16(duty_cycle) time.sleep(0.01) for duty_cycle in range(65535, -1, -512): pwm.duty_u16(duty_cycle) time.sleep(0.01) ``` 这段代码展示了如何通过改变PWM信号的占空比来调整连接于特定GPIO端口上的LED灯的亮度变化过程[^3]。 #### Arduino IDE 下的PWM输出 而在Arduino集成开发环境中,则主要依赖于LEDC库来进行更复杂的PWM控制而非传统的`analogWrite()`函数。这里给出一段基础示例说明怎样设置PWM参数以及应用它们去影响外接设备的工作状态[^2]: ```cpp #include <esp_wifi.h> #define LEDC_CHANNEL_0 0 #define LEDC_TIMER_BIT_WIDTH 8 // Timer resolution of 8 bits #define LEDC_BASE_FREQ 5000 // Frequency in Hertz (Hz). void setup() { ledcSetup(LEDC_CHANNEL_0, LEDC_BASE_FREQ, LEDC_TIMER_BIT_WIDTH); ledcAttachPin(LED_BUILTIN, LEDC_CHANNEL_0); // Attach the channel to the GPIO pin. } void loop() { int brightness; for(brightness=0; brightness<=255; brightness++) { ledcWrite(LEDC_CHANNEL_0,brightness); delay(15); } for(brightness=255; brightness>=0; brightness--) { ledcWrite(LEDC_CHANNEL_0,brightness); delay(15); } } ``` 此段程序同样实现了让内置LED呈现缓慢闪烁的效果,但是采用了不同于MicroPython的方式完成相同目的的任务。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无敌暴龙战士朵拉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值