4 Star 0 Fork 0

黑胡桃实验室 BlackWalnut Labs. / Waffle MicroV1 Python API Doc

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
DAC.md 2.66 KB
一键复制 编辑 原始数据 按行查看 历史
小潘 提交于 2021-11-23 09:45 . feat:首次添加

DAC 数模转换器

概要

  本文讲解了 Waffle Micro 中的 DAC 资源的使用

DAC与PWM的对比

  DAC 英文全称为 Digital Analog Converter,是将数字信号转换为模拟信号的转换器。 这里主要对比 DAC 与 PWM ,DAC 输出的是模拟信号,PWM 输出的是数字信号。 DAC 也可以控制 LED 亮度,而且亮度范围更精细,因为 DAC 的输出电压是连续可变的,DAC 控制 LED 也不存在 PWM 控制 LED 亮度那样的频闪问题,DAC 可以实现比 PWM 更高精度的控制。另外 PWM 可以通过滤波器实现低精度的 DAC 功能。

DAC-常用API

DAC硬件资源

  DAC 在专用引脚上可用,可用的 DAC 引脚只有一个:GPIO25,输出的电压模拟值范围为 0~3.3V 。

WPS图片标注

注意: 引脚需要自己加装

导入DAC类

  导入 DAC 类与 Pin 类

from machine import DAC,Pin

DAC构造器

  创建一个 DAC 的管脚 Pin 对象(声明为输出),然后传入到 DAC 的构造器里面。

dac_pin = Pin(25, Pin.OUT)
dac = DAC(dac_pin)

  ESP32 的 DAC 分辨率只有 8 位,在 MicroPython 固件中 12 位的精度还未实现。

  实际输出电压值为 0-3.3v,数值范围映射到电压范围上。

DAC输出

  DAC 输出使用 write 函数。 写入 value 值的范围是 0~255

dac.write(value)

DAC资源的释放

dac.deinit()

DAC实现呼吸灯效果

  由于 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资源

效果图如下:

1608117306578

Python
1
https://gitee.com/blackwalnutlabs/waffle-micro-v1-python-api-doc.git
git@gitee.com:blackwalnutlabs/waffle-micro-v1-python-api-doc.git
blackwalnutlabs
waffle-micro-v1-python-api-doc
Waffle MicroV1 Python API Doc
master

搜索帮助