以前のLibraryでは、スピーカ出力にPWM,DigitalOutを使いましたが、これは、両方ともPWMにしたものです。LPC1114FN28ではDigitalOutにノイズが乗ることがありその対応です。

Dependents:   kitchenTimer LPC1114FN28_kitchenTimer_Clock

Fork of Sound by suu pen

Revision:
15:7e1945a135d7
Parent:
14:027fe57d3491
--- a/Sound.cpp	Sat Oct 26 22:15:13 2013 +0000
+++ b/Sound.cpp	Sun Nov 10 03:57:47 2013 +0000
@@ -27,8 +27,8 @@
     _pwm.period_us(Z_pwmSyuuki);
     
     _pwm.write(0.0);
-    _kijun.write(0.0);  //131027
-//131027    _kijun = 0; //131027
+    _kijun.write(0.0);  //@SS131027
+//@SS131027    _kijun = 0; //@SS131027
 
 
     keikajikan = 0;  // 1tu no oto no keikajikan
@@ -48,18 +48,27 @@
 *****************************************/
 void Sound::sound_out(float siji, int8_t fugo){
 
-    // siji no atai wo fugo ga minus no toki hanten
-    if(fugo == 1){siji = 1.0 - siji;}
-    _kijun.write((float)fugo);    //131027
-//131027    _kijun = fugo;  //131027
+    if(siji != 0){
+        // siji no atai wo fugo ga minus no toki hanten
+         if(fugo == 1){siji = 1.0 - siji;}
+         _kijun.write((float)fugo);    //@SS131027
+//@SS131027    _kijun = fugo;  //@SS131027
       
-    _pwm.write(siji);   // 2tuizyo sound out settei site ,interrupt no nakade renzoku de pwm set wo suruto bousou suru.
+        _pwm.write(siji);   // 2tuizyo sound out settei site ,interrupt no nakade renzoku de pwm set wo suruto bousou suru.
+    }
+    else{                       //@SS131110
+        // sound off            //@SS131110
+        _kijun.write(0.0);      //@SS131110
+        _pwm.write(0.0);        //@SS131110
+ 
+   }
 }
 /*****************************************
 * sound hakei pwm output
 * time interrupt
 *****************************************/
 void Sound::pulseCheck(void) {
+
 //    uint32_t static C_syuukiKeika = 0;
 //    uint8_t static f_muonSet = 0;           // muon ji no sound_out() syori wo kurikaesu no wo fusegu
 //    uint8_t static F_pwmSet = 0;    // 0:zenhan hansyuuki 1:kohan hansyuuki  wo request
@@ -203,13 +212,24 @@
 Description    : enso ji no tugino onpu data syutoku
 ******************************************************************************/
 void Sound::sound_ensoSyori(void) {
+   const sound_t END_DATA[] =     {                                             //@SS131110
+    //   hanon siji 0:b(flat)   1:tujo  2:#(sharp)                              //@SS131110
+    //   |  C1 - B9 kan deno onkai(Gx ha 9x ni okikae te siji)  0xFF=end data   //@SS131110
+    //   |  |   time (1/1[ms]/count)                                            //@SS131110
+    //   |  |   |    envelope(yoin) (1/1 [ms]/count)                            //@SS131110
+    //   |  |   |    |                                                          //@SS131110
+        {1,0xFF,0000,0}   // end                                                //@SS131110
+    };                                                                          //@SS131110
+
+    sound_t data;                                                               //@SS131110
     
     // enso data settei
     if((sound_sound() == false)     // oto no syuturyoku jikan hantei
     & (onpu != NULL)                // enso chu ka wo kakunin
      ){
         // tugi no onpu data syutoku
-        sound_t data = *onpu;
+//@SS131110        sound_t data = *onpu;                                        //@SS131110
+        data = *onpu;                                                           //@SS131110
         if(data.onkai == 0xff){
             sound_sound(data);      //131026
             onpu = NULL;
@@ -221,6 +241,10 @@
         }
     
     }
+    else if(onpu == NULL){                                                      //@SS131110
+        data = *END_DATA;                                                       //@SS131110
+        sound_sound(data);                                                      //@SS131110
+    }                                                                           //@SS131110
 
 }
 
@@ -456,3 +480,4 @@
 
 
 
+