2372|3

1万

帖子

25

TA的资源

版主

楼主
 

【SAMR21新玩法】20. 模拟输入和模拟输出 [复制链接]

 

在circuitpython中,支持模拟输入和模拟输出功能,也就是ADC和DAC。但是它的用法和MicroPython有一些差异,不能用micropython的方法。

 

模拟输入:

import analogio
from board import *

adc = analogio.AnalogIn(A1)
val = adc.value

首先设定adc使用的引脚,然后通过value读取模拟输入的数值。注意这里是当作整数读取的,而不是函数,所以后面没有括号。

 

引脚除了使用预定义的A0/A1这样的方式,也可以直接指定端口,如:

import analogio
from microcontroller import pin

adc=analogio.AnalogIn(pin.PA04)
adc.value





此内容由EEWORLD论坛网友dcexpert原创,如需转载或用于商业用途需征得作者同意并注明出处
 

点赞 关注
 
 

回复
举报

1万

帖子

25

TA的资源

版主

沙发
 

对于SAMR21,没有DAC功能,因此不支持模拟输出。而对于SAMD21,DAC输出是PA02;SAMD51是PA02/PA05(DAC引脚与具体的MCU相关)。

 

import analogio
from microcontroller import pin

dac = analogio.AnalogOut(pin.PA02)          # output on pin PA02
dac.value = 32768                           # makes PA02 1.65V

 

如果指定了不支持DAC的引脚,将提示错误:

ValueError: AnalogOut not supported on given pin
 

 
 
 

回复

1万

帖子

25

TA的资源

版主

板凳
 

对比MicroPython上的用法:

 

from pyb import Pin, ADC

adc = ADC(Pin('X19'))
adc.read() # read value, 0-4095



from pyb import Pin, DAC

dac = DAC(Pin('X5'))
dac.write(120) # output between 0 and 255

 

这里可以看出CircuitPython和MicroPython在细节上有了明显的差异。

 
 
 

回复

1万

帖子

25

TA的资源

版主

4
 

比MicroPython强的地方是增加了deinit()函数,可以在使用后释放对象。

 

adc.deinit()

 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表