![](/media/cache/profiles/a36470cf1f8e5aaf38466d65bd080699.jpg.50x50_q85.jpg)
SOS
main.cpp@0:c0996e3989ce, 2017-02-22 (annotated)
- Committer:
- eencae
- Date:
- Wed Feb 22 14:14:17 2017 +0000
- Revision:
- 0:c0996e3989ce
Initial commit.;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
eencae | 0:c0996e3989ce | 1 | /* Morse Code |
eencae | 0:c0996e3989ce | 2 | |
eencae | 0:c0996e3989ce | 3 | (c) Dr Craig A. Evans, University of Leeds |
eencae | 0:c0996e3989ce | 4 | |
eencae | 0:c0996e3989ce | 5 | A dot is 1 time unit |
eencae | 0:c0996e3989ce | 6 | A dash is 3 time units |
eencae | 0:c0996e3989ce | 7 | Space between parts of a letter is 1 unit |
eencae | 0:c0996e3989ce | 8 | Space between letters is 3 units |
eencae | 0:c0996e3989ce | 9 | Space between words is 7 units |
eencae | 0:c0996e3989ce | 10 | |
eencae | 0:c0996e3989ce | 11 | */ |
eencae | 0:c0996e3989ce | 12 | |
eencae | 0:c0996e3989ce | 13 | #include "mbed.h" |
eencae | 0:c0996e3989ce | 14 | |
eencae | 0:c0996e3989ce | 15 | DigitalOut red_led(p24); |
eencae | 0:c0996e3989ce | 16 | DigitalOut green_led(p23); |
eencae | 0:c0996e3989ce | 17 | DigitalOut blue_led(p22); |
eencae | 0:c0996e3989ce | 18 | |
eencae | 0:c0996e3989ce | 19 | void init_leds(); |
eencae | 0:c0996e3989ce | 20 | void dot(); |
eencae | 0:c0996e3989ce | 21 | void dash(); |
eencae | 0:c0996e3989ce | 22 | void morse_s(); |
eencae | 0:c0996e3989ce | 23 | void morse_o(); |
eencae | 0:c0996e3989ce | 24 | void sos(); |
eencae | 0:c0996e3989ce | 25 | |
eencae | 0:c0996e3989ce | 26 | // global variable for unit time in milli-seconds |
eencae | 0:c0996e3989ce | 27 | int g_time_unit_ms = 150; |
eencae | 0:c0996e3989ce | 28 | |
eencae | 0:c0996e3989ce | 29 | int main() |
eencae | 0:c0996e3989ce | 30 | { |
eencae | 0:c0996e3989ce | 31 | init_leds(); |
eencae | 0:c0996e3989ce | 32 | |
eencae | 0:c0996e3989ce | 33 | while(1) { |
eencae | 0:c0996e3989ce | 34 | sos(); |
eencae | 0:c0996e3989ce | 35 | wait_ms(7*g_time_unit_ms); // space between words is 7 units |
eencae | 0:c0996e3989ce | 36 | } |
eencae | 0:c0996e3989ce | 37 | } |
eencae | 0:c0996e3989ce | 38 | |
eencae | 0:c0996e3989ce | 39 | // LEDs are active low and so writing a 1 turns them off |
eencae | 0:c0996e3989ce | 40 | void init_leds() |
eencae | 0:c0996e3989ce | 41 | { |
eencae | 0:c0996e3989ce | 42 | red_led.write(1); |
eencae | 0:c0996e3989ce | 43 | green_led.write(1); |
eencae | 0:c0996e3989ce | 44 | blue_led.write(1); |
eencae | 0:c0996e3989ce | 45 | } |
eencae | 0:c0996e3989ce | 46 | |
eencae | 0:c0996e3989ce | 47 | void dot() |
eencae | 0:c0996e3989ce | 48 | { |
eencae | 0:c0996e3989ce | 49 | red_led.write(0); // turn LED on |
eencae | 0:c0996e3989ce | 50 | wait_ms(g_time_unit_ms); // wait for 1 time unit |
eencae | 0:c0996e3989ce | 51 | red_led.write(1); // turn LED off |
eencae | 0:c0996e3989ce | 52 | } |
eencae | 0:c0996e3989ce | 53 | |
eencae | 0:c0996e3989ce | 54 | void dash() |
eencae | 0:c0996e3989ce | 55 | { |
eencae | 0:c0996e3989ce | 56 | red_led.write(0); // turn LED on |
eencae | 0:c0996e3989ce | 57 | wait_ms(3*g_time_unit_ms); // A dash is 3 time units |
eencae | 0:c0996e3989ce | 58 | red_led.write(1); // turn LED off |
eencae | 0:c0996e3989ce | 59 | } |
eencae | 0:c0996e3989ce | 60 | |
eencae | 0:c0996e3989ce | 61 | void morse_s() { // ... |
eencae | 0:c0996e3989ce | 62 | dot(); |
eencae | 0:c0996e3989ce | 63 | wait_ms(g_time_unit_ms); // space between parts of a letter is 1 unit |
eencae | 0:c0996e3989ce | 64 | dot(); |
eencae | 0:c0996e3989ce | 65 | wait_ms(g_time_unit_ms); |
eencae | 0:c0996e3989ce | 66 | dot(); |
eencae | 0:c0996e3989ce | 67 | } |
eencae | 0:c0996e3989ce | 68 | |
eencae | 0:c0996e3989ce | 69 | void morse_o() { // --- |
eencae | 0:c0996e3989ce | 70 | dash(); |
eencae | 0:c0996e3989ce | 71 | wait_ms(g_time_unit_ms); // space between parts of a letter is 1 unit |
eencae | 0:c0996e3989ce | 72 | dash(); |
eencae | 0:c0996e3989ce | 73 | wait_ms(g_time_unit_ms); |
eencae | 0:c0996e3989ce | 74 | dash(); |
eencae | 0:c0996e3989ce | 75 | } |
eencae | 0:c0996e3989ce | 76 | |
eencae | 0:c0996e3989ce | 77 | void sos() { // ... --- ... |
eencae | 0:c0996e3989ce | 78 | morse_s(); |
eencae | 0:c0996e3989ce | 79 | wait_ms(3*g_time_unit_ms); // space between letters is 3 units |
eencae | 0:c0996e3989ce | 80 | morse_o(); |
eencae | 0:c0996e3989ce | 81 | wait_ms(3*g_time_unit_ms); // space between letters is 3 units |
eencae | 0:c0996e3989ce | 82 | morse_s(); |
eencae | 0:c0996e3989ce | 83 | } |