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. Physical computing with GPIO Zero
    Ben Nuttall
    Raspberry Pi Foundation
    UK Charity 1129409

    View full-size slide

  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

    View full-size slide

  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)

    View full-size slide

  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)

    View full-size slide

  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

    View full-size slide

  6. LED + Button
    from gpiozero import LED, Button
    led = LED(17)
    button = Button(3)
    button.when_pressed = led.on
    button.when_released = led.off

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

  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()

    View full-size slide

  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)

    View full-size slide

  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)

    View full-size slide

  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)

    View full-size slide

  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

    View full-size slide

  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

    View full-size slide

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

    View full-size slide

  16. CamJam EduKit

    £5 starter kit (kit 1)

    £7 sensors kit (kit 2)

    £17 robotics kit (kit 3)

    Free worksheets

    Very reusable

    View full-size slide

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

    View full-size slide