码迷,mamicode.com
首页 > 其他好文 > 详细

2、基本方法(Basic Recipes)

时间:2018-07-28 21:54:36      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:2.3   现在   led灯   check   col   技术分享   基本   img   table   

官网地址:http://gpiozero.readthedocs.io/en/stable/recipes.html

环境:UbuntuMeta-16.04

树莓派:3代B型

2、基本方法(Basic Recipes)

下面演示了GPIO Zero库的一些功能,注意的是这些方法都是在python3下编写的,在python2下可能有用也可能没有用!

2.1 导入GPIO Zero

使用GPIO Zero库有两种方式

2.1.1 单独导入GPIO Zero库的某个类

导入 GPIO Zero 的 Button :

from gpiozero import Button

现在 Button 就可以直接在脚本中使用:

button = Button(2) #2为Button的引脚

2.1.2 完整导入GPIO Zero库

或者,导入整个GPIO Zero库:

import gpiozero

在这种情况下,GPIO Zero中对项目的所有引用都必须加上前缀(gpiozero):

button = gpiozero.Button(2)    #2为Button的引脚

2.2. Pin 编号

该库使用Broadcom(BCM)引脚编号作为GPIO引脚,而不是物理(BOARD)编号。 与RPi.GPIO库不同,这是不可配置的。

技术分享图片

2.3 开关一个LED

技术分享图片

 

不断的打开和关闭LED灯

from gpiozero import LED
from time import sleep

red = LED(17)  #led的正极接GPIO17

while True:
    red.on()   #开灯
    sleep(1)
    red.off()  #关灯
    sleep(1)

 

或者也可以两一种写法:

from gpiozero import LED
from signal import pause

red = LED(17)   #led的正极接GPIO17
red.blink() #闪烁

pause()

 

2.4 改变LED的亮度

任何常规LED都可以使用PWM(脉冲宽度调制)设置其亮度值。 在GPIO Zero中,可以使用PWMLED来实现,PWMLED的值从0到1:

from gpiozero import PWMLED
from time import sleep

led = PWMLED(17)

while True:
    led.value = 0  # 灭
    sleep(1)
    led.value = 0.5  # 半亮
    sleep(1)
    led.value = 1  # 全亮
    sleep(1)

类似于连续闪烁,PWMLED可以脉冲(连续淡入和淡出),以下实现呼吸灯的效果:

from gpiozero import PWMLED
from signal import pause

led = PWMLED(17)

led.pulse()  #呼吸灯的效果

pause()

 

 

2.5 加入一个按钮

按钮的连接如下图

技术分享图片

 

检查是否按下了按钮:

from gpiozero import Button

button = Button(2)

while True:
    if button.is_pressed:
        print("按钮已经按下")
    else:
        print("按钮没有被按下")

 

 一直等待按钮被按下:

from gpiozero import Button

button = Button(2)

button.wait_for_press()  #等待按钮被按下
print(
"按钮已经按下")

 

 每次按下按钮的时候运行一个方法:

from gpiozero import Button
from signal import pause

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

button = Button(2)

button.when_pressed = say_hello #当被按下时执行 say_hello 方法,注意不能写为say_hello()
pause()

 

同样的,按钮被释放时也可以执行一个方法: 

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   #当被按下时执行 say_hello 方法
button.when_released = say_goodbye #当被释放时执行 say_goodbye 方法

pause()

 

2.6 使用一个按钮控制led灯

技术分享图片

按下按钮时打开LED:

from gpiozero import LED, Button
from signal import pause

led = LED(17)    #定义一个led灯
button = Button(2)   #定义一个button

button.when_pressed = led.on   #开灯
button.when_released = led.off    #关灯

pause()

 

或者:

from gpiozero import LED, Button
from signal import pause

led = LED(17)   #定义一个led灯
button = Button(2)  #定义一个button
led.source = button.values 

pause()

 

 

2.7 按钮控制摄像头

当按下按钮时触发 PiCamera 拍照,使用 when_pressed = camera.capture 的写法是无效,因为capture()方法需要输出参数。

但是,这可以使用不需要参数的自定义函数来实现:

from gpiozero import Button
from picamera import PiCamera
from datetime import datetime
from signal import pause

button = Button(2)
camera = PiCamera()

def capture():
    datetime = datetime.now().isoformat()
    camera.capture(/home/pi/%s.jpg % datetime)  #保存图片

button.when_pressed = capture

pause()

 

 另外可以使用一个按钮来启动和停止相机预览,另一个按钮用来拍照:

from gpiozero import Button
from picamera import PiCamera
from datetime import datetime
from signal import pause

left_button = Button(2)
right_button = Button(3)
camera = PiCamera()

def capture():
    datetime = datetime.now().isoformat()
    camera.capture(/home/pi/%s.jpg % datetime)

left_button.when_pressed = camera.start_preview
left_button.when_released = camera.stop_preview
right_button.when_pressed = capture

pause()

 

 

2.8 实现按钮关机

Button类还提供了在按钮按住一段给定时间后运行函数的功能。

下面的示例是,当按钮按住2秒时,将关闭树莓派:

from gpiozero import Button
from subprocess import check_call
from signal import pause

def shutdown():
    check_call([sudo, poweroff])   #运行shell

shutdown_btn = Button(17, hold_time=2)    #定义按钮,以及持续时间
shutdown_btn.when_held = shutdown    

pause()

 

持续更新中...

2、基本方法(Basic Recipes)

标签:2.3   现在   led灯   check   col   技术分享   基本   img   table   

原文地址:https://www.cnblogs.com/little-kwy/p/9382767.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!