Skip to content

Instantly share code, notes, and snippets.

@mapkyca
Last active December 17, 2015 18:58
Show Gist options
  • Save mapkyca/5656514 to your computer and use it in GitHub Desktop.
Save mapkyca/5656514 to your computer and use it in GitHub Desktop.
Drive a simple set of (UK) traffic lights using a Raspberry Pi and PiFace.
import piface.pfio
import time
import sys
class trafficlight:
""" A (UK) Traffic light """
def __init__(self, red_pin, amber_pin, green_pin, start_on_red = False):
self.red_pin = red_pin
self.amber_pin = amber_pin
self.green_pin = green_pin
if start_on_red == True:
self.status = 'red'
piface.pfio.digital_write(self.red_pin, 1)
else:
self.status = 'green'
piface.pfio.digital_write(self.green_pin, 1)
def toggle(self):
# Toggle lights according to the UK sequence
if self.status == 'red':
piface.pfio.digital_write(self.red_pin, 1)
piface.pfio.digital_write(self.amber_pin, 1)
time.sleep(2)
piface.pfio.digital_write(self.red_pin, 0)
piface.pfio.digital_write(self.amber_pin, 0)
piface.pfio.digital_write(self.green_pin, 1)
self.status = 'green'
else:
piface.pfio.digital_write(self.green_pin, 0)
piface.pfio.digital_write(self.amber_pin, 1)
time.sleep(2)
piface.pfio.digital_write(self.amber_pin, 0)
piface.pfio.digital_write(self.red_pin, 1)
self.status = 'red'
def main(argv):
piface.pfio.init()
# initialise our lights
light1 = trafficlight(0,1,2, True)
light2 = trafficlight(3,4,5)
loop = 0
while loop < 10:
# Quick lights
time.sleep(5)
# we want to turn the green one red before turning the red one green - safety first!
if light1.status == 'green':
light1.toggle()
light2.toggle()
else:
light2.toggle()
light1.toggle()
loop = loop + 1
if __name__ == "__main__":
sys.exit(main(sys.argv))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment