ファンクション・ジェネレータ.出力信号:正弦波,矩形波,矩形波 (5倍波まで).ノイズの付加が可能.
Dependencies: mbed SerialTxRxIntr Random
Diff: main.cpp
- 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]; // 起動時は正弦波