Skeleton of solution for transmitting morse code for string of letters entered
Dependencies: mbed
Revision 0:edd3bba01cdd, committed 2017-10-01
- Comitter:
- motley
- Date:
- Sun Oct 01 12:17:14 2017 +0000
- Commit message:
- First commit - letters A to D only
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
diff -r 000000000000 -r edd3bba01cdd main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Sun Oct 01 12:17:14 2017 +0000 @@ -0,0 +1,96 @@ +// Suggested partial solution for sending of amessage typed into termianl +// by flashing the morse code for each letter in the message on LED +// attached to D7 pin +// Data entry and debug messages on PC terminal +// +// Chris Tipney September 2017 for module ELEC143 +// +// Current limitations +// (1) Only first 4 alpha characters and no numbers +// (2) No warning if message length exceeded +// (3) No trapping of non alpha characters (e.g. space or tab) +// +// Suggested improvements: +// Add rest of alphabet and numbers - rest of ASCII table must be trapped +// Put suitable areas of code into functions + +#include "mbed.h" + +Serial pc(SERIAL_TX, SERIAL_RX); + +DigitalOut myled(D7); + +const int maxMessageLength = 20; // max message length +char message[maxMessageLength]; // Holds the message to be transmitted + +// array of strings to hold the morse codes (only A to D so far) +// O = DOT (sound is DIT) +// A = DASH (sound is DAA); +// S = SPACE after a letter +char codes[][6] = { "OAS", // DIT DAA = A + "AOOOS", // DAA DIT DIT = B + "AOAOS", // DAA DIT DAA DIT = C + "AOOS" // DAA DIT DIT = D + }; + +int main() +{ + int position = 0; + + pc.printf("Morse message start...\n\r"); + + while(1) { + // diaplay opening message and get message + printf("\n\r"); + pc.printf("Please enter your message and press enter\n\r"); + scanf("%s", message); + pc.printf("Message is %s\n\r", message); + + for (int i = 0; i < strlen(message); i++) + { + if ((message[i] > 64) && (message[i] < 91)) // upper case letter + { + position = message[i] - 65; + } + else if ((message[i] > 96) && (message[i] < 123)) // lower case letter + { + position = message[i] - 97; + } + + printf("%d:%c:%d:%d ", i, message[i], message[i], position); + printf("\n\r"); + printf("%d %s ", position, codes[position]); + printf("\n\r"); + printf("Letter is %c ", message[i]); + for (int j=0; j < strlen(codes[position]); j++) + { + if (codes[position][j] == 'O') + { + printf("DIT "); + myled = 1; + wait(0.15); + myled = 0; + wait(0.15); + } + + if (codes[position][j] == 'A') + { + printf("DAA "); + myled = 1; + wait(0.45); + myled = 0; + wait(0.15); + } + + if (codes[position][j] == 'S') + { + printf("<SPACE> "); + wait(0.30); + } + //printf("%c ", codes[position][j]); + } + printf("\n\r"); + } + + } +}
diff -r 000000000000 -r edd3bba01cdd mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Sun Oct 01 12:17:14 2017 +0000 @@ -0,0 +1,1 @@ +https://mbed.org/users/mbed_official/code/mbed/builds/675da3299148 \ No newline at end of file