A version of the mbed waveplayer, but setup for the mbed application board PWM speaker and audio out jack

Dependents:   AppBoard_Waveplayer mbed_blinky LED_effects_w_sound ECE4180Lab3_RTOS ... more

Fork of wave_player by Steve Ravet

Revision:
2:b1cea7afcfd2
Parent:
0:62c18ade9a60
diff -r acc3e18e77ad -r b1cea7afcfd2 wave_player.cpp
--- a/wave_player.cpp	Tue Jan 18 03:57:27 2011 +0000
+++ b/wave_player.cpp	Fri Nov 01 15:24:51 2013 +0000
@@ -18,10 +18,14 @@
 
 //-----------------------------------------------------------------------------
 // constructor -- accepts an mbed pin to use for AnalogOut.  Only p18 will work
-wave_player::wave_player(AnalogOut *_dac)
-{
+wave_player::wave_player(AnalogOut *_dac, PwmOut *_pwm)
+{  
+
+    
+  wave_PWM= _pwm;  
   wave_DAC=_dac;
   wave_DAC->write_u16(32768);        //DAC is 0-3.3V, so idles at ~1.6V
+  *wave_PWM=32768;
   verbosity=0;
 }
 
@@ -204,7 +208,10 @@
 #ifdef VERBOSE
   printf("ISR rdptr %d got %u\n",DAC_rptr,DAC_fifo[DAC_rptr]);
 #endif
-    wave_DAC->write_u16(DAC_fifo[DAC_rptr]);
+    //scale down Analog voltage by 8 for PC speakers
+    wave_DAC->write_u16(DAC_fifo[DAC_rptr]>>3);
+    //Output to onboard speaker using PWM (Class D Audio Amp!)
+    wave_PWM->write(float(DAC_fifo[DAC_rptr]/65536.0));
     DAC_rptr=(DAC_rptr+1) & 0xff;
   }
 }