Physical computing with GPIO Zero
Ben Nuttall
Raspberry Pi Foundation
UK Charity 1129409
Slide 2
Slide 2 text
Ben Nuttall
●
Education Developer Advocate
at the Raspberry Pi Foundation
– Software & project development
– Learning resources & teacher
training
– Outreach
●
Hobbyist turned employee
●
Based in Cambridge (but from
the North)
●
@ben_nuttall on Twitter
Slide 3
Slide 3 text
Python – RPi.GPIO
import RPi.GPIO as GPIO
from time import sleep
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
led = 17
GPIO.setup(led, GPIO.OUT)
while True:
GPIO.output(led, True)
sleep(1)
GPIO.output(led, False)
sleep(1)
Slide 4
Slide 4 text
Python – GPIO Zero
from gpiozero import LED
from time import sleep
led = LED(17)
while True:
led.on()
sleep(1)
led.off()
sleep(1)
Slide 5
Slide 5 text
LED
from gpiozero import LED
from time import sleep
led = LED(17)
led.on() # on
led.off() # off
led.toggle() # on>off or off>on
led.blink() # flash on/off continuously
Slide 6
Slide 6 text
LED + Button
from gpiozero import LED, Button
led = LED(17)
button = Button(3)
button.when_pressed = led.on
button.when_released = led.off
Slide 7
Slide 7 text
Source + Values
from gpiozero import LED, Button
led = LED(17)
button = Button(3)
led.source = button.values
Slide 8
Slide 8 text
LED - PWM
from gpiozero import PWMLED
from time import sleep
led = PWMLED(17)
led.on() # on
led.off() # off
led.value = 0.5 # half brightness
Slide 9
Slide 9 text
Motion sensor
from gpiozero import LED, MotionSensor
led = LED(2)
sensor = MotionSensor(3)
sensor.when_motion = led.on
sensor.when_no_motion = led.off
Slide 10
Slide 10 text
Light sensor
from gpiozero import LED, LightSensor
led = LED(2)
sensor = LightSensor(3)
while True:
sensor.wait_for_light()
print("It's light!")
sensor.wait_for_dark()
print("It's dark")
Slide 11
Slide 11 text
Traffic Lights
from gpiozero import TrafficLights
lights = TrafficLights(9, 10, 11)
lights.on() # all on
lights.off() # all off
lights.red.on() # red on
lights.toggle() # swap state of all lights
Push button stop motion
from gpiozero import Button
from picamera import PiCamera
button = Button(4)
with PiCamera() as camera:
camera.start_preview()
frame = 1
while True:
button.wait_for_press()
camera.capture('/home/pi/frame%03d.jpg' % frame)
frame += 1
Slide 16
Slide 16 text
Full colour LED
from gpiozero import RGBLED
led = RGBLED(2, 3, 4)
led.red.on() # full red
led.color = (1, 0, 1) # purple
led.blue = 0.3 # dim the blue value to 0.3
# now (1, 0, 0.3)
Slide 17
Slide 17 text
Motor
from gpiozero import Motor
from time import sleep
motor = Motor(forward=17, backward=18)
while True:
motor.forward()
sleep(5)
motor.backward()
sleep(5)
Slide 18
Slide 18 text
Robot
from gpiozero import Robot
from time import sleep
robot = Robot(left=(17, 18), right=(22, 23))
while True:
robot.forward()
sleep(10)
robot.left()
sleep(1)