import time
from machine import Pin, PWM
led = Pin(4, Pin.OUT)
led_r = PWM(Pin(25, Pin.OUT))
led_g = PWM(Pin(27, Pin.OUT))
led_b = PWM(Pin(12, Pin.OUT))
led_r.freq(200)
led_g.freq(200)
led_b.freq(200)
led_r.duty(0)
led_g.duty(0)
led_b.duty(0)
last_processed_message = None
def test_colors():
print("Testing red")
led_r.duty(1023)
led_g.duty(0)
led_b.duty(0)
time.sleep(1)
print("Testing green")
led_r.duty(0)
led_g.duty(1023)
led_b.duty(0)
time.sleep(1)
print("Testing blue")
led_r.duty(0)
led_g.duty(0)
led_b.duty(1023)
time.sleep(1)
led_r.duty(0)
led_g.duty(0)
led_b.duty(0)
def set_rgb_color(r, g, b):
r_duty = int(r * 1023 / 255)
g_duty = int(g * 1023 / 255)
b_duty = int(b * 1023 / 255)
print(f"Setting RGB values - R:{r_duty} G:{g_duty} B:{b_duty}")
led_r.duty(r_duty)
led_g.duty(g_duty)
led_b.duty(b_duty)
def message_parser(message):
device = None
action = None
message = message.lower()
if 'light' in message:
device = 'light'
elif 'fan' in message:
device = 'fan'
elif 'brightness' in message:
device = 'brightness'
elif any(color in message for color in ['blue', 'red', 'green', 'white', 'purple', 'yellow', 'cyan', 'test']):
device = 'rgb'
elif 'weather' in message:
device = 'weather'
if 'turn on' in message or 'on' in message:
action = 'on'
elif 'turn off' in message or 'off' in message:
action = 'off'
elif 'decrease' in message:
action = 'decrease'
elif "red" in message:
action = "red"
elif "green" in message:
action = "green"
elif "blue" in message:
action = "blue"
elif "white" in message:
action = "white"
elif "purple" in message:
action = "purple"
elif "yellow" in message:
action = "yellow"
elif "cyan" in message:
action = "cyan"
elif "test" in message:
action = "test"
if device and action:
return (device, action)
return 'ERROR'
def command_handler(message):
global last_processed_message
if not message:
return
if last_processed_message != message:
result = message_parser(message)
if result != 'ERROR':
device, action = result
if device == 'light':
if action == 'on':
led.value(1)
print('Turning light on')
elif action == 'off':
led.value(0)
print('Turning light off')
elif device == 'rgb':
if action == 'off':
set_rgb_color(0, 0, 0)
print('Turning RGB LED off')
elif action == 'red':
set_rgb_color(255, 0, 0)
print('Setting color to red')
elif action == 'green':
set_rgb_color(0, 255, 0)
print('Setting color to green')
elif action == 'blue':
set_rgb_color(0, 0, 255)
print('Setting color to blue')
elif action == 'white':
set_rgb_color(255, 255, 255)
print('Setting color to white')
elif action == 'purple':
set_rgb_color(255, 0, 255)
print('Setting color to purple')
elif action == 'yellow':
set_rgb_color(255, 255, 0)
print('Setting color to yellow')
elif action == 'cyan':
set_rgb_color(0, 255, 255)
print('Setting color to cyan')
elif action == 'test':
print('Running color test sequence')
test_colors()
last_processed_message = message
print("LED Control via Console")
print("Available commands:")
print("Regular LED commands:")
print("- turn on light")
print("- turn off light")
print("\nRGB LED commands:")
print("- red")
print("- green")
print("- blue")
print("- white")
print("- purple")
print("- yellow")
print("- cyan")
print("- test")
print("- turn off rgb")
print("\nRunning initial LED test...")
test_colors()
print("Initial test complete. Starting command loop...\n")
while True:
try:
message = input("> ")
if message:
command_handler(message)
except KeyboardInterrupt:
print("\nProgram terminated")
led.value(0)
set_rgb_color(0, 0, 0)
break
time.sleep(0.1)