简介

开发板上使用ADC作为按键识别,按下不同按键会得到不同的按键值,通过判断按键值来判断哪个按键被按下了。

示例

import adc
while True:
    val = adc.get()
    if val > 0 and val < 1000:#过滤掉启动和无按键被按下时的值,为了更精确可以增加判断次数来确定按键
        break
print("adc:",val)

通过调用adc模块,我们可以很简单就使用到ADC这个功能,无需关注底层是如何实现的,开发板上的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)
文档更新时间: 2020-12-09 09:45   作者:Tony