Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Physical computing with GPIO Zero

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

Ben Nuttall

October 15, 2015
Tweet

More Decks by Ben Nuttall

Other Decks in Education

Transcript

  1. 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. 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. 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. 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. LED + Button from gpiozero import LED, Button led =

    LED(17) button = Button(3) button.when_pressed = led.on button.when_released = led.off
  6. 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. 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. 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. 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. 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. 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. 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. 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. 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
  15. CamJam EduKit • £5 starter kit (kit 1) • £7

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