Running Magic Morse on an Atmel-based Arduino


Magic Morse is a mathematical algorithm originally written by Ray Burnette to simplify sending and receiving Morse Code signals.

First implemented in PIC, the algorithm has since been fully rewritten and updated to run as a training program on a number of Atmel-based Arduino boards, including the Uno (ATmega328), Nano (ATmega328) and Pro Mini (ATmega168).

“Essentially, the Magic Morse algorithm assigns a weight to dits and dahs as the stream is received,” Burnette explained in a recent blog post.

“When a word space or longer is encountered, the algorithm instantly has a calculated pointer into an array stored in EEPROM and the decoded character is returned.”

According to Burnette, the algorithm is designed to generate a number between 1 and 255 for every Morse Code combination decoded.

“For every DAH identified in the stream, a binary weight is applied based upon the position of the DAH… that is, first, second, third, fourth, or fifth element,” he continued.

“DITs are not weighted but are counted with DAHs to achieve a total element count of DITs + DAHs in the character. The DAH-weights are bits 3-7 in a calculated index and the elements number make up bits 0-2.”

Interested in learning more about running Magic Morse on an Atmel-based Arduino? You can check out Burnette’s blog post here and read more about algorithm implementation here.

3 thoughts on “Running Magic Morse on an Atmel-based Arduino


  1. Pingback: The Victorian Internet | On The Web

  2. Pingback: Supercomputing with the Parallella board | On The Web

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s