30个Python物联网小实验3:使用按钮开灯关灯

栏目: Python · 发布时间: 6年前

30个 <a href='https://www.codercto.com/topics/20097.html'>Python</a> 物联网小实验3:使用按钮开灯关灯

使用按钮开灯关灯

  • 接线图非常简单,LED接 GPIO17 号口,按钮接 GPIO2 号口,负极接GND地线。

30个Python物联网小实验3:使用按钮开灯关灯

  • 代码也非常简单:
from gpiozero import LED, Button
from signal import pause

led = LED(17)
button = Button(2)

button.when_pressed = led.on
button.when_released = led.off

pause()
  • 执行代码,按下按钮,发光二极管就会亮,松开就会灭。

使用按钮开灯关灯(二)

  • 还有一种 source 的写法,直接把按钮的状态提供给发光二极管,达到同样的效果。
from gpiozero import LED, Button
from signal import pause

led = LED(17)
button = Button(2)

led.source = button

pause()

按钮按下和松开

  • 先上效果

30个Python物联网小实验3:使用按钮开灯关灯

GPIO2
from gpiozero import Button

button = Button(2)

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

等待按钮按下才执行

  • 直接上代码吧:
from gpiozero import Button

button = Button(2)

button.wait_for_press()
print("Button was pressed")
  • 程序执行到 button.wait_for_press() 这一句之后,会先停下,等待按钮按下之后,才会继续执行。

按下执行特定函数

  • 直接上代码:
from gpiozero import Button
from signal import pause

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

button = Button(2)

button.when_pressed = say_hello

pause()
  • 按下按钮,执行 say_hello() 这个函数。

松开执行特定函数

  • 上效果图:

30个Python物联网小实验3:使用按钮开灯关灯

  • 上代码:
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()
  • 按下会执行 say_hello() 函数,松开会执行 say_goodbye() 函数。

长按4秒关机

  • 上代码:
from gpiozero import Button
from subprocess import check_call
from signal import pause

def shutdown():
    check_call(['sudo', 'poweroff'])

shutdown_btn = Button(2, hold_time=4)
shutdown_btn.when_held = shutdown

pause()
  • 增加了一个 hold_time=4 长按4秒才触发的初始化,触发之后执行 shutdown() 函数关机。

小游戏:谁的反应快?

  • 接线图:两个按钮分别连接 GPIO2、3 号口,LED连接 GPIO 17 号口。

30个Python物联网小实验3:使用按钮开灯关灯

  • 上代码:
from gpiozero import Button, LED
from time import sleep
import random

led = LED(17)

player_1 = Button(2)
player_2 = Button(3)

time = random.uniform(2, 5)
sleep(time)
led.on()

while True:
    if player_1.is_pressed:
        print("Player 1 wins!")
        break
    if player_2.is_pressed:
        print("Player 2 wins!")
        break

led.off()
  • 程序开始执行后,在(2,5)秒随机点亮LED灯,谁抢险按下按钮,就会显示谁赢了。

好了,本次介绍就到这里,这个系列的全文会收录在我的github目录,欢迎大家star和沟通: https://github.com/asukafighting/RaspberryPiHacker


以上所述就是小编给大家介绍的《30个Python物联网小实验3:使用按钮开灯关灯》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

C语言点滴

C语言点滴

赵岩 / 人民邮电出版社 / 2013-10-1 / 45.00元

C语言兼具高级语言和汇编语言的特点,学习起来难度较大,令不少初学者望而生畏。同时,C语言又是一门应用非常广泛的编程语言,在实际应用中如何根据不同的应用场景高效地使用C语言,也是大家非常感兴趣的话题。  《C语言点滴》精心选取C语言一些必备知识,这也是初学者容易搞不清楚、犯错误的知识点,进行深入地分析和介绍,以期帮助读者清除C语言学习之路上的“绊脚石”,降低初学入门的难度,培养继续深入的兴趣。  全......一起来看看 《C语言点滴》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具