Physical computing with GPIO Zero

A1995c9abe48450ce2f82d93ca0b863f?s=47 Ben Nuttall
October 15, 2015

Physical computing with GPIO Zero

Short talk in my new GPIO Python library for Raspberry Pi, given at Coding Evening in London

A1995c9abe48450ce2f82d93ca0b863f?s=128

Ben Nuttall

October 15, 2015
Tweet

Transcript

  1. 2.

    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
  2. 3.

    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)
  3. 4.

    Python – GPIO Zero from gpiozero import LED from time

    import sleep led = LED(17) while True: led.on() sleep(1) led.off() sleep(1)
  4. 5.

    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
  5. 6.

    LED + Button from gpiozero import LED, Button led =

    LED(17) button = Button(3) button.when_pressed = led.on button.when_released = led.off
  6. 7.

    Motion sensor from gpiozero import LED, MotionSensor led = LED(2)

    sensor = MotionSensor(3) sensor.when_motion = led.on sensor.when_no_motion = led.off
  7. 8.

    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
  8. 9.

    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()
  9. 10.

    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)
  10. 11.

    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)
  11. 12.

    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)
  12. 13.

    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
  13. 14.

    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
  14. 15.

    GPIO Zero - beta • www.pythonhosted.org/gpiozero – Installation instructions –

    Documentation – Examples • Google Doc (linked from documentation) – Suggestions – Feedback • Contact me – ben@raspberrypi.org – @ben_nuttall on Twitter • #gpiozero on Twitter
  15. 16.

    CamJam EduKit • £5 starter kit (kit 1) • £7

    sensors kit (kit 2) • £17 robotics kit (kit 3) • Free worksheets • Very reusable