John's code modified for envelope shaping and different colours

Dependencies:   mbed

Fork of Morse-buddy-JohnF by Tony Abbey

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 );
 
     }