ShadowRC – ShadyRC Fork

Estimated reading time: 4 min

The ShadowRC Control System is an evolution of the Shady RC dEvolution sketch, originally developed by joymonkey, combined with MarcDuino command integration from Shadow MD.

ShadowRC provides complete RC control for R2-D2 style droids using a traditional RC transmitter/receiver while maintaining full MarcDuino integration for dome panels, holoprojectors, and lighting effects.

Key Differences from Shady RC dEvolution

FeatureShady RC dEvolutionShadowRC v1.3
MarcDuino FunctionsBasicFull 89 function codes
Sound ControlVia MarcDuinoDirect MP3 Trigger + MarcDuino parallel
Panel ControlLimitedIndividual dome & body panels
Holo ControlBasicFull control with toggle states
Custom SequencesNone11 custom sequences (79-89)
Knob MappingFixed soundsConfigurable MarcDuino functions
DocumentationMinimalExtensive in-sketch documentation

What Does It Control?

ShadowRC controls all aspects of your droid:

  • Motion: Foot drive (differential/tank style) and dome rotation
  • Sound: Direct MP3 Trigger control with 255 sound slots
  • Dome Panels: Individual or grouped panel control via MarcDuino
  • Body Panels: Full body panel integration (requires MarcDuino Body)
  • Holoprojectors: Filthy HP, R-Series HP, or servo-based holos
  • Logic Displays: Teeces or other MarcDuino-compatible displays
  • Lighting: Magic panel, holo lights, and custom effects
  • Sequences: Pre-programmed sequences like Scream, Leia, Cantina, Disco

Required Components

Main Controller

  • Arduino Mega 2560 or Arduino Mega ADK

RC System

  • Turnigy Evolution RC Transmitter (or compatible)
  • Turnigy TGY-iA6C or iA10B Receiver (iBus protocol)

Motor Controllers

  • Sabertooth 2x32A or 2×25 (foot drive)
  • Syren 10 (dome rotation)

Sound System

  • SparkFun MP3 Trigger
  • Speaker + Amplifier

MarcDuino System (recommended)

  • MarcDuino Dome Master (Arduino 328P based)
  • MarcDuino Body Master (optional, for body panels)
  • Servos for dome/body panels

Optional

  • Teeces Logic Displays
  • Holoprojectors (Filthy HP, R-Series, or servo-based)
  • XBee System (for smartphone app control)

Wiring Diagram

┌─────────────────────────────────────────────────────────────────────────────┐
│                         ARDUINO MEGA 2560                                   │
├─────────────────────────────────────────────────────────────────────────────┤
│                                                                             │
│  TX1 (Pin 18) ──────────────────────────────► MarcDuino Dome RX             │
│                                                   │                         │
│                                                   ├──► Dome Panel Servos    │
│                                                   ├──► Holoprojectors       │
│                                                   └──► Logic Displays       │
│                                                                             │
│  TX2 (Pin 16) ──────────────────────────────► Sabertooth S1                 │
│                         │                         │                         │
│                         │                         └──► Foot Motors (L+R)    │
│                         │                                                   │
│                         └───────────────────► Syren S1                      │
│                                                   │                         │
│                                                   └──► Dome Motor           │
│                                                                             │
│  RX3 (Pin 15) ◄─────────────────────────────── iBus Receiver                │
│                                                   │                         │
│                                                   └──► From TGY-iA6C/iA10B  │
│                                                                             │
│  Pin 11 ────────────────────────────────────► MP3 Trigger RX                │
│                                                   │                         │
│                                                   ├──► SD Card (sounds)     │
│                                                   └──► Amplifier + Speaker  │
│                                                                             │
│  Pin 44 ────────────────────────────────────► Left Foot ESC (PWM)           │
│  Pin 45 ────────────────────────────────────► Right Foot ESC (PWM)          │
│                                                                             │
│  Pin 12 (optional) ─────────────────────────► MarcDuino Body RX             │
│                                                   │                         │
│                                                   └──► Body Panel Servos    │
│                                                                             │
└─────────────────────────────────────────────────────────────────────────────┘

Pin Connections

Arduino Mega PinConnectionNotes
TX1 (Pin 18)MarcDuino Dome RX9600 baud
TX2 (Pin 16)Sabertooth S1 + Syren S19600 baud, active serial
RX3 (Pin 15)iBus Receiver SignalFrom TGY-iA6C/iA10B
Pin 11MP3 Trigger RX9600 baud (check your MP3 Trigger settings)
Pin 44Left Foot MotorPWM signal to ESC
Pin 45Right Foot MotorPWM signal to ESC
Pin 12 (optional)MarcDuino Body RX9600 baud

RC Channel Assignments

ChannelControlFunction
CH1Right Stick XSteering (left/right)
CH2Right Stick YThrottle (forward/reverse)
CH3Left Stick YAutodome frequency / Volume (when knob full CW)
CH4Left Stick XDome rotation (manual)
CH5SwB (3-pos)Drive speed: Slow / Medium / Fast
CH6SwA (2-pos)Drive enable (safety switch) – UP=off, DOWN=on
CH7VrA KnobMarcDuino function selector
CH8SwC (3-pos)MarcDuino trigger – UP=trigger, MID=off, DOWN=alt

MarcDuino Functions Available

ShadowRC includes all 89 standard MarcDuino function codes:

Panel Sequences with Sound (1-14)

CodeFunction
1Close All Panels
2Scream – all panels open
3Wave – one panel at a time
4Fast Wave (smirk) – back and forth
5Wave 2 – open progressively, close one by one
6Cantina – beep with marching ants
7Faint / Short Circuit
8Cantina Dance – orchestral, rhythmic
9Leia Message
10Disco
11Quiet Mode Reset
12Full Awake Reset
13Mid Awake Reset
14Full Awake+ Reset

Panel Sequences without Sound (15-21)

CodeFunction
15Scream – NO SOUND
16Wave – NO SOUND
17Fast Wave – NO SOUND
18Wave 2 – NO SOUND
19Marching Ants – NO SOUND
20Faint – NO SOUND
21Cantina Dance – NO SOUND

Holoprojector Control (22-25)

CodeFunction
22Random Holo Movement ON (all)
23Holo Lights Toggle (on/off)
24Holo Lights OFF
25Holo Reset (movement off, lights off)

Volume Control (26-29)

CodeFunction
26Volume Up
27Volume Down
28Volume Maximum
29Volume Medium

Dome Panel Control (30-53)

CodeFunction
30Open ALL Dome Panels
31Open TOP Dome Panels
32Open BOTTOM Dome Panels
33Close ALL Dome Panels
34-53Open/Close individual panels 1-10 (even=open, odd=close)

Body Panel Control (54-75)

Requires MarcDuino Body Master

CodeFunction
54Open ALL Body Panels
55Close ALL Body Panels
56-75Open/Close individual panels 1-10 (even=open, odd=close)

Magic Panel (76-78)

CodeFunction
76Magic Panel ON
77Magic Panel OFF
78Magic Panel Flicker (10 seconds)

Custom Sequences (79-89)

CodeFunction
79Spook Wave (dome + body)
80Wave Bye
81Utility Arms Open then Close
82Full Body Show
83Gripper Arm
84Interface Tool
85Ping Pong Body Doors
86Star Wars Disco
87Star Trek Disco
88Play Next Song
89Play Previous Song

Default Knob Function Mapping

The VrA knob (CH7) selects which function is triggered when SwC (CH8) is pushed UP:

Knob PositionFunction
Full CCWQuiet Mode Reset (11)
Position 2Full Awake (12)
Position 3Wave (3)
Position 4Scream (2)
Position 5Cantina (6)
Position 6Leia Message (9)
Position 7Disco (10)
Position 8Short Circuit (7)
Position 9Open All Panels (30)
Position 10Close All Panels (1)
Position 11Holo Toggle (23)
Position 12Wave Bye (80)
Full CWRandom Sound (0)

You can customize this mapping by editing the knobFunctions[] array in the sketch.

Configuration Options

All settings are configurable at the top of the sketch (Section 1):

// Enable/Disable Features
#define DEBUG 1                     // Serial debug output (0=off, 1=on)
#define MARCDUINO_DOME_ENABLED 1    // MarcDuino Dome (0=off, 1=on)
#define MARCDUINO_BODY_ENABLED 0    // MarcDuino Body (0=off, 1=on)
#define MP3_TRIGGER_ENABLED 1       // MP3 Trigger (0=off, 1=on)

// Motor Controller Settings
#define FOOT_CONTROLLER 1           // 0=Sabertooth Serial, 1=PWM Mode
#define SYREN_ADDR 129              // Syren serial address
#define SABERTOOTH_ADDR 128         // Sabertooth serial address

// Drive Settings
byte driveSpeeds[3] = {30, 80, 127};  // Slow, Medium, Fast (0-127)
#define TURN_SPEED 50                  // Turn sensitivity (40-75 recommended)
#define JOYSTICK_DEAD_ZONE 10          // Stick center dead zone

// Sound Settings
byte volume_level = 50;               // Initial volume (0=loud, 255=silent)
#define MIN_VOLUME 100                // Quietest setting
#define MAX_VOLUME 0                  // Loudest setting

// Autodome Settings
#define AUTODOME_MIN_SPEED 15         // Minimum rotation speed
#define AUTODOME_MAX_SPEED 50         // Maximum rotation speed
#define AUTODOME_CHATTINESS 6         // Sound frequency (1-10)

Motor Controller DIP Switch Settings

Sabertooth 2×32/2×25 (Foot Drive)

DIP Switches: 1=DOWN, 2=DOWN, 3=UP, 4=UP, 5=UP, 6=UP
Configures: Packetized Serial, Address 128, 9600 baud

Syren 10 (Dome Rotation)

DIP Switches: 1=DOWN, 2=DOWN, 3=UP, 4=DOWN, 5=UP, 6=UP
Configures: Packetized Serial, Address 129, 9600 baud
Note: Some users add 10K resistor between S1 and GND for stability

Failsafe Setup (IMPORTANT!)

Configure failsafe on your Turnigy Evolution transmitter:

  1. Go to Settings → Failsafe
  2. Enable Failsafe for Channels 1-4
  3. Set all channels to go to 0% (1000μs) on signal loss

This ensures the droid stops moving if the RC connection is lost.

MP3 File Naming

Sound files on the MP3 Trigger SD card should use 3-digit prefixes:

001_happy_beep.mp3
002_sad_beep.mp3
003_scream.mp3
007_short_circuit.mp3
009_leia_message.mp3
010_disco.mp3
...
255_startup.mp3

Only the first 3 digits matter to the MP3 Trigger.

Required Libraries

Install these libraries via Arduino Library Manager or manually:

  1. IBusBM – iBus protocol for Flysky/Turnigy receivers
  • https://github.com/bmellink/IBusBM
  1. Sabertooth – Dimension Engineering motor controller library
  • https://www.dimensionengineering.com/software/SabertoothArduinoLibraries.zip

Links

Original Shady RC dEvolution

MarcDuino Information

Credits

joymonkey – Original Shady RC dEvolution sketch

vint43 – Shadow MD AstroCan MarcDuino integration

Tim Ebel (Eebel) – Custom sequences (79-89)

BigHappyDude – Differential drive mixing algorithm

Tags:
Was this article helpful?
Dislike 0 1 of 1 found this article helpful.
Views: 1745
Previous: Turnigy Evolution
Next: Shady RC dEvolution