Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import datetime
- import sched, time
- import math
- import unicornhat as uh
- uh.set_layout(uh.PHAT)
- uh.brightness(0.5)
- #################################################################################################
- #Kelvin to RGB
- def convert_K_to_RGB(color_temperature):
- """
- Converts from K to RGB, algorithm courtesy of
- http://www.tannerhelland.com/4435/convert-temperature-rgb-algorithm-code/
- """
- #range check
- if color_temperature == 0:
- return [0, 0, 0]
- tmp_internal = color_temperature / 100.0
- # red
- if tmp_internal <= 66:
- red = 255
- else:
- tmp_red = 329.698727446 * math.pow(tmp_internal - 60, -0.1332047592)
- if tmp_red < 0:
- red = 0
- elif tmp_red > 255:
- red = 255
- else:
- red = tmp_red
- # green
- if tmp_internal <=66:
- tmp_green = 99.4708025861 * math.log(tmp_internal) - 161.1195681661
- if tmp_green < 0:
- green = 0
- elif tmp_green > 255:
- green = 255
- else:
- green = tmp_green
- else:
- tmp_green = 288.1221695283 * math.pow(tmp_internal - 60, -0.0755148492)
- if tmp_green < 0:
- green = 0
- elif tmp_green > 255:
- green = 255
- else:
- green = tmp_green
- # blue
- if tmp_internal >=66:
- blue = 255
- elif tmp_internal <= 19:
- blue = 0
- else:
- tmp_blue = 138.5177312231 * math.log(tmp_internal - 10) - 305.0447927307
- if tmp_blue < 0:
- blue = 0
- elif tmp_blue > 255:
- blue = 255
- else:
- blue = tmp_blue
- return red, green, blue
- #################################################################################################
- #My script
- kelvinmax = 6000
- keltemp = 0
- rgbval = [0, 0, 0]
- def numinc():
- global kelvinmax
- global keltemp
- global rgbval
- currentDT = datetime.datetime.now()
- htime = int(currentDT.strftime("%H"))#Time in hours
- mtime = int(currentDT.strftime("%M"))#Time in minutes
- mintime = htime*60+mtime#Total current time in minutes(converted the hours to minutes)
- print(htime, mtime, mintime, mintime>=1080 and mintime<1320)
- if(mintime>=1080 and mintime<1320):#If the time is between 6 and 10pm set the keltemp.
- intime = mintime - 1080
- percentday = intime/240#% of the day that has passed.
- keltemp = kelvinmax - kelvinmax*percentday
- else:#If the time is not in the range of 6-10pm turn off the LEDs.
- keltemp = 0
- rgbval = convert_K_to_RGB(keltemp)
- print(keltemp, convert_K_to_RGB(keltemp))
- setLED()
- def setLED():
- global kelvinmax
- global keltemp
- global rgbval
- if(keltemp == 0):#Turn off LEDs
- uh.clear()
- uh.show()
- else:
- uh.clear()
- for x in range(8):
- for y in range(4):
- uh.set_pixel(x, y, int(rgbval[0]), int(rgbval[1]), int(rgbval[2]))
- uh.show()
- numinc()
- s = sched.scheduler(time.time, time.sleep)
- def do_something(sc):
- print("Updating LED color.")
- numinc()
- s.enter(60, 1, do_something, (sc,))
- s.enter(60, 1, do_something, (s,))
- s.run()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement