esp-deckenlicht/lighttest/lighttest.py

109 lines
2.7 KiB
Python

import pygame
import random
pygame.init()
# Set the height and width of the screen
size = (400, 100)
screen = pygame.display.set_mode(size)
pygame.display.set_caption("Blafoo")
# Loop until the user clicks the close button.
done = False
clock = pygame.time.Clock()
import time
lamp0e=0
lamp0=0
lamp1e=0
lamp1=0
setbrightness0 = 0
#setbrightness1 = 0;
fluorescent0Active=False
#fluorescent1Active=False;
fluorescent0Age=10
#fluorescent1Age=10;
FLUORESCENTAGEMAX= 20
FLUORESCENTTEMPMAX= 1000
fluorescent0Temp=0
#fluorescent1Temp=0;
GLOWBRIGHTNESS= 50
flashprobability0=300 #the higher the lesser
flashprobabilitymin0=100 #the higher the lesser (at peak)
tempincreasemax0=10 #the higher the faster lightup
FLASHPROBABILITY_MIN=200
FLASHPROBABILITY_MAX=600
FLASHPROBABILITYMIN_MIN=100
FLASHPROBABILITYMIN_MAX=150
TEMPINCREASEMAX_MIN=5
TEMPINCREASEMAX_MAX=15
flashprobability0=random.randint(FLASHPROBABILITY_MIN,FLASHPROBABILITY_MAX)
flashprobabilitymin0=random.randint(FLASHPROBABILITYMIN_MIN,FLASHPROBABILITYMIN_MAX)
tempincreasemax0=random.randint(TEMPINCREASEMAX_MIN,TEMPINCREASEMAX_MAX)
fluorescent0Active=True #start
setbrightness0=255
def constrain(val, min_val, max_val):
return min(max_val, max(min_val, val))
# Loop as long as done == False
while not done:
ms = time.time()*1000.0
for event in pygame.event.get(): # User did something
if event.type == pygame.QUIT: # If user clicked close
done = True # Flag that we are done so we exit this loop
if (fluorescent0Active):
fluorescent0Temp+=random.randint(1,tempincreasemax0)
if (random.randint(0,flashprobability0-constrain(fluorescent0Temp*flashprobability0/FLUORESCENTTEMPMAX,0,flashprobability0-flashprobabilitymin0))==0):
lamp0=setbrightness0*random.randint(30,100)/10
lamp0e=lamp0 #flash everything
lamp0-=20
lamp0e+=constrain(random.randint(-10,fluorescent0Temp*10/FLUORESCENTTEMPMAX) , 0, 10) #start glowing slowly
if (lamp0e>GLOWBRIGHTNESS):
lamp0e-=constrain(lamp0e-GLOWBRIGHTNESS,0,20) #make sides darker until glowbrightness
if fluorescent0Temp>=FLUORESCENTTEMPMAX:
fluorescent0Active=False
fluorescent0Temp=0
lamp0=setbrightness0
lamp0e=setbrightness0
print("finished")
lamp0=constrain(int(lamp0),0,255)
lamp0e=constrain(int(lamp0e),0,255)
clamp0 = (lamp0,lamp0,lamp0)
clamp0e = (lamp0e,lamp0e,lamp0e)
screen.fill(clamp0) #center
pygame.draw.rect(screen,clamp0e,(0,0,20,size[1])) #left edge
pygame.draw.rect(screen,clamp0e,(size[0]-20,0,20,size[1]))#right edge
pygame.display.flip()
# This limits the while loop to a max of 60 times per second.
# Leave this out and we will use all CPU we can.
clock.tick(50)
# Be IDLE friendly
pygame.quit()