一、课堂目标

  • 了解四脚轻触按键的原理
  • 掌握gpiozero.Button的使用

二、轻触按键和轻触开关的区别

  • 轻触开关是按一下接通电路,手松开后电路依然接通,再按一次电路断开;
  • 轻触按键是按下去接通电路,手松开电路就断开。

三、四脚轻触按键原理

先来看下两脚按键的电路图:两脚轻触按键的连通原理比较简单:按键按下,内部线路接通;按键松开,内部线路断开。

再来看下四脚轻触按键的电路图:

四脚轻触按键的连通原理复杂点:按键松开时,引脚1和引脚2是连通的,引脚3和引脚4是连通的,但是引脚1/2和引脚3/4是断开的;按键按下时,引脚1、2、3、4都连通了。

最后我们认识下四脚轻触按键实物:四脚按键背面有个凹槽,凹槽两边在按键按下前是断开的,按下按键凹槽两边的引脚才会接通。

注意:

  • 四脚按键插入面包时需要注意方向,下图中这种插法,无论按键是否按下,四个角都是连通的。

  • 旋转下,这么插发现一个区域放不下,很尴尬:

  • 正确插法:

四、接线图

五、gpiozero.Button的使用

5.1 判断按键是否按下

from gpiozero import Button

button = Button(2)

while True:
    if button.is_pressed:
        print("Button is pressed")
        break
    else:
        print("Button is not pressed")

程序解释:循环检测按钮是否按下,如果按钮按下,输出信息后终止循环。

5.2 等待按键按下或松开

from gpiozero import Button
button = Button(2)
button.wait_for_press()
print(button.is_pressed)
button.wait_for_release()
print(button.is_pressed)

程序解释:等待按钮是否按下,这时程序不会往下执行,直到有按钮按下,再执行下一行代码;等待按钮是否松开,松开后打印信息。

5.3 按键按下回调

from gpiozero import Button
from signal import pause

def say_hello():
    print("Hello!")

button = Button(2)
button.when_pressed = say_hello
pause()

程序解释:设置按钮的回调事件后,如果按钮按下,程序会执行回调函数:输出Hello信息。Python 脚本结束时会终止进程,GPIO 可能会被重置,使用signal.pause() 会使脚本继续运行。

5.4 按键松开时回调

from gpiozero import Button
from signal import pause

def say_hello():
    print("Hello!")

def say_goodbye():
    print("Goodbye!")

button = Button(2)

button.when_pressed = say_hello
button.when_released = say_goodbye

pause()

程序解释:按钮松开同样可以设置事件,下面程序当按钮按下后输出Hello,当按钮释放后输出Goodbye。


 原创不易,大家多多关注我下!

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐