ファンクション・ジェネレータ.出力信号:正弦波,矩形波,矩形波 (5倍波まで).ノイズの付加が可能.

Dependencies:   mbed SerialTxRxIntr Random

Revision:
6:acd06b435799
Parent:
5:5dca27575a3d
Child:
7:5d1c170065d8
--- a/main.cpp	Fri Nov 30 12:50:18 2018 +0000
+++ b/main.cpp	Sun Dec 02 08:02:50 2018 +0000
@@ -21,7 +21,7 @@
 //      るようなプログラムになっている.
 //      端末エミュレータからの Back Space キーの入力には対応していない.
 //
-//  2018/11/30, Copyright (c) 2018 MIKAMI, Naoki
+//  2018/12/02, Copyright (c) 2018 MIKAMI, Naoki
 //----------------------------------------------------------------------
 
 #include "F446_DAC.hpp"
@@ -39,20 +39,20 @@
 const float ONE_3_ = 1.0f/3.0f; // フーリエ級数の計算で使用
 const float ONE_5_ = 0.2f;      // フーリエ級数の計算で使用
 
-DacF446 dac_;               // DA 変換器オブジェクト
-MyTicker7 timer_;           // タイマ割り込み用クラスのオブジェクト,TIM7 を利用
-SerialRxTxIntr rxTx_;       // Serial クラスの受送信割込み用オブジェクト
-DigitalOut syncOut_(A5);    // 同期信号出力用
+DacF446 dac_;                   // DA 変換器オブジェクト
+MyTicker7 timer_;               // タイマ割り込み用クラスのオブジェクト,TIM7 を利用
+SerialRxTxIntr rxTx_;           // Serial クラスの受送信割込み用オブジェクト
+DigitalOut syncOut_(A5);        // 同期信号出力用
 
 float phi_ = 0;
 float dPhi_ = PI2_*1000*TS_;    // 周波数決める変数,開始時は 1 kHz;
-float volume_ = 0.5f;       // 出力の振幅を決める変数,開始時は 0.5
-bool sw_ = false;           // 出力 ON/OFF のスイッチ,開始時は off
-float volNoize_ = 0.5f;     // ノイズの大きさを決める変数
+float volume_ = 0.5f;           // 出力の振幅を決める変数,開始時は 0.5
+bool sw_ = false;               // 出力 ON/OFF のスイッチ,開始時は off
+float volNoize_ = 0.5f;         // ノイズの大きさを決める変数
 
 // ノイズ付加に関する関数等
-GaussRand rnd(0.3f, 0);
-float Noise() { return volNoize_*rnd.Next(); }
+GaussRand rnd_(0.3f, 0);        // 標準偏差:0.3, 平均値:0
+float Noise() { return volNoize_*rnd_.Next(); }
 float NoiseFree() { return 0; }
 float (*fpNoize[])() = { Noise, NoiseFree };
 float (*fpN)() = fpNoize[1];    // 起動時はノイズなし 
@@ -63,13 +63,13 @@
 // 矩形波
 float Rect(float sinx)
 {
-    sinx = (sinx >= 0) ? volume_ : -volume_;
-    return sinx + volNoize_*fpN();
+    float x = (sinx >= 0) ? volume_ : -volume_;
+    return x + volNoize_*fpN();
 }
 // 矩形波(5倍波まで)
 float Compo(float sinx)
 {   return volume_*(sinx + ONE_3_*sinf(3*phi_) + ONE_5_*sinf(5*phi_))
-           + volNoize_*fpN(); }
+                    + volNoize_*fpN(); }
 
 float (*fp[])(float x) = { Sin, Rect, Compo };
 float (*fpS)(float x) = fp[0];  // 起動時は正弦波