6.1.3. 模拟IO

OpenMV Cam具有一个模拟I/O引脚(P6),可用作ADC输入或DAC输出。以下是如何使用它来读取0V至3.3V之间的电压值:

import pyb

adc = pyb.ADC(pyb.Pin('P6'))

while(True):
    pyb.delay(10) # wait 10 ms
    print("%f volts" % (((adc.read() * 3.3) + 2047.5) / 4095)) # read value, 0-4095

ADC具有12位的分辨率,因此它将输出0到4095之间的值,用于0至3.3伏特。最后,请注意,当引脚处于ADC模式时,它不再具有5V容忍性。

接下来,要生成模拟输出电压,您可以将I/O引脚放入DAC模式:

import pyb, math

dac = pyb.DAC(pyb.Pin('P6'))

counter = 0

while(True):
    pyb.delay(10) # wait 10 ms
    dac.write(int(math.sin(math.radians(counter % 360)) * 255))
    counter += 1

以上代码在I/O引脚上生成一个正弦波,该正弦波将在0至255之间变化,对应于0至3.3伏特。同样,请注意,当引脚处于DAC模式时,它不再具有5V容忍性。