How many leds are bundled in a single LED? If there are 3 RGB leds, then 3 colors.
Have you tried to blink the leds in sequence?
LED1_R/G/B, ..., LED3_R/G/B
where:
LED1_R/G/B and LED2_R/G/B are driven by MPU and
LED3_R/G/B and LED3_R/G/B are driven by MCU.
Hints:
1. MPU finishes blinking LED1_R/G/B and LED2_R/G/B
2. MPU instructs MCU to blink LED2_R/G/B and LED3_R/G/B by RPC call
3. MCU instructs MPU to blink LED1_R/G/B and LED2_R/G/B by RPC call
4. Repeat
Application:
Working Principle: MPU blinks LED1_R/G/B, L2_R/G/B and then instructs the MCU to blink is LED3_R/G/B, LED4_R/G/B. MCU finishes blinking and then instructs MPU to blink its leds. The cycle repeats this way. The commands excage takes place via Brdge.call()/Bridge.provide() functions over the Router Bridge.
Script
import time
from arduino.app_utils import App, Leds, Bridge
def loop():
# Turn on the LED red segment (1, 0, 0)
Leds.set_led1_color(1,0,0)
time.sleep(1)
Leds.set_led1_color(0,0,0)
time.sleep(1)
# Turn on the green LED segment (0, 1, 0)
Leds.set_led1_color(0,1,0)
time.sleep(1)
Leds.set_led1_color(0,0,0)
time.sleep(1)
# Turn on the blue LED segment (0, 0, 1)
Leds.set_led1_color(0,0,1)
time.sleep(1)
Leds.set_led1_color(0,0,0)
time.sleep(1)
#---------------------------------
# Turn on the LED red segment (1, 0, 0)
Leds.set_led2_color(1,0,0)
time.sleep(1)
Leds.set_led2_color(0,0,0)
time.sleep(1)
# Turn on the LED green segment (0, 1, 0)
Leds.set_led2_color(0,1,0)
time.sleep(1)
Leds.set_led2_color(0,0,0)
time.sleep(1)
# Turn on the blue LED segment (0, 0, 1)
Leds.set_led2_color(0,0,1)
time.sleep(1)
Leds.set_led2_color(0,0,0)
time.sleep(1)
#----------------------------------------
while Bridge.call("start_blink", "blinkled34",timeout=20) != "blink12":
pass # Do nothing, immediately loop back and check again
App.run(user_loop=loop)
sketch:
#include<Arduino_RouterBridge.h>
String startBlink(String str)
{
if(str == "blinkled34")
{
digitalWrite(LED3_R, LOW);
delay(1000);
digitalWrite(LED3_R, HIGH);
delay(1000);
digitalWrite(LED3_G, LOW);
delay(1000);
digitalWrite(LED3_G, HIGH);
delay(1000);
digitalWrite(LED3_B, LOW);
delay(1000);
digitalWrite(LED3_B, HIGH);
delay(1000);
//-------------------------------
digitalWrite(LED4_R, LOW);
delay(1000);
digitalWrite(LED4_R, HIGH);
delay(1000);
digitalWrite(LED4_G, LOW);
delay(1000);
digitalWrite(LED4_G, HIGH);
delay(1000);
digitalWrite(LED4_B, LOW);
delay(1000);
digitalWrite(LED4_B, HIGH);
delay(1000);
//-------------------------------
return "blink12";
}
}
void setup()
{
Bridge.begin();
delay(5000);
pinMode(LED3_R, OUTPUT);
pinMode(LED3_G, OUTPUT);
pinMode(LED3_B, OUTPUT);
pinMode(LED4_R, OUTPUT);
pinMode(LED4_G, OUTPUT);
pinMode(LED4_B, OUTPUT);
//------------------------
digitalWrite(LED3_R, HIGH);
digitalWrite(LED3_G, HIGH);
digitalWrite(LED3_B, HIGH);
digitalWrite(LED4_R, HIGH);
digitalWrite(LED4_G, HIGH);
digitalWrite(LED4_B, HIGH);
Bridge.provide("start_blink", startBlink);
}
void loop()
{
}