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/
EncodeMorse.cpp@0:277b4be8e03c, 2014-03-05 (annotated)
- Committer:
- jkhan
- Date:
- Wed Mar 05 18:05:59 2014 +0000
- Revision:
- 0:277b4be8e03c
test
Who changed what in which revision?
User | Revision | Line number | New 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 | } |