from machine import Pin, PWM
from time import *
from pin_numbers import *
print('RGB LED PWM + button Example')
print('press the button to change colors')
r_led = Pin(D2, Pin.OUT)
r_pwm = PWM(r_led)
g_led = Pin(D1, Pin.OUT)
g_pwm = PWM(g_led)
b_pwm = PWM(Pin(D0))
btn = Pin(D8, Pin.IN, Pin.PULL_UP)
btn_val_last = 1
r_pwm.duty(1023)
g_pwm.duty(0)
b_pwm.duty(0)
led_state = 'full red'
# function to convert brightness from 0 - 100 range
# to duty cycle in 0 - 1023 range
def get_duty(brightness):
duty_cycle = int(brightness * 1023 / 100)
return duty_cycle
while True:
#print('btn =', btn.value())
# check that the button changed from high to low:
if btn.value() == 0: # button value is low
if btn_val_last == 1: # last button value was high
if led_state == 'full green':
led_state = 'full red'
r_pwm.duty(get_duty(100))
g_pwm.duty(0)
b_pwm.duty(0)
elif led_state == 'full red':
led_state = 'rg fade'
b_pwm.duty(0)
for i in range(100):
r_pwm.duty(get_duty(100 - i))
g_pwm.duty(get_duty(i))
sleep_ms(10)
elif led_state == 'rg fade':
led_state = 'yellow'
r_pwm.duty(get_duty(100))
g_pwm.duty(get_duty(100))
b_pwm.duty(0)
elif led_state == 'yellow':
led_state = 'full green'
r_pwm.duty(0)
g_pwm.duty(get_duty(100))
b_pwm.duty(0)
elif led_state == 'zero brightness':
led_state = 'fade brightness'
for i in range(100):
r_pwm.duty(get_duty(i))
sleep_ms(10)
elif led_state == 'fade brightness':
led_state = 'half brightness'
r_pwm.duty(get_duty(50))
print('led_state =', led_state)
# update the last button value:
btn_val_last = btn.value()
sleep_ms(100)