from machine import Pin
import utime
# Pin definitions
LED_PIN = 2
RGB1_R, RGB1_G, RGB1_B = 3, 4, 5
RGB2_R, RGB2_G, RGB2_B = 6, 7, 8
RGB3_R, RGB3_G, RGB3_B = 9, 10, 11
BAR_PINS = [12, 13, 14, 15] # Replaced Arduino pins 44, 45 with GP14, GP15
# Initialize pins
led = Pin(LED_PIN, Pin.OUT)
rgb1_r, rgb1_g, rgb1_b = Pin(RGB1_R, Pin.OUT), Pin(RGB1_G, Pin.OUT), Pin(RGB1_B, Pin.OUT)
rgb2_r, rgb2_g, rgb2_b = Pin(RGB2_R, Pin.OUT), Pin(RGB2_G, Pin.OUT), Pin(RGB2_B, Pin.OUT)
rgb3_r, rgb3_g, rgb3_b = Pin(RGB3_R, Pin.OUT), Pin(RGB3_G, Pin.OUT), Pin(RGB3_B, Pin.OUT)
bar_leds = [Pin(pin, Pin.OUT) for pin in BAR_PINS]
def set_rgb(r_pin, g_pin, b_pin, r_state, g_state, b_state):
"""Set RGB LED colors by controlling each pin"""
r_pin.value(r_state)
g_pin.value(g_state)
b_pin.value(b_state)
# Main loop
last_blink = 0
led_state = 0
while True:
current_millis = utime.ticks_ms()
stage = (current_millis // 2000) % 4
# Blink the LED every 2 seconds
if utime.ticks_diff(current_millis, last_blink) >= 2000:
last_blink = current_millis
led_state = not led_state
led.value(led_state)
# Control RGB LEDs based on current stage
if stage == 0:
set_rgb(rgb1_r, rgb1_g, rgb1_b, 1, 0, 0) # Red
set_rgb(rgb2_r, rgb2_g, rgb2_b, 0, 0, 0) # Off
set_rgb(rgb3_r, rgb3_g, rgb3_b, 0, 0, 0) # Off
elif stage == 1:
set_rgb(rgb1_r, rgb1_g, rgb1_b, 0, 1, 0) # Green
set_rgb(rgb2_r, rgb2_g, rgb2_b, 0, 0, 1) # Blue
set_rgb(rgb3_r, rgb3_g, rgb3_b, 0, 0, 0) # Off
elif stage == 2:
set_rgb(rgb1_r, rgb1_g, rgb1_b, 0, 0, 1) # Blue
set_rgb(rgb2_r, rgb2_g, rgb2_b, 1, 0, 0) # Red
set_rgb(rgb3_r, rgb3_g, rgb3_b, 0, 1, 0) # Green
elif stage == 3:
set_rgb(rgb1_r, rgb1_g, rgb1_b, 1, 1, 1) # White
set_rgb(rgb2_r, rgb2_g, rgb2_b, 1, 1, 1) # White
set_rgb(rgb3_r, rgb3_g, rgb3_b, 1, 1, 1) # White
# Control the bar graph LEDs
for i in range(4):
bar_leds[i].value(1 if i <= stage else 0)
utime.sleep_ms(10) # Small delay to prevent CPU hogging