ADC 的使用
更新时间 | 负责人 | 内容 | 备注 |
---|---|---|---|
2022年1月4日 | Rui | 初次编写文档 | --- |
2022年1月8日 | Rui | 修改文档的编写方式 | 使用 Jupyter notebook 进行编写文档 |
2022年1月18日 | Rui | 修改文档,增加效果图 | 外设文档通过测试的平台有 MaixII-Dock,使用的是 MaixPy3 0.4.0 |
2022年1月19日 | dalaoshu | 修订具体描述 | 由于 ADC 相对 SOC Linux 来说是一个特殊的功能,在 MaixPy3 的设计里不通用。 |
ADC 通讯协议,目前只是针对 MaixII-Dock 进行开发的,其他芯片或平台需要仔细阅读数据手册来确认是否支持。
使用方法
准备
查看对应开发板上的管脚定义图或者是文件,如 MaixII-Dock 管脚定义图所示,将 ADC 设备接入到 GPADC0 的管脚上
代码
根据数据手册可知 V831 数据地址 0x05070080 处有一个 12bit (0-4095)的 adc 引脚,但该引脚默认被当做 adc-key 使用,使得一个引脚可以支持多个按键事件。
定义 MaixII-Dock ADC 模块
In [1]:
class v83x_ADC():
def __init__(self, addr=b"0x05070080") -> None:
self.addr = addr
self.path = "/sys/class/sunxi_dump/dump"
self.file = open(self.path, "wb+")
self.last = self.value()
def __del__(self):
try:
if self.file:
self.file.close()
del self.file
except Exception as e:
pass
def value(self):
self.file.write(b"0x05070080")
self.file.seek(0)
return int(self.file.read()[:-1], 16)
v83x_ADC = v83x_ADC()
[dls][ rpyc-kernel ]( running at Wed Jul 13 19:03:06 2022 )
使用 ADC 进行是设备通讯
In [1]:
import time
from maix import display, image
v831_adc0 = v83x_ADC
while True:
time.sleep(0.1)
tmp = image.Image().new((240, 240), (0x2c, 0x3e, 0x50), "RGB")
val = v831_adc0.value()
# print(val)
img = image.Image().open('/home/res/logo.png')
tmp.draw_image(img, 50, 40, alpha=1).draw_string(20, 200, "adc0 : " + str(val), 1, (0xbd, 0xc3, 0xc7))
display.show(tmp)
Out[1]:
Traceback (most recent call last): File "<string>", line unknown, in <module> Remote.KeyboardInterrupt