Last active
December 14, 2015 04:59
-
-
Save jclement/5032571 to your computer and use it in GitHub Desktop.
Blink a message in Morse Code with an Arduino
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /* | |
| ************************************************************************ | |
| 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