import tkinter as tk
import serial
import threading

PORT      = "/dev/ttyACM0"
BAUD_RATE = 9600

ser    = serial.Serial(PORT, BAUD_RATE, timeout=1)
led_on = False

def toggle_led():
    global led_on
    led_on = not led_on
    ser.write(("LED_ON\n" if led_on else "LED_OFF\n").encode("utf-8"))
    btn.config(
        text = "Turn LED OFF" if led_on else "Turn LED ON",
        bg   = "#48c78e"     if led_on else "#cccccc"
    )

def read_loop():
    while True:
        line = ser.readline().decode("utf-8").strip()
        if line:
            lbl_status.config(text=line)

root = tk.Tk()
root.title("LED Control — Tkinter")
root.geometry("300x200")

tk.Label(root, text="XIAO RP2040", font=("Arial", 16, "bold")).pack(pady=20)

btn = tk.Button(root, text="Turn LED ON", font=("Arial", 13),
                bg="#cccccc", command=toggle_led, padx=20, pady=10)
btn.pack()

lbl_status = tk.Label(root, text="Waiting...", fg="gray", font=("Arial", 11))
lbl_status.pack(pady=10)

threading.Thread(target=read_loop, daemon=True).start()
root.mainloop()
