Lab1: Morse to ascii

Dependencies:   mbed

Committer:
jaredwil
Date:
Sun Feb 08 16:44:43 2015 +0000
Revision:
1:85c6db66cc93
Parent:
0:6058d93885b8
commented;

Who changed what in which revision?

UserRevisionLine numberNew 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 }