119 lines
2.8 KiB
Python
119 lines
2.8 KiB
Python
import signal, sys, time, os, RPi.GPIO as GPIO
|
|
|
|
|
|
pin_red = 22
|
|
pin_green = 18
|
|
pin_blue = 16
|
|
|
|
|
|
red = ""
|
|
green = ""
|
|
blue = ""
|
|
|
|
def exit_application():
|
|
GPIO.cleanup()
|
|
sys.exit()
|
|
return
|
|
|
|
|
|
def signal_handler(sig, frame):
|
|
print('Programm exiting')
|
|
exit_application()
|
|
|
|
|
|
#signal handing for controlled exit via ctrl+c
|
|
signal.signal(signal.SIGINT, signal_handler)
|
|
|
|
GPIO.setmode(GPIO.BOARD)
|
|
|
|
def led_init():
|
|
global red,green,blue
|
|
GPIO.setup(pin_red, GPIO.OUT)
|
|
GPIO.setup(pin_green, GPIO.OUT)
|
|
GPIO.setup(pin_blue, GPIO.OUT)
|
|
|
|
red = GPIO.PWM(pin_red, 100)
|
|
red.ChangeDutyCycle(0)
|
|
#red.ChangeFrequency(100)
|
|
|
|
blue = GPIO.PWM(pin_blue, 100)
|
|
blue.ChangeDutyCycle(0)
|
|
#blue.ChangeFrequency(100)
|
|
|
|
green = GPIO.PWM(pin_green, 100)
|
|
green.ChangeDutyCycle(0)
|
|
#green.ChangeFrequency(100)
|
|
green.start(0)
|
|
blue.start(0)
|
|
red.start(0)
|
|
|
|
def fade_red(zeit):
|
|
for i in range(10,70):
|
|
print(i)
|
|
red.ChangeDutyCycle(i)
|
|
time.sleep(zeit)
|
|
for i in range(0,60):
|
|
print(i)
|
|
red.ChangeDutyCycle(70-i)
|
|
time.sleep(zeit)
|
|
|
|
def fade_blue(zeit):
|
|
for i in range(10,70):
|
|
print(i)
|
|
blue.ChangeDutyCycle(i)
|
|
time.sleep(zeit)
|
|
for i in range(0,60):
|
|
print(i)
|
|
blue.ChangeDutyCycle(70-i)
|
|
time.sleep(zeit)
|
|
|
|
|
|
def fade_green(zeit):
|
|
for i in range(10,70):
|
|
print(i)
|
|
green.ChangeDutyCycle(i)
|
|
time.sleep(zeit)
|
|
for i in range(0,60):
|
|
print(i)
|
|
green.ChangeDutyCycle(70-i)
|
|
time.sleep(zeit)
|
|
|
|
|
|
def change_green(amount):
|
|
# takes an input from 0 to 255 and converts it to Duty Cycle
|
|
global green
|
|
factor = 100/255
|
|
green.ChangeDutyCycle(amount*factor)
|
|
|
|
def change_blue(amount):
|
|
# takes an input from 0 to 255 and converts it to Duty Cycle
|
|
global blue
|
|
factor = 100/255
|
|
blue.ChangeDutyCycle(amount*factor)
|
|
|
|
def change_red(amount):
|
|
# takes an input from 0 to 255 and converts it to Duty Cycle
|
|
global red
|
|
factor = 100/255
|
|
red.ChangeDutyCycle(amount*factor)
|
|
|
|
def change_led_colour(red_amount,green_amount,blue_amount):
|
|
global red,green,blue
|
|
red.ChangeDutyCycle(red_amount)
|
|
blue.ChangeDutyCycle(blue_amount)
|
|
green.ChangeDutyCycle(green_amount)
|
|
|
|
|
|
led_init()
|
|
|
|
|
|
|
|
|
|
while True:
|
|
change_led_colour(100,0,0)
|
|
time.sleep(2)
|
|
change_led_colour(0,100,0)
|
|
time.sleep(2)
|
|
change_led_colour(0,0,100)
|
|
time.sleep(2)
|