Back to the CV

Morse Trainer

Interactive Morse code trainer firmware for an ESP32-C3 board with an iambic paddle, buzzer sidetone, a small colour display and a rotary encoder.

The trainer on the bench with the paddle
Status
In development

What it does

  • Iambic paddle input with straight key, Iambic A and Iambic B modes, speed in WPM and Farnsworth spacing.
  • Live Morse decoder screen.
  • Buzzer sidetone, a status LED and a live status display on a 240×135 colour screen.
  • Menus driven by a rotary encoder, with settings kept in flash. Next: lessons and scoring.

How it is built

  • PlatformIO and the Arduino framework on an M5Stamp-C3 (ESP32-C3, RISC-V).
  • One class per peripheral, each with begin() and update() and no delay(): state machines on millis() keep input responsive.
  • Collaborators are passed through constructors, with no globals.
  • Pure logic (Morse codec, navigation, menus) is unit tested with Unity.
Decoder screen
Status display

Technologies

  • C++
  • Arduino
  • PlatformIO
  • ESP32-C3
  • Unity