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
BOOTSELLED1239USBRaspberryPiPico©2020RP2-8020/21P64M15.00TTT