Arduino Morse code button project

Photo of author

By Jackson Taylor

Creating a Morse code button project using an Arduino is a fantastic way to dive into the world of programming and electronics. Whether you’re a beginner or an experienced hobbyist, this project offers a great opportunity to learn about signals, communication, and how buttons can interact with an Arduino board to send messages in Morse code. In this guide, we’ll walk through the entire process of setting up and programming a simple Morse code button system.

What is Morse Code?

Morse code is a system of encoding text using sequences of dots and dashes (or short and long signals) to represent letters, numbers, and punctuation. This code was used extensively for long-distance communication, especially in the early 20th century. In the context of this project, we’ll use an Arduino to send Morse code messages via a button press.

Why Use Arduino for Morse Code?

Arduino is an open-source electronics platform that is perfect for beginners and experts alike. It provides easy access to a wide variety of sensors, buttons, and other devices, making it an ideal choice for projects like the Morse code button. By using Arduino, we can program the microcontroller to recognize button presses and convert them into Morse code, offering a simple yet effective communication method.

Required Components for the Project

Before you begin the project, you will need a few essential components:

1. Arduino Board

The Arduino board is the brain of the project. A common choice is the Arduino Uno, but any Arduino board should work. It handles the input from the button and outputs the Morse code signals.

2. Push Button

A push button will act as the input device in this project. When pressed, it will signal the Arduino to send a corresponding Morse code message.

3. LED or Buzzer (Optional)

For visual or audible feedback, you can use an LED or buzzer. The LED will blink the Morse code, while the buzzer will emit a sound for each dot and dash.
See also
Arduino line follower robot using color sensors

4. Jumper Wires

Jumper wires will help you connect all the components together. These are necessary for ensuring proper communication between the button, Arduino, and output devices.

5. Breadboard (Optional)

A breadboard is a great tool for prototyping the circuit. It allows you to make temporary connections without soldering, making it easier to adjust your design.

Wiring the Components

Before diving into the programming, you first need to wire the components together. Follow these simple steps:

1. Connect the Button to the Arduino

  • Insert the push button into the breadboard.
  • Connect one pin of the button to a digital input pin on the Arduino (usually pin 2).
  • The other pin of the button goes to the ground (GND) pin on the Arduino.
This wiring allows the Arduino to detect when the button is pressed or released.

2. Set Up the LED or Buzzer

  • If you are using an LED, connect the positive leg (longer leg) to a digital output pin on the Arduino (e.g., pin 13).
  • Connect the negative leg (shorter leg) to ground through a resistor (typically 220 ohms).
For a buzzer, connect the positive leg to a digital output pin and the negative leg to the ground.

3. Double-Check Your Connections

Make sure all components are securely connected. This will prevent any issues when you start programming the Arduino.

Programming the Arduino

Now, it’s time to dive into the programming part of the project. We’ll write a simple Arduino script to detect button presses and convert them into Morse code. Here’s a step-by-step guide to writing the code:

1. Define Morse Code Mapping

We start by creating a function that converts each character of the alphabet into Morse code. In Morse code, letters are represented by a combination of dots (.) and dashes (-).
cpp
const String morseCode[] = { “.-“, “-…”, “-.-.”, “-..”, “.”, “..-.”, “–.”, “….”, “..”, “.—“, “-.-“, “.-..”, “–“, “-.”, “—“, “.–.”, “–.-“, “.-.”, “…”, “-“, “..-“, “…-“, “.–“, “-..-“, “-.–“, “–..” };
This array stores the Morse code for each letter of the alphabet. You can expand it to include numbers and punctuation if desired.
See also
Arduino button matrix

2. Set Up Pin Modes

Next, you’ll need to define the input and output pins in your setup function. This is where you specify the button pin and LED/buzzer pins.
cpp
const int buttonPin = 2; const int ledPin = 13; void setup() { pinMode(buttonPin, INPUT); pinMode(ledPin, OUTPUT); Serial.begin(9600); }
This code initializes the button as an input and the LED as an output. The Serial.begin(9600) command is for debugging and monitoring via the serial port.

3. Detect Button Presses

In the loop() function, you’ll check if the button is pressed and determine whether it represents a dot or a dash. A short press corresponds to a dot, while a longer press corresponds to a dash.
cpp
void loop() { if (digitalRead(buttonPin) == HIGH) { unsigned long pressTime = millis(); while (digitalRead(buttonPin) == HIGH); // Wait for the button to be released pressTime = millis() – pressTime; // Calculate the press duration if (pressTime < 1000) { // Short press for a dot morseDot(); } else { // Long press for a dash morseDash(); } } }
This part of the code detects whether the button is pressed for a short or long duration and calls the corresponding function to generate a dot or dash.

4. Display Morse Code

Finally, create functions to display the Morse code either with an LED or a buzzer.
cpp
void morseDot() { digitalWrite(ledPin, HIGH); // Turn on the LED delay(200); // Keep it on for 200ms digitalWrite(ledPin, LOW); // Turn off the LED delay(200); // Wait for 200ms before the next symbol } void morseDash() { digitalWrite(ledPin, HIGH); // Turn on the LED delay(600); // Keep it on for 600ms digitalWrite(ledPin, LOW); // Turn off the LED delay(200); // Wait for 200ms before the next symbol }
These functions turn the LED on and off to represent dots and dashes. The delay() function controls the timing for each symbol.

Testing the Morse Code Button

Once your wiring is complete and the code is uploaded to the Arduino, it’s time to test the system. Press the button to send Morse code. The LED should blink in Morse code for each button press. Try pressing the button for different lengths of time to see the difference between dots and dashes.
See also
Controlling a Stepper Motor with Arduino: A Code Tutorial

Conclusion

The Arduino Morse code button project is a simple yet powerful way to learn about both hardware and software. It helps you understand how input devices like buttons can be used to communicate with an Arduino, as well as how to program the board to convert button presses into Morse code. This project can also be expanded with more features, such as sending entire messages or using a display to show the decoded Morse code. Whether you’re a beginner or an experienced maker, this project offers endless possibilities for creativity and learning.