Skip to content

dd6ds/paddle_decoder_cross_platform

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

15 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐ŸŽน Morse Code Paddle Decoder - Cross-Platform

Real-time Morse code decoder with beautiful GUI

โœ… Works on Linux, Windows, and macOS


๐ŸŒŸ Features

  • Beautiful GUI with adjustable WPM (5-40) and frequency (300-1000 Hz)
  • Real-time decoding of paddle inputs via MIDI
  • Audio feedback with adjustable tone
  • Visual indicators showing paddle status
  • Cross-platform - runs on Linux, Windows, and macOS
  • Full Morse code support - all letters, numbers, and punctuation

Debian Linux / Linux Mint

/etc/udev/rules.d/49-digispark.rules

# Digispark ATtiny85
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0753", MODE:="0666"
KERNEL=="ttyACM*", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0753", MODE:="0666", ENV{ID_MM_DEVICE_IGNORE}="1"

# Digispark ATtiny167
SUBSYSTEMS=="usb", ATTRS{idVendor}=="16d0", ATTRS{idProduct}=="0753", MODE:="0666"

๐Ÿ“ฆ Quick Start by Platform

๐Ÿง Linux

See: BUILD_LINUX.md

๐ŸชŸ Windows

See: BUILD_WINDOWS.md

๐ŸŽ macOS

See: BUILD_MACOS.md


๐Ÿ”Œ Hardware Setup (All Platforms)

Required Hardware:

  • ATtiny85 Digispark board
  • Iambic paddle or straight key
  • USB cable

Wiring:

ATtiny85 Pin 2 (P2)  โ†’  LEFT paddle (Dit)
ATtiny85 Pin 0 (P0)  โ†’  RIGHT paddle (Dah)
ATtiny85 GND         โ†’  Paddle common ground

Programming the ATtiny85:

  1. Install Arduino IDE (available for all platforms)
  2. Add Digispark board support:
    • File โ†’ Preferences โ†’ Additional Board Manager URLs
    • Add: [http://digistump.com/package_digistump_index.json](https://raw.githubusercontent.com/digistump/arduino-boards-index/master/package_digistump_index.json)
  3. Tools โ†’ Board โ†’ Board Manager โ†’ Install "Digistump AVR Boards"
  4. Install DigiMIDI library (Sketch โ†’ Include Library โ†’ Manage Libraries) https://github.com/heartscrytech/DigisparkMIDI
  5. Open paddle_decoder.ino
  6. Tools โ†’ Board โ†’ Digispark (Default - 16.5mhz)
  7. Sketch โ†’ Upload (plug in Digispark when prompted)

๐Ÿš€ Building and Running

All Platforms - General Steps:

  1. Install Rust (if not installed):

    # Visit https://rustup.rs and follow instructions for your platform
  2. Install platform-specific dependencies (see platform guides above)

  3. Build the application:

    cd paddle_decoder_cross_platform
    cargo build --release
  4. Run it:

    cargo run --release

๐ŸŽฎ Using the GUI

Visual Interface:

Main Interface: Paddle Decoder GUI - Main View

In Action: Paddle Decoder GUI - Decoding

Controls:

  • Drag WPM slider - Adjust speed (5-40 WPM)
  • Drag Frequency slider - Change tone (300-1000 Hz)
  • Click "Add Space" - Insert space in decoded text
  • Click "Clear Text" - Reset decoded text

Visual Feedback:

  • ๐Ÿ”ด RED - Paddle currently pressed
  • โšช GRAY - Paddle released
  • ๐Ÿ”ต BLUE - Current sequence (dots/dashes)
  • ๐ŸŸข GREEN - Decoded text

โฑ๏ธ Timing Information

At 20 WPM:

  • Dit: 60ms
  • Dah: 180ms (3ร— dit)
  • Letter gap: 300ms (5ร— dit) - triggers character decode
  • Word gap: 420ms (7ร— dit)

The decoder waits 300ms after your last paddle press to decode the character. This gives you comfortable timing between elements!


๐Ÿ”ง Troubleshooting

Common Issues (All Platforms):

No MIDI device found:

  • Check Digispark is plugged in
  • Verify LED blinks 5 times on startup
  • Check if paddle_decoder.ino is uploaded

No sound:

  • Check system volume
  • Test with other audio applications
  • Verify audio output device is selected

Characters decoding wrong:

  • Timing issue - try adjusting WPM slider
  • Make sure to pause 300ms between letters

Platform-Specific Issues:

See platform-specific build guides:


๐Ÿ“š Morse Code Reference

Letters:

A .-    J .---   S ...
B -...  K -.-    T -
C -.-.  L .-..   U ..-
D -..   M --     V ...-
E .     N -.     W .--
F ..-.  O ---    X -..-
G --.   P .--.   Y -.--
H ....  Q --.-   Z --..
I ..    R .-.

Numbers:

0 -----    5 .....
1 .----    6 -....
2 ..---    7 --...
3 ...--    8 ---..
4 ....-    9 ----.

Punctuation:

.  .-.-.-   ?  ..--..
,  --..--   !  -.-.--
/  -..-.    @  .--.-.

Prosigns (Special Sequences):

<BK> -..-.-   Break (pause in transmission)
<AR> .-.-.    End of message
<BT> -...-    Break text / new paragraph (same as "=")
<SK> ...-.-   End of contact / Silent Key

Note: Prosigns are sent without gaps between the elements (as one continuous sequence).
Note: <BT> and = share the same Morse pattern (-...-), so the decoder shows = for this pattern.


๐ŸŽฏ Tips for Best Results

  1. Start slow - Begin at 15 WPM and work your way up
  2. Consistent timing - Try to maintain steady rhythm
  3. Clear pauses - Wait full 300ms between letters
  4. Watch indicators - Visual feedback helps build muscle memory
  5. Practice common letters - Start with E, T, I, A, N, M

๐Ÿ“ Project Structure

paddle_decoder_cross_platform/
โ”œโ”€โ”€ Cargo.toml              # Rust project configuration
โ”œโ”€โ”€ paddle_decoder.ino      # ATtiny85 firmware
โ”œโ”€โ”€ src/
โ”‚   โ””โ”€โ”€ main.rs            # Main application
โ”œโ”€โ”€ README.md              # This file
โ”œโ”€โ”€ BUILD_LINUX.md         # Linux build guide
โ”œโ”€โ”€ BUILD_WINDOWS.md       # Windows build guide
โ””โ”€โ”€ BUILD_MACOS.md         # macOS build guide

๐Ÿค Contributing

This is an open-source project for the amateur radio community. Feel free to:

  • Report bugs
  • Suggest features
  • Submit pull requests
  • Share your improvements

๐Ÿ“œ License

Free for amateur radio and educational use.


๐Ÿ†˜ Support

Having issues?

  1. Check the platform-specific build guide
  2. Review troubleshooting section above
  3. Verify hardware connections
  4. Test with provided diagnostics

73! ๐Ÿ“ป

Happy decoding!

Built with โค๏ธ for the amateur radio community

About

Need Attiny85 and a Morsepaddle to Train to Morse

Resources

Stars

Watchers

Forks

Packages

No packages published