使用按钮开灯关灯
接线图非常简单,LED接 GPIO17 号口,按钮接 GPIO2 号口,负极接GND地线。
代码也非常简单:
from gpiozero import LED, Buttonfrom signal import pauseled = LED(17)button= Button(2)button.when_pressed= led.onbutton.when_released= led.offpause()
执行代码,按下按钮,发光二极管就会亮,松开就会灭。
使用按钮开灯关灯(二)
还有一种 source 的写法,直接把按钮的状态提供给发光二极管,达到同样的效果。
from gpiozero import LED, Buttonfrom signal import pauseled = LED(17)button= Button(2)led.source=buttonpause()
按钮按下和松开
先上效果
GPIO2fromgpiozero import Buttonbutton = Button(2)whileTrue:ifbutton.is_pressed:print("Button is pressed")else:print("Button is not pressed")
等待按钮按下才执行
直接上代码吧:
from gpiozero import Buttonbutton= Button(2)button.wait_for_press()print("Button was pressed")
程序执行到 button.wait_for_press() 这一句之后,会先停下,等待按钮按下之后,才会继续执行。
按下执行特定函数
直接上代码:
fromgpiozeroimportButtonfromsignalimportpausedefsay_hello():print("Hello!")button = Button(2)button.when_pressed = say_hellopause()
按下按钮,执行 say_hello() 这个函数。
松开执行特定函数
上效果图:
上代码:
fromgpiozeroimportButtonfromsignalimportpausedefsay_hello():print("Hello!")defsay_goodbye():print("Goodbye!")button = Button(2)button.when_pressed = say_hellobutton.when_released = say_goodbyepause()
按下会执行 say_hello() 函数,松开会执行 say_goodbye() 函数。
长按4秒关机
上代码:
fromgpiozeroimportButtonfromsubprocessimportcheck_callfromsignalimportpausedefshutdown():check_call(['sudo','poweroff'])shutdown_btn = Button(2, hold_time=4)shutdown_btn.when_held = shutdownpause()
增加了一个 hold_time=4 长按4秒才触发的初始化,触发之后执行 shutdown() 函数关机。
小游戏:谁的反应快?
接线图:两个按钮分别连接 GPIO2、3 号口,LED连接 GPIO 17 号口。
上代码:
fromgpiozeroimportButton, LEDfromtimeimportsleepimportrandomled = LED(17)player_1 = Button(2)player_2 = Button(3)time = random.uniform(2,5)sleep(time)led.on()whileTrue:ifplayer_1.is_pressed:print("Player 1 wins!")breakifplayer_2.is_pressed:print("Player 2 wins!")breakled.off()
程序开始执行后,在(2,5)秒随机点亮LED灯,谁抢险按下按钮,就会显示谁赢了。
最后小编自己也是一个有着6年工作经验的工程师,关于python编程,自己有做材料的整合,一个完整的python编程学习路线,学习资料和工具。想要这些资料的可以关注小编,加入python学习交流Q群735967233。
网友评论