Skip to content

Instantly share code, notes, and snippets.

@jclement
Last active December 14, 2015 04:59
Show Gist options
  • Select an option

  • Save jclement/5032571 to your computer and use it in GitHub Desktop.

Select an option

Save jclement/5032571 to your computer and use it in GitHub Desktop.
Blink a message in Morse Code with an Arduino
/*
************************************************************************
Blink out a message in morse code
************************************************************************
*/
const int led = 13;
const char* message = "HELLO WORLD";
const int letter_unit_delay = 500;
void setup() {
pinMode(led, OUTPUT);
}
void dit() {
digitalWrite(led, HIGH);
delay(letter_unit_delay);
digitalWrite(led, LOW);
delay(letter_unit_delay);
}
void daw() {
digitalWrite(led, HIGH);
delay(letter_unit_delay * 3);
digitalWrite(led, LOW);
delay(letter_unit_delay);
}
void blink_letter(char ch) {
switch (ch) {
case 'A': dit(); daw(); break;
case 'B': daw(); dit(); dit(); dit(); break;
case 'C': daw(); dit(); daw(); dit(); break;
case 'D': daw(); dit(); dit(); break;
case 'E': dit(); break;
case 'F': dit(); dit(); daw(); dit(); break;
case 'G': daw(); daw(); dit(); break;
case 'H': dit(); dit(); dit(); dit(); break;
case 'I': dit(); dit(); break;
case 'J': dit(); daw(); daw(); daw(); break;
case 'K': daw(); dit(); daw(); break;
case 'L': dit(); daw(); dit(); dit(); break;
case 'M': daw(); daw(); break;
case 'N': daw(); dit(); break;
case 'O': daw(); daw(); daw(); break;
case 'P': dit(); daw(); daw(); dit(); break;
case 'Q': daw(); daw(); dit(); daw(); break;
case 'R': dit(); daw(); dit(); break;
case 'S': dit(); dit(); dit(); break;
case 'T': daw(); break;
case 'U': dit(); dit(); daw(); break;
case 'V': dit(); dit(); dit(); daw(); break;
case 'W': dit(); daw(); daw(); break;
case 'X': daw(); dit(); dit(); daw(); break;
case 'Y': daw(); dit(); daw(); daw(); break;
case 'Z': daw(); daw(); dit(); dit(); break;
case '1': dit(); daw(); daw(); daw(); daw(); break;
case '2': dit(); dit(); daw(); daw(); daw(); break;
case '3': dit(); dit(); dit(); daw(); daw(); break;
case '4': dit(); dit(); dit(); dit(); daw(); break;
case '5': dit(); dit(); dit(); dit(); dit(); break;
case '6': daw(); dit(); dit(); dit(); dit(); break;
case '7': daw(); daw(); dit(); dit(); dit(); break;
case '8': daw(); daw(); daw(); dit(); dit();break;
case '9': daw(); daw(); daw(); daw(); dit(); break;
case '0': daw(); daw(); daw(); daw(); daw(); break;
case ' ': delay(letter_unit_delay * 4); break;
}
delay(letter_unit_delay * 3);
}
// this loop does a single message through the message
int pos = 0;
void loop() {
if (pos < strlen(message)) {
// Grab the next character and blink it out
blink_letter(message[pos]);
pos++;
} else {
// We've made it through the entire message. Wait 5 seconds and start again
delay(5000);
pos = 0;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment