这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » DIY与开源设计 » 电子DIY » Let'sdo-2025年第3期-DIY拾色播放器-过程帖3:按钮输入

共1条 1/1 1 跳转至

Let'sdo-2025年第3期-DIY拾色播放器-过程帖3:按钮输入

助工
2025-12-09 13:37:25     打赏

上一帖学习了  RGB三色灯的颜色控制以及LCD屏幕的点亮输出:

    https://forum.eepw.com.cn/thread/398105/1

今天抓紧来学习和测试下 CircuitPython 下按键输入的用法。

 

l  D2按键硬件上下拉

查看开发板的手册,用户按钮D1和D2,默认不按下时是LOW电平,按下时是HIGH电平。这么说,就可以确定它 默认为下拉模式了。手册如下图:


 image.png

   其实上上一贴中用GPIO作为输出控制红色LED闪烁,已经使用过控制GPIO的库 digitalio 库,按钮无非是更改输出方向为input,并读取针脚的value() 值来判断按钮状态。

 

l  按键消抖 Debounce

对于按钮来说,其他特别要注意的,就是要处理好按钮消抖!如下图:

image.png


常规的方法,无非就是加上消抖延迟,如果20ms以后按钮状态扔保持稳定,才认为是真正的被按下,否则认为是仍处于抖动过程中。在其他单片机编程中,一般也都是这么处理的。

虽说是用的 CircuitPython 写代码,但是原理一样,加上消抖延迟,滤波后基本也不会有什么问题。

 

l   使用 CircuitPython Debounce 库

但是, 既然使用了 CircuitPython,adafruit给我们提供了非常好用的消抖库 Debouncer,用起来也很简单,程序代码也更清晰! Debouncer 库文档:

https://docs.circuitpython.org/projects/debouncer/en/stable/

文档写的很清楚,依赖 debouncer库ticks库,都是非内置库,需要把对应两个mpy文件拷贝到lib文件夹下即可。

image.png


基本用法上面文档里有例子,就是构建 Bouncer对象,在每个循环中周期性 update() 引脚状态,两个边缘检测函数 fell() 和 rose() 分别检测电平的下降沿和上升沿,value()函数返回消抖后的电平高低状态。

l  D2按钮输入测试

下面来试一试,把文档中的例子稍微改改,代码如下:

import board
import digitalio
import time
from adafruit_debouncer import Debouncer

# Configure the digital input pin
pin = digitalio.DigitalInOut(board.D2)
pin.direction = digitalio.Direction.INPUT
pin.pull = digitalio.Pull.DOWN  #下拉,默认低电平

# Initialize the debouncer with the pin
switch = Debouncer(pin)
while True:
   # Update the debouncer state
   switch.update()
   # Check for state changes
   if switch.fell:  #电平由1-->0
       print("Just released")
   if switch.rose:  #电平由0-->1
       print("Just pressed")
   # Check the current state
   if switch.value: #高电平1
       print("Pressed")
   else:  #低电平0
       #print("Not pressed")
       pass
       
   time.sleep(0.01)

保存后运行,不显示任何输出。当按下D2按钮,会先输出一行 Just Pressed, 然后打印当前电平值 pressed 多次,松开手的刹那,打印出 Just Released。多次测试,均准确无误,说明消抖的效果非常好!

上动图:

按键防抖效果.gif


-------------------------------------------------------------------------------

接下来,就要研究下 蜂鸣器 播放音符 ♪ 啰~

          2025-12-9  13:45 





关键词: 拾色 按钮 消抖    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]