Morse Code entry (Lab1 Part3)
Dependencies: mbed
main.cpp@1:e1478ad47f58, 2015-02-08 (annotated)
- Committer:
- jaredwil
- Date:
- Sun Feb 08 15:44:04 2015 +0000
- Revision:
- 1:e1478ad47f58
- Parent:
- 0:e7ca1ba9745c
commented;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jaredwil | 1:e1478ad47f58 | 1 | //Part 3 |
jaredwil | 1:e1478ad47f58 | 2 | //This function is used to simply identify whether a specific |
jaredwil | 1:e1478ad47f58 | 3 | //input from a button is a dot or dash based on the length of |
jaredwil | 1:e1478ad47f58 | 4 | //time the button is pressed |
jaredwil | 1:e1478ad47f58 | 5 | |
psahay | 0:e7ca1ba9745c | 6 | #include "mbed.h" |
psahay | 0:e7ca1ba9745c | 7 | |
jaredwil | 1:e1478ad47f58 | 8 | //Initialize Interrupt |
psahay | 0:e7ca1ba9745c | 9 | InterruptIn pound(p25); |
jaredwil | 1:e1478ad47f58 | 10 | //Initialize Digital Out |
psahay | 0:e7ca1ba9745c | 11 | DigitalOut myled(LED1); |
jaredwil | 1:e1478ad47f58 | 12 | //Initialize Timers |
psahay | 0:e7ca1ba9745c | 13 | Timer t1; |
psahay | 0:e7ca1ba9745c | 14 | Timer t2; |
psahay | 0:e7ca1ba9745c | 15 | |
jaredwil | 1:e1478ad47f58 | 16 | //Serial Interface for Debugging |
psahay | 0:e7ca1ba9745c | 17 | Serial pc(USBTX, USBRX); |
psahay | 0:e7ca1ba9745c | 18 | |
jaredwil | 1:e1478ad47f58 | 19 | //Function to be called when button is pressed |
psahay | 0:e7ca1ba9745c | 20 | void pPress () { |
jaredwil | 1:e1478ad47f58 | 21 | t2.stop(); //stop space timer |
jaredwil | 1:e1478ad47f58 | 22 | if(t2.read_ms() > 400)//if the length is greater than 400ms |
jaredwil | 1:e1478ad47f58 | 23 | pc.printf(" "); //space if added |
jaredwil | 1:e1478ad47f58 | 24 | t1.start(); //start dot/dash timer |
jaredwil | 1:e1478ad47f58 | 25 | myled = 1; //turn on led for debugging |
psahay | 0:e7ca1ba9745c | 26 | } |
jaredwil | 1:e1478ad47f58 | 27 | |
jaredwil | 1:e1478ad47f58 | 28 | //Function Called when button is released |
psahay | 0:e7ca1ba9745c | 29 | void pRelease() { |
jaredwil | 1:e1478ad47f58 | 30 | t1.stop(); //stop dot/dash timer |
jaredwil | 1:e1478ad47f58 | 31 | if(t1.read_ms() > 30 && t1.read_ms() <= 200) |
jaredwil | 1:e1478ad47f58 | 32 | pc.printf("."); //dot if length less than 200ms |
psahay | 0:e7ca1ba9745c | 33 | else if (t1.read_ms() > 200) |
jaredwil | 1:e1478ad47f58 | 34 | pc.printf("-"); //dash if length greater than 200ms |
psahay | 0:e7ca1ba9745c | 35 | myled = 0; |
jaredwil | 1:e1478ad47f58 | 36 | //reset both timers |
psahay | 0:e7ca1ba9745c | 37 | t1.reset(); |
psahay | 0:e7ca1ba9745c | 38 | t2.reset(); |
jaredwil | 1:e1478ad47f58 | 39 | //start space timer |
psahay | 0:e7ca1ba9745c | 40 | t2.start(); |
psahay | 0:e7ca1ba9745c | 41 | } |
jaredwil | 1:e1478ad47f58 | 42 | //mainfunction |
psahay | 0:e7ca1ba9745c | 43 | int main() { |
psahay | 0:e7ca1ba9745c | 44 | myled = 0; |
jaredwil | 1:e1478ad47f58 | 45 | //Initialize Interrupts for rising/falling edge |
psahay | 0:e7ca1ba9745c | 46 | pound.rise(&pPress); |
psahay | 0:e7ca1ba9745c | 47 | pound.fall(&pRelease); |
psahay | 0:e7ca1ba9745c | 48 | t2.start(); |
psahay | 0:e7ca1ba9745c | 49 | while(1) { |
psahay | 0:e7ca1ba9745c | 50 | } |
psahay | 0:e7ca1ba9745c | 51 | } |