Skip to content

Commit da0a5f3

Browse files
mirkokurtstefanotorneo
authored andcommitted
Update example
1 parent f847267 commit da0a5f3

File tree

2 files changed

+35
-25
lines changed

2 files changed

+35
-25
lines changed

examples/color-your-leds/python/main.py

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,19 +6,33 @@
66

77
ui = WebUI()
88

9-
def on_set_color(ledid: int, message: dict):
10-
print(f"Received set_color message: {message}")
9+
def on_set_color(id, message: dict):
10+
ledid = message.get("led")
11+
rgb_color = message.get("color")
12+
# Led 1 and 2 are controlled by directly (MPU), while Led 3 and 4 are controlled via Bridge (MCU)
1113
try:
12-
color = message.get("color")
13-
Leds.set_led_color(ledid, color)
14+
if ledid not in (1, 2, 3, 4):
15+
raise ValueError(f"Unknown led '{ledid}'")
16+
17+
if not rgb_color or not all(k in rgb_color for k in ("r", "g", "b")):
18+
raise ValueError("Color must be an object with 'r', 'g', 'b' keys")
19+
20+
match ledid:
21+
case 1:
22+
Leds.set_led1_color(rgb_color["r"] != 0, rgb_color["g"] != 0, rgb_color["b"] != 0)
23+
case 2:
24+
Leds.set_led2_color(rgb_color["r"] != 0, rgb_color["g"] != 0, rgb_color["b"] != 0)
25+
case 3:
26+
Bridge.call("set_led3_color", rgb_color["r"], rgb_color["g"], rgb_color["b"])
27+
case 4:
28+
Bridge.call("set_led4_color", rgb_color["r"] != 0, rgb_color["g"] != 0, rgb_color["b"] != 0)
29+
1430
except Exception as e:
1531
ui.send_message("error", f"LED color set error: {e}")
1632

17-
#Initialize LEDs to off state
33+
#Initialize LEDs to off state (only 1 and 2 here, 3 and 4 will be set in MCU setup)
1834
on_set_color(1, {"led": 1, "color": {"r": 0, "g": 0, "b": 0}})
1935
on_set_color(2, {"led": 2, "color": {"r": 0, "g": 0, "b": 0}})
20-
on_set_color(3, {"led": 3, "color": {"r": 0, "g": 0, "b": 0}})
21-
on_set_color(4, {"led": 4, "color": {"r": 0, "g": 0, "b": 0}})
2236

2337
ui.on_message("set_color", on_set_color)
2438

examples/color-your-leds/sketch/sketch.ino

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -4,33 +4,29 @@
44

55
#include <Arduino_RouterBridge.h>
66

7-
void setRGB(int ledRPin, int ledGPin, int ledBPin, int r, int g, int b) {
8-
analogWrite(ledRPin, r);
9-
analogWrite(ledGPin, g);
10-
analogWrite(ledBPin, b);
7+
// Led 3 can be controlled via PWM pins
8+
void set_led3_color(int r, int g, int b) {
9+
analogWrite(LED3_R, r);
10+
analogWrite(LED3_G, g);
11+
analogWrite(LED3_B, b);
1112
}
1213

13-
void setColor(int ledIndex, int r, int g, int b) {
14-
switch (ledIndex) {
15-
case 3:
16-
setRGB(LED3_R, LED3_G, LED3_B, r, g, b);
17-
break;
18-
case 4:
19-
setRGB(LED4_R, LED4_G, LED4_B, r, g, b);
20-
break;
21-
default:
22-
break;
23-
}
14+
// Led 4 is a simple ON/OFF LED for each color channel, HIGH = OFF, LOW = ON
15+
void set_led4_color(bool r, bool g, bool b) {
16+
digitalWrite(LED_BUILTIN + 3, r ? LOW : HIGH);
17+
digitalWrite(LED_BUILTIN + 4, g ? LOW : HIGH);
18+
digitalWrite(LED_BUILTIN + 5, b ? LOW : HIGH);
2419
}
2520

2621
void setup()
2722
{
28-
setColor(3, 0, 0, 0); // Initialize LED 3 to off
29-
setColor(4, 0, 0, 0); // Initialize LED 4 to off
23+
set_led3_color(0, 0, 0);
24+
set_led4_color(false, false, false);
3025

3126
Bridge.begin();
3227

33-
Bridge.provide("set_led_color", setColor);
28+
Bridge.provide("set_led3_color", set_led3_color);
29+
Bridge.provide("set_led4_color", set_led4_color);
3430
}
3531

3632
void loop() {}

0 commit comments

Comments
 (0)