The example program for mbed pin-compatible platforms
Fork of mbed_blinky by
main.cpp@19:56d79e19eb8d, 2014-08-24 (annotated)
- 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?
User | Revision | Line number | New 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 | } |