Created
February 5, 2014 21:27
-
-
Save tmbritton/8833498 to your computer and use it in GitHub Desktop.
Arduino morse code blink
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
//This isn't quite working yet. | |
int led = 13; //led is on pin 13 | |
String text = "Hello World!"; | |
int basetime = 100; | |
int pause = basetime; | |
int shortgap = basetime * 3; | |
int mediumgap = basetime * 7 - pause; | |
String translatetext(char character) { | |
switch (character) { | |
case 'a': | |
return ".-"; | |
case 'b': | |
return "-..."; | |
case 'c': | |
return "-.-."; | |
case 'd': | |
return "-.."; | |
case 'e': | |
return "."; | |
case 'f': | |
return "..-."; | |
case 'g': | |
return "--."; | |
case 'h': | |
return "...."; | |
case 'i': | |
return ".."; | |
case 'j': | |
return ".---"; | |
case 'k': | |
return "-.-"; | |
case 'l': | |
return ".-.."; | |
case 'm': | |
return "--"; | |
case 'n': | |
return "-."; | |
case 'o': | |
return "---"; | |
case 'p': | |
return ".--."; | |
case 'q': | |
return "--.-"; | |
case 'r': | |
return ".-."; | |
case 's': | |
return "..."; | |
case 't': | |
return "-"; | |
case 'u': | |
return "..-"; | |
case 'v': | |
return "...-"; | |
case 'w': | |
return ".--"; | |
case 'x': | |
return ".--"; | |
case 'y': | |
return "-.--"; | |
case 'z': | |
return "--.."; | |
case '0': | |
return "-----"; | |
case '1': | |
return ".----"; | |
case '2': | |
return "..---"; | |
case '3': | |
return "...--"; | |
case '4': | |
return "....-"; | |
case '5': | |
return "....."; | |
case '6': | |
return "-...."; | |
case '7': | |
return "--..."; | |
case '8': | |
return "---.."; | |
case '9': | |
return "-----."; | |
case '.': | |
return ".-.-.-"; | |
case ',': | |
return "--..--"; | |
case '?': | |
return "..--.."; | |
case '\'': | |
return ".----."; | |
case '!': | |
return "-.-.--"; | |
case '/': | |
return "-..-."; | |
case '(': | |
return "-.--."; | |
case ')': | |
return "-.--.-"; | |
case '&': | |
return ".-..."; | |
case ':': | |
return "---..."; | |
case ';': | |
return "-.-.-."; | |
case '=': | |
return "-...-"; | |
case '+': | |
return ".-.-."; | |
case '-': | |
return "-...-"; | |
case '_': | |
return "..--.-"; | |
case '"': | |
return ".-..-."; | |
case '$': | |
return "...-..-"; | |
case '@': | |
return ".--.-."; | |
case '\0': | |
return "...-.-"; //end of transmission | |
default: | |
return "········"; //error code | |
} | |
} | |
void texttomorse(String text) { | |
int i = 0; | |
while(text) { | |
Serial.println(text); | |
if (text[i] != ' ') { | |
String code = translatetext(text[i]); | |
displaymorse(code); | |
digitalWrite(led, LOW); | |
delay(pause); | |
} else { | |
delay(mediumgap); | |
} | |
i++; | |
} | |
} | |
void displaymorse(String code) { | |
Serial.println(code); | |
int i = 0; | |
while(code) { | |
if(code[i] == '.') { | |
digitalWrite(led, HIGH); | |
delay(pause); | |
} else { | |
digitalWrite(led, HIGH); | |
delay(shortgap); | |
} | |
} | |
digitalWrite(led, LOW); | |
delay(pause); | |
} | |
void setup() { | |
pinMode(led, OUTPUT); //set as output | |
Serial.begin(9600); | |
while (!Serial) { | |
; // wait for serial port to connect. Needed for Leonardo only | |
} | |
} | |
void loop() { | |
digitalWrite(led, LOW); | |
texttomorse(text); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment