from machine import Pin, PWM
import time
import _thread

red=PWM(Pin(15))
red.freq(5000)
red.duty_u16(65535)
blue=PWM(Pin(14))
blue.freq(5000)
blue.duty_u16(0)
green=PWM(Pin(13))
green.freq(5000)
green.duty_u16(0)

led1=Pin(16,Pin.OUT) #BR1
led2=Pin(17,Pin.OUT) #BR2
led3=Pin(18,Pin.OUT) #BR3
led4=Pin(19,Pin.OUT) #BR4
led5=Pin(20,Pin.OUT) #BR5
br=[led1,led2,led3,led4,led5] #br[i].toggle()

ledD=Pin(22,Pin.OUT) #blue LED
ledD.value(0)
ledA=Pin(21,Pin.OUT) #red LED
ledA.value(1)

global state


button0=Pin(12,Pin.IN,Pin.PULL_DOWN) #control ledD&ledA
global button0_pressed
button0_pressed=False
def button0_reader_thread():
    global button0_pressed
    while True:
        if button0.value()==1:
            button0_pressed=True
        time.sleep(0.01)
_thread.start_new_thread(button0_reader_thread,())
while True:
    if button0_pressed==True:
        ledA.toggle()
        ledD.toggle()
        time.sleep(1)
    button0_pressed=False

while True:
    if state==0:
        stateZero()
    elif state==1:
        stateOne()
    elif state==2:
        stateTwo()
    elif state==3:
        stateThree()
    elif state==4:
        stateFour()
    elif state==5:
        stateFive()
    elif state==6:
        stateSix()
    elif state==7:
        stateSeven()
        
button1_presses=0
last_time=0


button1=Pin(11,Pin.IN,Pin.PULL_DOWN) #control RGB and phases

def button1_pressed_handler():
    global button1_presses, last_time
    new_time=time.ticks_ms()
    if (new_time-last_time)>200:
        button1_presses+=1
        last_time=new_time

button1.irq(trigger=machine.Pin.IRQ_FALLING,handler=button1_pressed_handler)

old_presses=0
while True:
    if button1_presses!=old_presses:
        state=button1_presses
        print(state)
        old_presses=button1_presses


def stateZero():
    red.duty_u16(65535)
    green.duty_u16(0)
    blue.duty_u16(0)
    #state=1
    return

def stateOne():
    red.duty_u16(15000)
    green.duty_u16(0)
    blue.duty_u16(65535)
    #state=2
    i+=1
    led[i].on()
    return

def stateTwo():
    red.duty_u16(65535)
    green.duty_u16(0)
    blue.duty_u16(65535)
    #state=3
    return

def stateThree():
    red.duty_u16(35000)
    green.duty_u16(65535)
    blue.duty_u16(0)
    #state=4
    return

def stateFour():
    red.duty_u16(15000)
    green.duty_u16(15000)
    blue.duty_u16(65535)
    #state=5
    return

def stateFive():
    red.duty_u16(65535)
    green.duty_u16(15000)
    blue.duty_u16(0)
    #state=6
    return

def stateSix():
    red.duty_u16(0)
    green.duty_u16(65535)
    blue.duty_u16(65535)
    #state=7
    return

def stateSeven():
    red.duty_u16(0)
    green.duty_u16(0)
    blue.duty_u16(0)
    state=0
    button1_presses=0
    return
