John's code modified for envelope shaping and different colours
Fork of Morse-buddy-JohnF by
Diff: Morse_Code.cpp
- Revision:
- 1:ba9c803c7596
- Parent:
- 0:8c725fbd8e0e
- Child:
- 2:260128ae5746
--- a/Morse_Code.cpp Sat Jun 22 21:52:12 2013 +0000 +++ b/Morse_Code.cpp Sat Jun 22 23:13:14 2013 +0000 @@ -2,6 +2,7 @@ //============================================================== // Morse Code June 30, 2011 John H. Fisher - K5JHF //============================================================== +// mods by Tony Abbey for envelope shaping - 22 June 2013 #include "mbed.h" @@ -553,7 +554,7 @@ led = on; - Tone ( _Tone_Frequency, u ); + Tone ( _Tone_Frequency, u, 1.0 ); led = off; @@ -565,7 +566,7 @@ led = on; - Tone ( _Tone_Frequency, 3.0 * u ); + Tone ( _Tone_Frequency, u, 3.0 ); led = off; @@ -573,13 +574,15 @@ //============================================================= -void Morse_Code::Tone ( int freq_factor, float duration ) { +void Morse_Code::Tone ( int freq_factor, float duration, float multiplier ) { Timer timer; char i = 0; + float t; unsigned int delay; + float amplitude = 0; timer.start(); @@ -589,13 +592,15 @@ for ( i = 0; i < 32; i++ ) { - piezo = sine_wave [ i ]; + piezo = sine_wave [ i ] * amplitude; for ( delay = 0; delay < freq_factor; delay++ ); - } + } t = timer.read() ; + if ( t < duration/7 ) amplitude = t * 7 / duration ; + if ( t/multiplier > duration * 0.85 ) amplitude = ( ( duration - t/multiplier ) / duration ) * 8.5 ; - } while ( timer.read() < duration ); + } while ( timer.read() < duration * multiplier ); }