Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Physical computing with GPIO Zero - Peterboroug...
Search
Ben Nuttall
November 24, 2015
Programming
6.7k
0
Share
Physical computing with GPIO Zero - Peterborough coding evening
GPIO Zero talk given at Peterborough coding evening
Ben Nuttall
November 24, 2015
More Decks by Ben Nuttall
See All by Ben Nuttall
Numeronyms are obnoxious
bennuttall
0
470
Live Highlights in BBC iPlayer
bennuttall
0
140
Rapid prototyping in BBC News with Python and AWS
bennuttall
0
210
Rapid prototyping in BBC News with Python and AWS
bennuttall
0
140
Running a Python Package Index for Raspberry Pi
bennuttall
0
170
From Acorns to Raspberries
bennuttall
0
150
Innovation in the newsroom
bennuttall
0
200
Innovation in the newsroom - MOS Running Order Manager
bennuttall
0
220
How to market your open source project
bennuttall
0
260
Other Decks in Programming
See All in Programming
L’IA au service des devs : Anatomie d'un assistant de Code Review
toham
0
190
Ruby and LLM Ecosystem 2nd
koic
1
1.4k
KagglerがMixSeekを触ってみた
morim
0
360
モックわからないマン卒業記 ~振る舞いを起点に見直した、フロントエンドテストにおけるモックの使いどころ~
tasukuwatanabe
3
440
仕様漏れ実装漏れをなくすトレーサビリティAI基盤のご紹介
orgachem
PRO
8
4.2k
Symfony + NelmioApiDocBundle を使った スキーマ駆動開発 / Schema Driven Development with NelmioApiDocBundle
okashoi
0
260
飯MCP
yusukebe
0
470
GoのDB アクセスにおける 「型安全」と「柔軟性」の両立 - Bob という選択肢
tak848
0
300
Reactive ❤️ Loom: A Forbidden Love Story
franz1981
2
210
How to stabilize UI tests using XCTest
akkeylab
0
150
ポーリング処理廃止によるイベント駆動アーキテクチャへの移行
seitarof
3
1.3k
我々はなぜ「層」を分けるのか〜「関心の分離」と「抽象化」で手に入れる変更に強いシンプルな設計〜 #phperkaigi / PHPerKaigi 2026
shogogg
2
760
Featured
See All Featured
ラッコキーワード サービス紹介資料
rakko
1
2.9M
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
260
Primal Persuasion: How to Engage the Brain for Learning That Lasts
tmiket
0
310
Design in an AI World
tapps
0
190
A Modern Web Designer's Workflow
chriscoyier
698
190k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
320
Max Prin - Stacking Signals: How International SEO Comes Together (And Falls Apart)
techseoconnect
PRO
0
140
Making Projects Easy
brettharned
120
6.6k
Navigating the Design Leadership Dip - Product Design Week Design Leaders+ Conference 2024
apolaine
0
260
<Decoding/> the Language of Devs - We Love SEO 2024
nikkihalliwell
1
170
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
120
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
1
480
Transcript
Physical computing with GPIO Zero Ben Nuttall Raspberry Pi Foundation
UK Charity 1129409
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
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)
Python – GPIO Zero from gpiozero import LED from time
import sleep led = LED(17) while True: led.on() sleep(1) led.off() sleep(1)
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
LED + Button from gpiozero import LED, Button led =
LED(17) button = Button(3) button.when_pressed = led.on button.when_released = led.off
Source + Values from gpiozero import LED, Button led =
LED(17) button = Button(3) led.source = button.values
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
Motion sensor from gpiozero import LED, MotionSensor led = LED(2)
sensor = MotionSensor(3) sensor.when_motion = led.on sensor.when_no_motion = led.off
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")
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
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()
TrafficHat from gpiozero import TrafficHat th = TrafficHat() th.lights.red.on() th.lights.amber.on()
th.button.when_pressed = th.on th.button.when_released = th.off
TrafficHat - PWM from gpiozero import TrafficHat th = TrafficHat(pwm=True)
th.lights.red.value = 0.2 th.lights.amber.value = 0.4 th.lights.green.value = 0.8
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
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)
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)
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)
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
Analogue - potentiometers from gpiozero import MCP3008 pot = MCP3008()
while True: print(pot.value)
Dial up the brightness! from gpiozero import PWMLED, MCP3008 led
= PWMLED(2) pot = MCP3008() while True: led.value = pot.value
Dial up the brightness! from gpiozero import PWMLED, MCP3008 led
= PWMLED(2) pot = MCP3008() led.source = pot.values
Analogue - potentiometers from gpiozero import RGBLED, MCP3008 led =
RGBLED(red=2, green=3, blue=4) red_pot = MCP3008(channel=0) green_pot = MCP3008(channel=1) blue_pot = MCP3008(channel=2) while True: led.red = red_pot.value led.green = green_pot.value led.blue = blue_pot.value
Analogue - potentiometers from gpiozero import RGBLED, MCP3008 led =
RGBLED(red=2, green=3, blue=4) red_pot = MCP3008(channel=0) green_pot = MCP3008(channel=1) blue_pot = MCP3008(channel=2) led.red.source = red_pot.values led.green.source = green_pot.values led.blue.source = blue_pot.values
GPIO Music Box from gpiozero import Button import pygame.mixer from
pygame.mixer import Sound pygame.mixer.init() sound_pins = { 2: Sound("samples/drum_tom_mid_hard.wav"), 3: Sound("samples/drum_cymbal_open.wav"), } buttons = [Button(pin) for pin in sound_pins] for button in buttons: sound = sound_pins[button.pin] button.when_pressed = sound.play
GPIO Zero - beta • www.pythonhosted.org/gpiozero – Installation instructions –
Documentation – Examples • GitHub Issues – Suggestions – Feedback • Contact me –
[email protected]
– @ben_nuttall on Twitter • #gpiozero on Twitter
CamJam EduKit • £5 starter kit (kit 1) • £7
sensors kit (kit 2) • £17 robotics kit (kit 3) • Free worksheets • Very reusable
Raspberry Pi blog
The MagPi
The MagPi
The MagPi
Physical computing with GPIO Zero Ben Nuttall Raspberry Pi Foundation
UK Charity 1129409