Brushless | Gearbox Pusher | Select Fire | OLED

Features / Setup:

  • Brushless flywheels
  • Gearbox pusher with single return switch
  • Select fire – Auto, Burst, Semi
  • OLED screen
  • Ammo Counter
  • Single-stage fire trigger with no rev trigger
  • Adjustable ROF (H, M, L)
  • Adjustable Power (30% – 100%)
  • 2 Profiles with quick-access buttons
  • Rotary Encoder for configuration
  • Battery voltage monitor + auto-calibration for 3s and 4s

Typical Blasters

  • Woozi Brushless (Single or dual stage)
  • Rapidstrike
  • Stryfe / Swordfish with auto pusher (e.g. Woody7070 v2

Parts required

  • Shell
  • Motors, flywheels, ESC’s with appropriate tune
  • Gearbox pusher with motor and reset switch. n.b. stock Rapidstrike linkage setup is garbage
  • Trigger switch (stock OK)
  • 2 x buttons for Profile A / B (optional – if not used, only Profile A is available)
  • 3 way switch (either toggle On-Off-On or binary rotary switch)
  • Magazine switch (stock Rapidstrike / Stryfe OK)
  • I2C OLED display 128×64 pixels (not SPI)
  • Rotary encoder with push-button

Caveats

  • On high ROF / 4s, burst mode will likely over-shoot.
  • You will need to calibrate your battery sensor for best performance

Wiring Diagram

Wire it like this

Magazine Switch is located in the magwell to determine when a magazine is dropped.
Pusher Reset Switch is sometimes called the cycle control switch. It’s the switch connected to the pusher
Profile A / Profile B are optional. Profile A will be used by default. These are simple buttons

Source Code

Source Code Tweaks

Battery Calibration:
Change the following in the header:
#define BATTERY_CALFACTOR 0.0
Change 0.0 to any other value to adjust the reported battery voltage up or down by this value. You should keep this as a decimal (e.g. instead of 1 use 1.0)

Motor Speed Limit
Change the following in the header:
#define MOTOR_MAX_SPEED 2000
Change to any number between 1000 and 2000 where 1000 is 0% and 2000 is 100%. This is the hard max motor value in the firmware that is then used for the user-configurable parameters.
N.B. for Ultrasonic flywheels, you should limit to 75 – 80% on 4S packs to avoid flywheel meltdown.

Select Fire Switch Orientation
Change the following in function ProcessButtons()

if( SelectFireAButtonState == BTN_LOW && SelectFireBButtonState == BTN_HIGH  )
  CurrentFireMode = FIRE_MODE_BURST;

else if( SelectFireAButtonState == BTN_HIGH && SelectFireBButtonState == BTN_HIGH )
  CurrentFireMode = FIRE_MODE_SINGLE;

else if( SelectFireAButtonState == BTN_HIGH && SelectFireBButtonState == BTN_LOW && CurrentFireMode != FIRE_MODE_AUTO_LASTSHOT )
  CurrentFireMode = FIRE_MODE_AUTO;

You will need to swap BTN_LOW and BTN_HIGH around for each scenario. Start off by working out which one you want to swap (e.g. if Single and Burst are in the wrong order), swap the BTN_HIGH and BTN_LOW values for each respective condition.