Generate Morse code using console text input and output to LED and speaker.

Dependencies:   4DGL-uLCD-SE PinDetect mbed

https://mbed.org/users/jkhan/notebook/morse-code/

Committer:
jkhan
Date:
Wed Mar 05 18:05:59 2014 +0000
Revision:
0:277b4be8e03c
test

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jkhan 0:277b4be8e03c 1 /*
jkhan 0:277b4be8e03c 2 INTERNATIONAL MORSE CODE - recommended characters and spacing definitions from:
jkhan 0:277b4be8e03c 3 http://www.itu.int/rec/R-REC-M.1677-1-200910-I/
jkhan 0:277b4be8e03c 4
jkhan 0:277b4be8e03c 5 SPACING IMPLEMENTATION:
jkhan 0:277b4be8e03c 6 dot = "dit" = [.] = 1
jkhan 0:277b4be8e03c 7 dash = "dah" = [-] = 3
jkhan 0:277b4be8e03c 8 Spacing within character = 0 (This is pre-inserted for characters in the switch statement below.)
jkhan 0:277b4be8e03c 9 Spacing between letters = 000 (3 zeros; resolved in main.cpp)
jkhan 0:277b4be8e03c 10 Spacing between words = 0000000 (7 zeros; defined with keyboard [Space] button)
jkhan 0:277b4be8e03c 11 */
jkhan 0:277b4be8e03c 12
jkhan 0:277b4be8e03c 13 static char* EncodeMorse(char character)
jkhan 0:277b4be8e03c 14 {
jkhan 0:277b4be8e03c 15 int ascii = character; // char to int
jkhan 0:277b4be8e03c 16
jkhan 0:277b4be8e03c 17 switch(ascii)
jkhan 0:277b4be8e03c 18 {
jkhan 0:277b4be8e03c 19 case 8: return "101010101010101"; // [Backspace] (8 dots)
jkhan 0:277b4be8e03c 20 case 32: return "0000000"; // [Space]
jkhan 0:277b4be8e03c 21 case 34: return "10301010301"; // ["] (quotation mark)
jkhan 0:277b4be8e03c 22 case 39: return "10303030301"; // ['] (apostrophe)
jkhan 0:277b4be8e03c 23 case 40: return "301030301"; // [(]
jkhan 0:277b4be8e03c 24 case 41: return "30103030103"; // [)]
jkhan 0:277b4be8e03c 25 case 43: return "103010301"; // [+]
jkhan 0:277b4be8e03c 26 case 44: return "30301010303"; // [,] (comma)
jkhan 0:277b4be8e03c 27 case 45: return "30101010103"; // [-]
jkhan 0:277b4be8e03c 28 case 46: return "10301030103"; // [.] (period)
jkhan 0:277b4be8e03c 29 case 47: return "301010301"; // [/]
jkhan 0:277b4be8e03c 30 case 48: return "303030303"; // 0
jkhan 0:277b4be8e03c 31 case 49: return "103030303"; // 1
jkhan 0:277b4be8e03c 32 case 50: return "101030303"; // 2
jkhan 0:277b4be8e03c 33 case 51: return "101010303"; // 3
jkhan 0:277b4be8e03c 34 case 52: return "101010103"; // 4
jkhan 0:277b4be8e03c 35 case 53: return "101010101"; // 5
jkhan 0:277b4be8e03c 36 case 54: return "301010101"; // 6
jkhan 0:277b4be8e03c 37 case 55: return "303010101"; // 7
jkhan 0:277b4be8e03c 38 case 56: return "303030101"; // 8
jkhan 0:277b4be8e03c 39 case 57: return "303030301"; // 9
jkhan 0:277b4be8e03c 40 case 58: return "30303010101"; // [:] (colon)
jkhan 0:277b4be8e03c 41 case 61: return "301010103"; // [=]
jkhan 0:277b4be8e03c 42 case 63: return "10103030101"; // [?]
jkhan 0:277b4be8e03c 43 case 64: return "10303010301"; // [@]
jkhan 0:277b4be8e03c 44 case 65: case 97: return "103"; // A,a
jkhan 0:277b4be8e03c 45 case 66: case 98: return "3010101"; // B,b
jkhan 0:277b4be8e03c 46 case 67: case 99: return "3010301"; // C,c
jkhan 0:277b4be8e03c 47 case 68: case 100: return "30101"; // D,d
jkhan 0:277b4be8e03c 48 case 69: case 101: return "1"; // E,e
jkhan 0:277b4be8e03c 49 case 70: case 102: return "1010301"; // F,f
jkhan 0:277b4be8e03c 50 case 71: case 103: return "30301"; // G,g
jkhan 0:277b4be8e03c 51 case 72: case 104: return "1010101"; // H,h
jkhan 0:277b4be8e03c 52 case 73: case 105: return "101"; // I,i
jkhan 0:277b4be8e03c 53 case 74: case 106: return "1030303"; // J,j
jkhan 0:277b4be8e03c 54 case 75: case 107: return "30103"; // K,k
jkhan 0:277b4be8e03c 55 case 76: case 108: return "1030101"; // L,l
jkhan 0:277b4be8e03c 56 case 77: case 109: return "303"; // M,m
jkhan 0:277b4be8e03c 57 case 78: case 110: return "301"; // N,n
jkhan 0:277b4be8e03c 58 case 79: case 111: return "30303"; // O,o
jkhan 0:277b4be8e03c 59 case 80: case 112: return "1030301"; // P,p
jkhan 0:277b4be8e03c 60 case 81: case 113: return "3030103"; // Q,q
jkhan 0:277b4be8e03c 61 case 82: case 114: return "10301"; // R,r
jkhan 0:277b4be8e03c 62 case 83: case 115: return "10101"; // S,s
jkhan 0:277b4be8e03c 63 case 84: case 116: return "3"; // T,t
jkhan 0:277b4be8e03c 64 case 85: case 117: return "10103"; // U,u
jkhan 0:277b4be8e03c 65 case 86: case 118: return "1010103"; // V,v
jkhan 0:277b4be8e03c 66 case 87: case 119: return "10303"; // W,w
jkhan 0:277b4be8e03c 67 case 88: case 120: return "3010103"; // X,x (also use for multiplication sign)
jkhan 0:277b4be8e03c 68 case 89: case 121: return "3010303"; // Y,y
jkhan 0:277b4be8e03c 69 case 90: case 122: return "3030101"; // Z,z
jkhan 0:277b4be8e03c 70
jkhan 0:277b4be8e03c 71 case 0: return "-1"; // null (for debugging)
jkhan 0:277b4be8e03c 72 case 10: return "-1"; // newline (for debugging)
jkhan 0:277b4be8e03c 73
jkhan 0:277b4be8e03c 74 default: return "";
jkhan 0:277b4be8e03c 75 }
jkhan 0:277b4be8e03c 76 }