import RPi.GPIO as GPIO
import psutil
import time

# LED BAR GRAPH

def bargraph( num ):
	if (num<28):
		GPIO.output(26, False)
		GPIO.output(20, False)
		GPIO.output(19, False)
		GPIO.output(16, False)
		GPIO.output(13, False)
		GPIO.output(12, False)
		GPIO.output(6, False)
		GPIO.output(5, False)

	elif (num>=28 and num<56):	
		GPIO.output(26, True)
		GPIO.output(20, False)
		GPIO.output(19, False)
		GPIO.output(16, False)
		GPIO.output(13, False)
		GPIO.output(12, False)
		GPIO.output(6,  False)
		GPIO.output(5,  False)

	elif (num>=56 and num<84):
		GPIO.output(26, True)
		GPIO.output(20, True)
		GPIO.output(19, False)
		GPIO.output(16, False)
		GPIO.output(13, False)
		GPIO.output(12, False)
		GPIO.output(6,  False)
		GPIO.output(5,  False)

	elif (num>=84 and num<112):
		GPIO.output(26, True)
		GPIO.output(20, True)
		GPIO.output(19, True)
		GPIO.output(16, False)
		GPIO.output(13, False)
		GPIO.output(12, False)
		GPIO.output(6,  False)
		GPIO.output(5,  False)

	elif (num>=112 and num<140):
		GPIO.output(26, True)
		GPIO.output(20, True)
		GPIO.output(19, True)
		GPIO.output(16, True)
		GPIO.output(13, False)
		GPIO.output(12, False)
		GPIO.output(6,  False)
		GPIO.output(5,  False)

	elif (num>=140 and num<168):
		GPIO.output(26, True)
		GPIO.output(20, True)
		GPIO.output(19, True)
		GPIO.output(16, True)
		GPIO.output(13, True)
		GPIO.output(12, False)
		GPIO.output(6,  False)
		GPIO.output(5,  False)

	elif (num>=168 and num<196):
		GPIO.output(26, True)
		GPIO.output(20, True)
		GPIO.output(19, True)
		GPIO.output(16, True)
		GPIO.output(13, True)
		GPIO.output(12, True)
		GPIO.output(6,  False)
		GPIO.output(5,  False)

	elif (num>=196 and num<224):
		GPIO.output(26, True)
		GPIO.output(20, True)
		GPIO.output(19, True)
		GPIO.output(16, True)
		GPIO.output(13, True)
		GPIO.output(12, True)
		GPIO.output(6,  True)
		GPIO.output(5,  False)
	
	elif (num>=224):
		GPIO.output(26, True)
		GPIO.output(20, True)
		GPIO.output(19, True)
		GPIO.output(16, True)
		GPIO.output(13, True)
		GPIO.output(12, True)
		GPIO.output(6,  True)
		GPIO.output(5,  True)

	else:
		GPIO.output(26, False)
		GPIO.output(20, False)
		GPIO.output(19, False)
		GPIO.output(16, False)
		GPIO.output(13, False)
		GPIO.output(12, False)
		GPIO.output(6,  False)
		GPIO.output(5,  False)


# Setup GPIO

GPIO.setwarnings(False)
GPIO.setmode(GPIO.BCM)

# LED Outputs

GPIO.setup(26, GPIO.OUT) # L7
GPIO.setup(20, GPIO.OUT) # L6
GPIO.setup(19, GPIO.OUT) # L5
GPIO.setup(16, GPIO.OUT) # L4
GPIO.setup(13, GPIO.OUT) # L3
GPIO.setup(12, GPIO.OUT) # L2
GPIO.setup(6, GPIO.OUT)  # L1
GPIO.setup(5, GPIO.OUT)  # L0

# Turn off LEDS

GPIO.output(26, False)
GPIO.output(20, False)
GPIO.output(19, False)
GPIO.output(16, False)
GPIO.output(13, False)
GPIO.output(12, False)
GPIO.output(6, False)
GPIO.output(5, False)

while True:
	loading = (psutil.cpu_percent() / 100) * 255
	bargraph(loading)

	#print str(loading)

	time.sleep(2)

