#!/usr/bin/env python import RPi.GPIO as GPIO import time import os import random import signal import atexit ## cleanup def cleanup(): GPIO.cleanup() atexit.register(cleanup) signal.signal(signal.SIGTERM, lambda signum, stack_frame: exit(1)) ## pin assignments play = 13 stop = 15 disc = 11 busy = 12 ## to use Raspberry Pi board pin numbers GPIO.setmode(GPIO.BOARD) try: ## GPIO "play" and "stop" to input with pull-up GPIO.setup(play, GPIO.IN, pull_up_down=GPIO.PUD_UP) GPIO.setup(stop, GPIO.IN, pull_up_down=GPIO.PUD_UP) ## GPIO "disc" and "busy" to output GPIO.setup(disc, GPIO.OUT) GPIO.setup(busy, GPIO.OUT) while 1: ## "disc" lights up if none of the buttons are pressed GPIO.output(disc, GPIO.HIGH if GPIO.input(play) and GPIO.input(stop) else GPIO.LOW) ## "busy" lights up randomly based on load GPIO.output(busy, GPIO.HIGH if float(os.getloadavg()[0]) > random.random() else GPIO.LOW) ## sleep for a while time.sleep(0.05) except: raise