
Lab1: Morse to ascii
Dependencies: mbed
main.cpp@1:85c6db66cc93, 2015-02-08 (annotated)
- Committer:
- jaredwil
- Date:
- Sun Feb 08 16:44:43 2015 +0000
- Revision:
- 1:85c6db66cc93
- Parent:
- 0:6058d93885b8
commented;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jaredwil | 1:85c6db66cc93 | 1 | //Part 5 |
jaredwil | 1:85c6db66cc93 | 2 | //The code below uses all previous parts of the lab to read |
jaredwil | 1:85c6db66cc93 | 3 | //in the appropriate dot/dash input from the user and record them |
jaredwil | 1:85c6db66cc93 | 4 | //and based on the input reference a table that maps the input |
jaredwil | 1:85c6db66cc93 | 5 | //to a specific alphanumeric character |
jaredwil | 1:85c6db66cc93 | 6 | |
psahay | 0:6058d93885b8 | 7 | #include "mbed.h" |
psahay | 0:6058d93885b8 | 8 | #include <map> |
psahay | 0:6058d93885b8 | 9 | #include <string> |
psahay | 0:6058d93885b8 | 10 | |
jaredwil | 1:85c6db66cc93 | 11 | //Initialize Inturrupt |
psahay | 0:6058d93885b8 | 12 | InterruptIn pound(p25); |
jaredwil | 1:85c6db66cc93 | 13 | //Initialize Digatl I/O |
psahay | 0:6058d93885b8 | 14 | DigitalOut myled(LED1); |
psahay | 0:6058d93885b8 | 15 | DigitalOut dot(p20); |
psahay | 0:6058d93885b8 | 16 | DigitalOut dash(p19); |
jaredwil | 1:85c6db66cc93 | 17 | //Initialize Timer |
psahay | 0:6058d93885b8 | 18 | Timer t1; |
psahay | 0:6058d93885b8 | 19 | Timer t2; |
jaredwil | 1:85c6db66cc93 | 20 | //Initialize Map |
psahay | 0:6058d93885b8 | 21 | std::map<std::string, char> asciiMap; |
jaredwil | 1:85c6db66cc93 | 22 | //Serial Connection to view output |
jaredwil | 1:85c6db66cc93 | 23 | Serial pc(USBTX, USBRX); |
psahay | 0:6058d93885b8 | 24 | |
jaredwil | 1:85c6db66cc93 | 25 | //variables |
psahay | 0:6058d93885b8 | 26 | std::string curStr; |
psahay | 0:6058d93885b8 | 27 | int state = 0; |
psahay | 0:6058d93885b8 | 28 | |
jaredwil | 1:85c6db66cc93 | 29 | //Mores Code -> Character Map |
psahay | 0:6058d93885b8 | 30 | void init(){ |
psahay | 0:6058d93885b8 | 31 | asciiMap[".-"]='a'; |
psahay | 0:6058d93885b8 | 32 | asciiMap["-..."]='b'; |
psahay | 0:6058d93885b8 | 33 | asciiMap["-.-."]='c'; |
psahay | 0:6058d93885b8 | 34 | asciiMap["-.."]='d'; |
psahay | 0:6058d93885b8 | 35 | asciiMap["."]='e'; |
psahay | 0:6058d93885b8 | 36 | asciiMap["..-."]='f'; |
psahay | 0:6058d93885b8 | 37 | asciiMap["--."]='g'; |
psahay | 0:6058d93885b8 | 38 | asciiMap["...."]='h'; |
psahay | 0:6058d93885b8 | 39 | asciiMap[".."]='i'; |
psahay | 0:6058d93885b8 | 40 | asciiMap[".---"]='j'; |
psahay | 0:6058d93885b8 | 41 | asciiMap["-.-"]='k'; |
psahay | 0:6058d93885b8 | 42 | asciiMap[".-.."]='l'; |
psahay | 0:6058d93885b8 | 43 | asciiMap["--"]='m'; |
psahay | 0:6058d93885b8 | 44 | asciiMap["-."]='n'; |
psahay | 0:6058d93885b8 | 45 | asciiMap["---"]='o'; |
psahay | 0:6058d93885b8 | 46 | asciiMap[".--."]='p'; |
psahay | 0:6058d93885b8 | 47 | asciiMap["--.-"]='q'; |
psahay | 0:6058d93885b8 | 48 | asciiMap[".-."]='r'; |
psahay | 0:6058d93885b8 | 49 | asciiMap["..."]='s'; |
psahay | 0:6058d93885b8 | 50 | asciiMap["-"]='t'; |
psahay | 0:6058d93885b8 | 51 | asciiMap["..-"]='u'; |
psahay | 0:6058d93885b8 | 52 | asciiMap["...-"]='v'; |
psahay | 0:6058d93885b8 | 53 | asciiMap[".--"]='w'; |
psahay | 0:6058d93885b8 | 54 | asciiMap["-..-"]='x'; |
psahay | 0:6058d93885b8 | 55 | asciiMap["-.--"]='y'; |
psahay | 0:6058d93885b8 | 56 | asciiMap["--.."]='z'; |
psahay | 0:6058d93885b8 | 57 | asciiMap[".----"]='1'; |
psahay | 0:6058d93885b8 | 58 | asciiMap["..---"]='2'; |
psahay | 0:6058d93885b8 | 59 | asciiMap["...--"]='3'; |
psahay | 0:6058d93885b8 | 60 | asciiMap["....-"]='4'; |
psahay | 0:6058d93885b8 | 61 | asciiMap["....."]='5'; |
psahay | 0:6058d93885b8 | 62 | asciiMap["-...."]='6'; |
psahay | 0:6058d93885b8 | 63 | asciiMap["--..."]='7'; |
psahay | 0:6058d93885b8 | 64 | asciiMap["---.."]='8'; |
psahay | 0:6058d93885b8 | 65 | asciiMap["----."]='9'; |
psahay | 0:6058d93885b8 | 66 | asciiMap["-----"]='0'; |
psahay | 0:6058d93885b8 | 67 | } |
psahay | 0:6058d93885b8 | 68 | |
jaredwil | 1:85c6db66cc93 | 69 | //Function when button pressed |
psahay | 0:6058d93885b8 | 70 | void pPress () { |
psahay | 0:6058d93885b8 | 71 | t2.stop(); |
jaredwil | 1:85c6db66cc93 | 72 | //Space identification is moved to while loop |
psahay | 0:6058d93885b8 | 73 | t1.start(); |
jaredwil | 1:85c6db66cc93 | 74 | myled = 1; |
psahay | 0:6058d93885b8 | 75 | } |
jaredwil | 1:85c6db66cc93 | 76 | //Function when button is released |
psahay | 0:6058d93885b8 | 77 | void pRelease() { |
jaredwil | 1:85c6db66cc93 | 78 | t1.stop(); //stop dot dash timer |
psahay | 0:6058d93885b8 | 79 | if(t1.read_ms() > 30 && t1.read_ms() <= 200){ |
psahay | 0:6058d93885b8 | 80 | dot = 0; |
jaredwil | 1:85c6db66cc93 | 81 | curStr = curStr + "."; //add dot to curstring |
psahay | 0:6058d93885b8 | 82 | } |
psahay | 0:6058d93885b8 | 83 | else if (t1.read_ms() > 200) { |
jaredwil | 1:85c6db66cc93 | 84 | curStr = curStr + "-"; //add dash to curstring |
psahay | 0:6058d93885b8 | 85 | } |
jaredwil | 1:85c6db66cc93 | 86 | |
jaredwil | 1:85c6db66cc93 | 87 | wait(0.1); //added for stability |
jaredwil | 1:85c6db66cc93 | 88 | |
jaredwil | 1:85c6db66cc93 | 89 | //Reset timers |
psahay | 0:6058d93885b8 | 90 | t1.reset(); |
psahay | 0:6058d93885b8 | 91 | t2.reset(); |
jaredwil | 1:85c6db66cc93 | 92 | //state recognizes when there has been an input |
psahay | 0:6058d93885b8 | 93 | state = 1; |
jaredwil | 1:85c6db66cc93 | 94 | //Clear Outputs |
psahay | 0:6058d93885b8 | 95 | dot = 1; |
jaredwil | 1:85c6db66cc93 | 96 | dash = 1; |
psahay | 0:6058d93885b8 | 97 | myled = 0; |
jaredwil | 1:85c6db66cc93 | 98 | //start space timer |
psahay | 0:6058d93885b8 | 99 | t2.start(); |
psahay | 0:6058d93885b8 | 100 | } |
psahay | 0:6058d93885b8 | 101 | int main() { |
jaredwil | 1:85c6db66cc93 | 102 | //Initialize outputs |
psahay | 0:6058d93885b8 | 103 | init(); |
psahay | 0:6058d93885b8 | 104 | dot=1; |
psahay | 0:6058d93885b8 | 105 | dash=1; |
psahay | 0:6058d93885b8 | 106 | myled = 0; |
jaredwil | 1:85c6db66cc93 | 107 | //Initialize Inturrupts |
psahay | 0:6058d93885b8 | 108 | pound.rise(&pPress); |
psahay | 0:6058d93885b8 | 109 | pound.fall(&pRelease); |
jaredwil | 1:85c6db66cc93 | 110 | t2.start(); //start space timer |
psahay | 0:6058d93885b8 | 111 | while(1) { |
jaredwil | 1:85c6db66cc93 | 112 | //used to light dass based on input length |
psahay | 0:6058d93885b8 | 113 | if(t1.read_ms()> 200) { |
jaredwil | 1:85c6db66cc93 | 114 | dash = 0; |
psahay | 0:6058d93885b8 | 115 | wait(0.1); |
psahay | 0:6058d93885b8 | 116 | dash = 1; |
psahay | 0:6058d93885b8 | 117 | } |
jaredwil | 1:85c6db66cc93 | 118 | //alphanumberic charact to be displayed |
psahay | 0:6058d93885b8 | 119 | char c; |
psahay | 0:6058d93885b8 | 120 | if(t2.read_ms() > 400 && state ==1) { |
jaredwil | 1:85c6db66cc93 | 121 | //clear seven segment display |
jaredwil | 1:85c6db66cc93 | 122 | dot = 1; |
psahay | 0:6058d93885b8 | 123 | dash= 1; |
jaredwil | 1:85c6db66cc93 | 124 | //map char based on string of dots and dashes |
psahay | 0:6058d93885b8 | 125 | c = asciiMap[curStr]; |
jaredwil | 1:85c6db66cc93 | 126 | pc.printf("%s : %c",curStr,c); //print input and char |
jaredwil | 1:85c6db66cc93 | 127 | curStr.clear(); //clear input |
jaredwil | 1:85c6db66cc93 | 128 | pc.printf(" "); //print space |
jaredwil | 1:85c6db66cc93 | 129 | state =0; //clear input state |
psahay | 0:6058d93885b8 | 130 | } |
psahay | 0:6058d93885b8 | 131 | } |
psahay | 0:6058d93885b8 | 132 | } |