Arduino Morse Code Station

Morse code with an ATMega328P and OLED display.

Similar projects worth following
This Arduino project is a Morse Code station. Morse Code is a communication method that encodes characters as a series of dots and dashes. My circuit uses a Piezo buzzer to make the dots and dashes audible, an ATMega328P to decode the button presses and an OLED to display the entered characters.

Using the button, you tap in the Morse code, the buzzer sounds with each press of the button and the OLED display shows the decoded message.

Give one short tap for a dot and a longer tap (at least twice as long) for a dash. As soon as you enter a recognized code, the letter, or number it represents is displayed. If you pause for approximately 1.5 seconds between taps, then the display will insert a space thus allowing you to enter words. If a code is unrecognized a '?' character is displayed.

The code uses a timer to time the periods between "dots" and "dashes". If the button press is shorter than a threshold value then the program generates a "dot", otherwise it generates a "dash". If the timing is not to your liking then alter the time threshold value in the source code.

See the files section to download the Arduino source code.


Arduino source code for the Morse Code Station

ino - 9.96 kB - 09/30/2020 at 19:55


  • 1 × ATMega 328P Microcontroller
  • 1 × Piezo Buzzer
  • 1 × Graphic OLED 128x64
  • 2 × 220 Ohm resistor
  • 1 × 10K Ohm resistor

View all 11 components

  • 1
    Building the breadboard and/or PCB

    Rather than repeating the build instructions here I have full instructions for building the breadboard version, or the PCB version on my Arduino Project Hub page.

View all instructions

Enjoy this project?



Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates