功能说明
开发板上使用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灯会随着按键的按下显示亮灭,同时在终端上可以看到对应的按键值 如图所示