This is a modified Shadow sketch to work with the Penumbra controller.
- https://github.com/reeltwo/Reeltwo
- https://github.com/rimim/espsoftwareserial
- https://github.com/reeltwo/USB_Host_Shield_2.0
- https://github.com/DFRobot/DFRobotDFPlayerMini
A web-based installer for the latest firmware can be found here: https://reeltwo.github.io/Penumbra-Installer/
The firmware should build with esp32 board package 1.0.6 or 2.0.5. For ESP32S2 support 2.0.5 is required.
cd ~/Documents/Arduino
curl -o Arduino.mk https://raw.githubusercontent.com/reeltwo/Arduino/master/Arduino.mk
# Fetch repository
git clone https://github.com/reeltwo/PenumbraShadowMD
# Enter directory
cd PenumbraShadowMD
# Build firmware
make
cd ~/Arduino
wget https://raw.githubusercontent.com/reeltwo/Arduino/master/Arduino.mk
# Fetch repository
git clone https://github.com/reeltwo/PenumbraShadowMD
# Enter directory
cd PenumbraShadowMD
# Build firmware
make
Restart the controller.
#SMRESTART
Delete all preferences, reset button triggers to sketch defaults, unpair controllers.
#SMZERO
List all button triggers and associated commands.
#SMLIST
Set the volume to the specified value.
#SMVOLUME500
Set the startup sound to the specified file number.
#SMSTARTUP255
Set the minimum delay before playing the next random sound.
#SMRANDMIN600
Set the maximum delay before playing the next random sound.
#SMRANDMAX10000
Disable random sound playback.
#SMRAND0
Enable random sound playback.
#SMRAND1
Set the button trigger (trigger) to the specified action (action).
#SMSET btnUP_MD $83
To send direct Marcduino commands prefix the command with " and separate with ,
#SMSET btnUP_MD "BM:OP03,"BM*ON01
#SMSET btnUP_CIRCLE_MD ":OP03,"BM*ON01
" followed by BM is sent to body Marcduino
Play any action associated with the specified trigger
#SMPLAY btnUP_MD
Reset command for specified trigger to sketch default.
#SMDEL btnUP_MD
Set the sound output module to of the following:
- 0: Disabled
- 1: MP3 Trigger
- 2: DFMini Player
- 3: HCR Vocalizer
#SMSOUND 3
Display the current drive configuration
#SMCONFIG
Set the normal drive speed: set this to whatever speeds works for you. 0-stop, 127-full speed. Default is 70.
#SMNORMALSPEED70
Set the over throttle drive speed: set this to whatever speeds works for you. 0-stop, 127-full speed. Default is 100.
#SMMAXSPEED100
Set the drive turn speed. The higher this number the faster it will spin in place, lower - the easier to control. Recommend beginner: 40 to 50, experienced: 50+, I like 75. Default is 50.
#SMTURNSPEED50
Set the dome drive top speed. Default is 100.
#SMDOMESPEED100
Set drive speed ramping. The lower this number the longer it will take to speedup or slow down. Default is 1.
#SMRAMPING1
Set the foot controller joystick deadband. Use the lowest number with no drift. Default is 15
#SMFOOTDB15
Set the dome controller joystick deadband. Use the lowest number with no drift. Default is 10
#SMDOMEDB15
Set the drive motor controller deadband. Use the lowest number with no drift. Default is 10
#SMDRIVEDB10
Set the turn direction inversion. Default is 0.
#SMINVERT0
Set the dome speed used when dome automation is active. Default is 70.
#SMAUTOSPEED70
Set the number of milliseconds for dome to complete 360 turn at #SMAUTOSPEED. Default is 2500.
#SMAUTOTIME2500
Sets the baud rate of the packet serial connection to the motor controller. Default is 9600.
#SMMOTORBAUD9600
Sets the baud rate of the command seriall connection. Default is 9600.
#SMMARCBAUD9600