from time import sleep,ticks_ms
from machine import Pin, PWM
def f(x):
return int((100-x)*(1023)/(100))
up = Pin(27, Pin.IN, Pin.PULL_UP)
R3 = Pin(13, Pin.IN, Pin.PULL_UP)
right = Pin(12, Pin.IN, Pin.PULL_UP)
down = Pin(14, Pin.IN, Pin.PULL_UP)
left = Pin(15, Pin.IN, Pin.PULL_UP)
modo = 0
while True:
if modo == 0:
while R3.value() == 1:
led_red = PWM(Pin(21), freq=1000, duty=1023)
led_green = PWM(Pin(22), freq=1000, duty=1023)
led_blue = PWM(Pin(19), freq=1000, duty=1023)
sleep(0.3)
modo = modo+1
if modo == 1:
last = ticks_ms()
i = 1000
intensidade = 50
while R3.value() == 1:
now = ticks_ms()
if now - last < i:
led_red.duty(f(intensidade))
led_blue.duty(f(0))
led_green.duty(f(0))
if now - last >= i and now - last < (2*i):
led_blue.duty(f(intensidade))
if now - last >= (2*i) and now - last < (3*i):
led_red.duty(f(0))
if now - last >= (3*i) and now - last < (4*i):
led_green.duty(f(intensidade))
if now - last >= (4*i) and now - last < (5*i):
led_blue.duty(f(0))
if now - last >= (5*i) and now - last < (6*i):
led_red.duty(f(intensidade))
if now - last >= (6*i) and now - last < (7*i):
led_blue.duty(f(intensidade))
if now - last >= (7*i) and now - last < (8*i):
last = now
led_blue.duty(f(0))
led_green.duty(f(0))
if down.value() == 0:
i = i*2
sleep(0.3)
last = now
if up.value() == 0:
i = i/2
sleep(0.3)
last = now
if right.value() == 0:
sleep(0.3)
if intensidade > 90:
intensidade = 100
last = now
else:
intensidade = intensidade+10
last = now
if left.value() == 0:
sleep(0.3)
intensidade = intensidade/2
last = now
sleep(0.3)
led_blue.duty(f(0))
led_green.duty(f(0))
led_red.duty(f(0))
modo = modo+1
if modo == 2:
last=ticks_ms()
i=500
intensidade=15
while R3.value() == 1:
now=ticks_ms()
if now-last<i:
led_red.duty(f(intensidade-10))
led_blue.duty(f(0))
led_green.duty(f(0))
if now - last >= i and now - last < (2*i):
led_red.duty(f(intensidade))
if now - last >= (2*i) and now - last < (3*i):
led_red.duty(f(intensidade+10))
if now - last >= (3*i) and now - last < (4*i):
led_red.duty(f(intensidade))
if now - last >= (4*i) and now - last < (5*i):
led_red.duty(f(intensidade-10))
if now - last >= (5*i) and now - last < (6*i):
led_red.duty(f(0))
led_blue.duty(f(intensidade-10))
if now - last >= (6*i) and now - last < (7*i):
led_blue.duty(f(intensidade))
if now - last >= (7*i) and now - last < (8*i):
led_blue.duty(f(intensidade+10))
if now - last >= (8*i) and now - last < (9*i):
led_blue.duty(f(intensidade))
if now - last >= (9*i) and now - last < (10*i):
led_blue.duty(f(intensidade-10))
if now - last >= (10*i) and now - last < (11*i):
led_blue.duty(f(0))
led_green.duty(f(intensidade-10))
if now - last >= (11*i) and now - last < (12*i):
led_green.duty(f(intensidade))
if now - last >= (12*i) and now - last < (13*i):
led_green.duty(f(intensidade+10))
if now - last >= (13*i) and now - last < (14*i):
led_green.duty(f(intensidade))
if now - last >= (14*i) and now - last < (15*i):
led_green.duty(f(intensidade-10))
if now - last >= (15*i) and now - last < (16*i):
last = now
led_blue.duty(f(0))
led_green.duty(f(0))
if down.value() == 0:
i = i*2
sleep(0.3)
last = now
if up.value() == 0:
i = i/2
sleep(0.3)
last = now
if right.value() == 0:
sleep(0.3)
if intensidade > 80:
intensidade = 90
last = now
else:
intensidade = intensidade+10
last = now
if left.value() == 0:
sleep(0.3)
if intensidade < 21:
intensidade = 11
else:
intensidade = intensidade/2
last = now
sleep(0.3)
led_blue.duty(f(0))
led_green.duty(f(0))
led_red.duty(f(0))
modo = modo+1
if modo == 3:
last=ticks_ms()
i=1000
intensidade=50
while R3.value() == 1:
now=ticks_ms()
if now-last < i:
led_red.duty(f(intensidade))
led_blue.duty(f(intensidade))
led_green.duty(f(intensidade))
if now - last >= i and now - last < (2*i):
led_red.duty(f(0))
led_blue.duty(f(0))
led_green.duty(f(0))
if now - last >= (2*i) and now - last < (3*i):
last = now
if down.value() == 0:
i = i*2
sleep(0.3)
last = now
if up.value() == 0:
i = i/2
sleep(0.3)
last = now
if right.value() == 0:
sleep(0.3)
if intensidade > 90:
intensidade = 100
last = now
else:
intensidade = intensidade+10
last = now
if left.value() == 0:
sleep(0.3)
intensidade = intensidade/2
last = now
sleep(0.3)
led_blue.duty(f(0))
led_green.duty(f(0))
led_red.duty(f(0))
modo = 0