Skip to content

Instantly share code, notes, and snippets.

@tmbritton
Created February 5, 2014 21:27
Show Gist options
  • Save tmbritton/8833498 to your computer and use it in GitHub Desktop.
Save tmbritton/8833498 to your computer and use it in GitHub Desktop.
Arduino morse code blink
//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