【SAMR21新玩法】20. 模拟输入和模拟输出

Adafruit CircuitPython相关
MicroPython重要分支
回复
头像
shaoziyang
帖子: 3954
注册时间: 2019年 10月 21日 13:48

【SAMR21新玩法】20. 模拟输入和模拟输出

#1

帖子 shaoziyang »

在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
对于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
如果指定了不支持DAC的引脚,将提示错误:

ValueError: AnalogOut not supported on given pin


对比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

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

代码: 全选

adc.deinit()

回复

  • 随机主题
    回复总数
    阅读次数
    最新文章
  • 总算中彩票了
    最新文章 由 dexter « 2020年 9月 16日 09:20
    4回复总数
    1805 阅读次数
    最新文章 oyster
    2021年 4月 19日 22:25
  • pyboard
    最新文章 由 zl_cq « 2020年 9月 16日 11:33
    2回复总数
    1290 阅读次数
    最新文章 shaoziyang
    2020年 9月 16日 19:32
  • 2020年9月17日签到
    最新文章 由 gs001588 « 2020年 9月 17日 00:03
    3回复总数
    1578 阅读次数
    最新文章 dexter
    2020年 9月 17日 10:01