Slide 1

Slide 1 text

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 ● @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

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 8

Slide 8 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

Slide 9

Slide 9 text

Traffic Lights sequence lights.green.on() lights.amber.off() lights.red.off() while True: sleep(10) lights.green.off() lights.amber.on() sleep(1) lights.amber.off() lights.red.on() sleep(10) lights.amber.on() sleep(1) lights.green.on() lights.amber.off() lights.red.off()

Slide 10

Slide 10 text

Full colour LED from gpiozero import RGBLED led = RGBLED(2, 3, 4) led.red.on() # full red led.color = (255, 0, 255) # purple led.blue = 100 # dim the blue value to 100 # now (255, 0, 100)

Slide 11

Slide 11 text

Motor from gpiozero import Motor from time import sleep motor = Motor(forward=17, back=18) while True: motor.forward() sleep(5) motor.backward() sleep(5)

Slide 12

Slide 12 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)

Slide 13

Slide 13 text

Button controlled Robot from gpiozero import RyanteckRobot, Button robot = RyanteckRobot() left = Button(26) right = Button(16) fw = Button(21) bw = Button(20) fw.when_pressed = robot.forward fw.when_released = robot.stop left.when_pressed = robot.left left.when_released = robot.stop right.when_pressed = robot.right right.when_released = robot.stop bw.when_pressed = robot.backward bw.when_released = robot.stop

Slide 14

Slide 14 text

Analogue - potentiometers from gpiozero import RGBLED, MCP3008 led = RGBLED(2, 3, 4) pot = MCP3008() while True: red = pot.value led.color = (red, 0, 0) # set brightness of red

Slide 15

Slide 15 text

GPIO Zero - beta ● www.pythonhosted.org/gpiozero – Installation instructions – Documentation – Examples ● Google Doc (linked from documentation) – Suggestions – Feedback ● Contact me – [email protected] – @ben_nuttall on Twitter ● #gpiozero on Twitter

Slide 16

Slide 16 text

CamJam EduKit ● £5 starter kit (kit 1) ● £7 sensors kit (kit 2) ● £17 robotics kit (kit 3) ● Free worksheets ● Very reusable

Slide 17

Slide 17 text

Physical computing with GPIO Zero Ben Nuttall Raspberry Pi Foundation UK Charity 1129409