The example program for mbed pin-compatible platforms

Dependencies:   mbed

Fork of mbed_blinky by Mbed

Committer:
vartan
Date:
Sun Aug 24 21:27:48 2014 +0000
Revision:
19:56d79e19eb8d
Parent:
18:c70f8074d45e
removed markdown test;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
dan 0:7dec7e9ac085 1 #include "mbed.h"
vartan 7:b1e0b6f381ba 2 #include "MorseCharacter.h"
dan 0:7dec7e9ac085 3
dan 0:7dec7e9ac085 4 int main() {
vartan 17:3dbf734d2731 5 DigitalOut morseOut(LED1);
vartan 17:3dbf734d2731 6 PwmOut speaker(p21);
vartan 17:3dbf734d2731 7
vartan 17:3dbf734d2731 8 speaker.period(1.0/(440.0*4));
vartan 19:56d79e19eb8d 9 char* output = "This is a pretty long string being output through MOTHERFUCKING MORSE CODE";
vartan 9:9088b8a51286 10 char outputLength = strlen(output);
vartan 7:b1e0b6f381ba 11 char strpos = 0;
vartan 18:c70f8074d45e 12 const float period13WPM = 0.092f;
vartan 18:c70f8074d45e 13 float timeUnit = period13WPM/2;
vartan 11:87bc5f44dcfa 14 while(strpos < outputLength) { // for each character in string
vartan 7:b1e0b6f381ba 15 MorseCharacter morseChar(output[strpos]);
vartan 11:87bc5f44dcfa 16 char morseParts = morseChar.getNumberOfParts();
vartan 11:87bc5f44dcfa 17 if(morseParts > 0) {
vartan 11:87bc5f44dcfa 18 for(int i=0; i < morseParts; i++) {
vartan 8:ec3e22e9100e 19 morseOut = 1;
vartan 17:3dbf734d2731 20 speaker = 0.5;
vartan 11:87bc5f44dcfa 21 // wait 3 time units for a dah, 1 time unit for a dit
vartan 17:3dbf734d2731 22 wait((morseChar.getPart(i) == morseChar.DIT ? 1.0 : 3.0) * timeUnit);
vartan 8:ec3e22e9100e 23 morseOut = 0;
vartan 17:3dbf734d2731 24 speaker = 0;
vartan 8:ec3e22e9100e 25 wait(1*timeUnit); // time between dits/dahs is 1 time unit.
vartan 8:ec3e22e9100e 26 }
vartan 8:ec3e22e9100e 27 wait(timeUnit*2); // time between letters is 3 time units.
vartan 8:ec3e22e9100e 28 // there should already be 1 time unit after the
vartan 8:ec3e22e9100e 29 // last dit/dah.
vartan 8:ec3e22e9100e 30 } else {
vartan 8:ec3e22e9100e 31 wait(timeUnit * 4); // time between words is 7 time units.
vartan 8:ec3e22e9100e 32 // there should be 3 time units after the last
vartan 8:ec3e22e9100e 33 // character was sent.
vartan 7:b1e0b6f381ba 34 }
vartan 8:ec3e22e9100e 35 strpos++;
vartan 11:87bc5f44dcfa 36 if(strpos == outputLength) { // if message is over,
vartan 17:3dbf734d2731 37 wait(1.0f); // wait 1 seconds
vartan 9:9088b8a51286 38 strpos = 0; // start over;
vartan 9:9088b8a51286 39 }
stevep 4:81cea7a352b0 40 }
dan 0:7dec7e9ac085 41 }