[文章]Dopi HI3516EV200 Micropython应用篇 ADC采集

阅读量0
0
1
功能说明
开发板上使用ADC作为按键识别,按下不同按键会得到不同的按键值,通过判断按键值来判断哪个按键被按下了。
代码详细
import adc
while True:
    val = adc.get()
    IF val > 0 and val < 1000:#过滤掉启动和无按键被按下时的值,为了更精确可以增加判断次数来确定按键
        break
print("adc:",val)

按下开发板上面的按键可以得到键值,如图所示

开发板上的4个按键都有对应的数值,我们可以通过adc采集来获取到按键值,但是一直获取adc值会导致进程阻塞,那如果解决这个问题呢?
延伸
之前我们已经学会了控制LED,这次我们可以尝试通过按下不同按键来实现led的亮灭,但是按键值一直获取,程序无法继续运行,怎么办?这里我们引入线程,通过创建一个线程来定时获取adc值判断按键值,这样就能非阻塞获取到按键。
代码如下
import led
import adc
import time
import _thread as th
def adc_thread():
    while True:
        time.sleep_ms(100)          #线程每100毫秒检测一次按键是否被按下
        val = adc.get()
        if val > 0 and val < 1000:  #过滤掉启动和无按键被按下时的值
            led.on()                #有按键按下,我们让led亮
            print("val:",val)       #打印采集值
        else:
            led.off()
th.start_new_thread(adc_thread,())
while True:
    time.sleep_ms(1000)


运行代码 可以看到开发板上的LED灯会随着按键的按下显示亮灭,同时在终端上可以看到对应的按键值 如图所示



回帖

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
链接复制成功,分享给好友