import neopixel #import of neoplex library for LED control
from time import sleep_ms, ticks_ms #import of sleep_ms function from time library
from machine import Pin #import of Pin function
from random import randint
from conf import config
#from conf_off import off
from colorswitch import clrsw
from dropdwn import drp_dwn
from disco import disco
from fancy_fire import fancy_f
from gradient import grdnt
from effect_sw import effectsw
from fire import fire
def btn_sw (p): #defining the function for interupt
global trigger, start_time
trigger["trigger"]=not trigger["trigger"]
trigger["start_time"]=ticks_ms()
print("btn_sw")
def btn_sw2 (p):
global trigger2
trigger2["trigger"]=not trigger2["trigger"]
print("btn_sw2")
#LED_QTY = 16
pin=Pin(12, Pin.OUT) # defining of ESP Pin D12 as pin variable
btn=Pin(14, Pin.IN, Pin.PULL_DOWN) # defining of ESP Pin D14 as btn variable, Pull_down function of Pin is for setting the pull up resistor if you want your button to work from 3V3, set pull down if you want button to work from GND
btn2=Pin(27, Pin.IN, Pin.PULL_DOWN)
btn.irq(handler=btn_sw,trigger=Pin.IRQ_RISING) # configuration of interrupt handler to be called on rising edge of the pin
btn2.irq(handler=btn_sw2,trigger=Pin.IRQ_RISING)
np=neopixel.NeoPixel(pin,config["LED_QTY"])
#global variables
trigger={"trigger":0,"start_time":0,"stop_time":0}
trigger2={"trigger":0}
#template = [] #gradient template
#brgt = [] # brightness
"""
for i in range (256):
r = i * 10 if i <= 25 else 255
g = int(i / 2)
b = int(g / 4)
template.append([r, g, b])
for i in range(config["LED_QTY"]):
brgt.append(randint(100, 255))
def minus(br):
tmp = br - randint(0, 15)
if tmp < 0: tmp = randint(200, 251)
return tmp
#print(minus)
def fire():
global brgt
while True:
#if trigger2["trigger"]==1:
if btn2.value()==0:
try:
np[0]=template[brgt[0]]
np[1]=template[brgt[1]]
np[2]=template[brgt[2]]
np[3]=template[brgt[3]]
np[4]=template[brgt[4]]
np[5]=template[brgt[5]]
np[6]=template[brgt[6]]
np[7]=template[brgt[7]]
np[8]=template[brgt[8]]
np[9]=template[brgt[9]]
np[10]=template[brgt[10]]
np[11]=template[brgt[11]]
np[12]=template[brgt[12]]
np[13]=template[brgt[13]]
np[14]=template[brgt[14]]
np[15]=template[brgt[15]]
np[16]=template[brgt[16]]
np[17]=template[brgt[17]]
np[18]=template[brgt[18]]
np[19]=template[brgt[19]]
np[20]=template[brgt[20]]
np[21]=template[brgt[21]]
np[22]=template[brgt[22]]
np[23]=template[brgt[23]]
np[24]=template[brgt[24]]
np[25]=template[brgt[25]]
np[26]=template[brgt[26]]
np[27]=template[brgt[27]]
except:
pass
np.write()
brgt = list(map(minus, brgt))
else:
#np.fill((0,0,0))
#off(np)
#np.write()
break
sleep_ms(10)
"""
if __name__ == "__main__":
#fire()
while True:
#clrsw(np, trigger)
# for turn on and off current color
if trigger["trigger"]==1:
if config["effect"]=="fire":
fire(np,trigger,btn2,btn)
if config["effect"]=="dropdwn":
drp_dwn(np,trigger,btn2,btn)
if config["effect"]=="disco":
disco(np, trigger,btn2,btn)
if config["effect"]=="fancy_f":
fancy_f(np,trigger,btn2,btn)
if config["effect"]=="grdnt":
grdnt(np, trigger,btn2,btn)
if config["effect"]=="static_color":
np.fill(config["color"])
np.write()
else:
np.fill((0,0,0))
np.write()
# start tamestamp for long button press
if btn.value()==0:
trigger["start_time"]=0
# detection of long button press start color switch function
if trigger["start_time"]!=0:
if trigger["start_time"]+2000<ticks_ms():
clrsw(np, trigger, btn)
# to call fire effect by button2
#if trigger2["trigger"]==1:
if btn2.value()==1:
#fire()
#drp_dwn(np, trigger, btn)
#disco(np, trigger, btn2)
#fancy_f(np,trigger,btn2)
#grdnt(np,trigger,btn2)
effectsw(np,trigger,btn2,btn)
#elif trigger2["trigger"]==0:
# break
#print(555)
#print(trigger2["trigger"])