DOPI开源技术社区
直播中

FeeLING

9年用户 33经验值
擅长:layout layout layout layout layout layout layout layout layout layout layout layout 控制/MCU layout layout layout layout layout
私信 关注
[经验]

Dopi HI3516EV200 Micropython应用篇之ADC采集

本帖最后由 镜面反射 于 2021-6-9 17:01 编辑

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

按下开发板上面的按键可以得到键值,如图所示 1623228730(1).jpg
开发板上的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灯会随着按键的按下显示亮灭,同时在终端上可以看到对应的按键值 如图所示
1623229118(1).jpg




更多回帖

发帖
×
20
完善资料,
赚取积分