代码拉取完成,页面将自动刷新
本文讲解了 Waffle Micro 中的 DAC 资源的使用
DAC 英文全称为 Digital Analog Converter,是将数字信号转换为模拟信号的转换器。 这里主要对比 DAC 与 PWM ,DAC 输出的是模拟信号,PWM 输出的是数字信号。 DAC 也可以控制 LED 亮度,而且亮度范围更精细,因为 DAC 的输出电压是连续可变的,DAC 控制 LED 也不存在 PWM 控制 LED 亮度那样的频闪问题,DAC 可以实现比 PWM 更高精度的控制。另外 PWM 可以通过滤波器实现低精度的 DAC 功能。
DAC 在专用引脚上可用,可用的 DAC 引脚只有一个:GPIO25,输出的电压模拟值范围为 0~3.3V 。
注意: 引脚需要自己加装
导入 DAC 类与 Pin 类
from machine import DAC,Pin
创建一个 DAC 的管脚 Pin 对象(声明为输出),然后传入到 DAC 的构造器里面。
dac_pin = Pin(25, Pin.OUT)
dac = DAC(dac_pin)
ESP32 的 DAC 分辨率只有 8
位,在 MicroPython 固件中 12
位的精度还未实现。
实际输出电压值为 0-3.3v
,数值范围映射到电压范围上。
DAC 输出使用 write
函数。 写入 value
值的范围是 0~255
。
dac.write(value)
dac.deinit()
由于 DAC 只支持 25
这个引脚,所以我们就无法使用板载 LED 了,所以笔者使用了一个外接的 led 模块来演示以下的示例:
import machine
from machine import DAC
from machine import Pin
import utime
dac = DAC(Pin(25,Pin.OUT))
#呼吸灯函数,通过i的变化控制Led的亮度变化
def loop(dac):#dac {[DAC]} -- [DAC对象]
i=1
while(1):
dac.write(i)
i+=1
if(i>254):
while(i>0):
i-=1
dac.write(i)
utime.sleep(0.005)
utime.sleep(0.005)
if(i==0):
break
# 呼吸十次
for i in range(10):
loop(dac)
dac.deinit()#释放DAC资源
效果图如下:
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。