Waveform display for input signal using SAI from MEMS microphone or line. MEMS マイクまたはラインから SAI により入力した信号の波形を表示する.
Dependencies: BSP_DISCO_F746NG F746_GUI F746_SAI_IO LCD_DISCO_F746NG TS_DISCO_F746NG mbed
MyClasses/Trigger.hpp@5:92bb7f2bf714, 2018-03-12 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Mon Mar 12 05:27:19 2018 +0000
- Revision:
- 5:92bb7f2bf714
- Parent:
- 0:e2c6c8630aab
6
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
MikamiUitOpen | 0:e2c6c8630aab | 1 | //--------------------------------------------------------------- |
MikamiUitOpen | 0:e2c6c8630aab | 2 | // トリガの条件を満足したデータを表示用データ領域の先頭から順に転送する |
MikamiUitOpen | 0:e2c6c8630aab | 3 | // トリガ条件は左右両チャンネルでチェックし,先に条件を |
MikamiUitOpen | 0:e2c6c8630aab | 4 | // 満足した点をトリガポイントとする |
MikamiUitOpen | 0:e2c6c8630aab | 5 | // |
MikamiUitOpen | 0:e2c6c8630aab | 6 | // 2016/07/23, Copyright (c) 2016 MIKAMI, Naoki |
MikamiUitOpen | 0:e2c6c8630aab | 7 | //--------------------------------------------------------------- |
MikamiUitOpen | 0:e2c6c8630aab | 8 | |
MikamiUitOpen | 0:e2c6c8630aab | 9 | #ifndef F746_TRIGGER_HPP |
MikamiUitOpen | 0:e2c6c8630aab | 10 | #define F746_TRIGGER_HPP |
MikamiUitOpen | 0:e2c6c8630aab | 11 | |
MikamiUitOpen | 0:e2c6c8630aab | 12 | #include "mbed.h" |
MikamiUitOpen | 0:e2c6c8630aab | 13 | #include "Array.hpp" |
MikamiUitOpen | 0:e2c6c8630aab | 14 | #include <algorithm> // min(), max() で使う |
MikamiUitOpen | 0:e2c6c8630aab | 15 | |
MikamiUitOpen | 0:e2c6c8630aab | 16 | namespace Mikami |
MikamiUitOpen | 0:e2c6c8630aab | 17 | { |
MikamiUitOpen | 0:e2c6c8630aab | 18 | class Trigger |
MikamiUitOpen | 0:e2c6c8630aab | 19 | { |
MikamiUitOpen | 0:e2c6c8630aab | 20 | public: |
MikamiUitOpen | 0:e2c6c8630aab | 21 | Trigger(const Array<int16_t>& snL, // 元のデータ,左チャンネル |
MikamiUitOpen | 0:e2c6c8630aab | 22 | const Array<int16_t>& snR, // 元のデータ,右チャンネル |
MikamiUitOpen | 0:e2c6c8630aab | 23 | Array<int16_t>& xnL, // 表示用データ,左チャンネル |
MikamiUitOpen | 0:e2c6c8630aab | 24 | Array<int16_t>& xnR, // 表示用データ,右チャンネル |
MikamiUitOpen | 0:e2c6c8630aab | 25 | int threshold ) // トリガの基準値 |
MikamiUitOpen | 0:e2c6c8630aab | 26 | : snL_(snL), snR_(snR), xnL_(xnL), xnR_(xnR), |
MikamiUitOpen | 0:e2c6c8630aab | 27 | TH_(threshold), N_SEARCH_(snL.Length()/3) {} |
MikamiUitOpen | 0:e2c6c8630aab | 28 | |
MikamiUitOpen | 0:e2c6c8630aab | 29 | bool Execute() |
MikamiUitOpen | 0:e2c6c8630aab | 30 | { |
MikamiUitOpen | 0:e2c6c8630aab | 31 | int nL = Search(snL_); |
MikamiUitOpen | 0:e2c6c8630aab | 32 | int nR = Search(snR_); |
MikamiUitOpen | 0:e2c6c8630aab | 33 | int nStart = min(nL, nR); |
MikamiUitOpen | 0:e2c6c8630aab | 34 | |
MikamiUitOpen | 0:e2c6c8630aab | 35 | for (int n=0; n<xnL_.Length(); n++) |
MikamiUitOpen | 0:e2c6c8630aab | 36 | { |
MikamiUitOpen | 0:e2c6c8630aab | 37 | int nS = n + nStart; |
MikamiUitOpen | 0:e2c6c8630aab | 38 | xnL_[n] = snL_[nS]; |
MikamiUitOpen | 0:e2c6c8630aab | 39 | xnR_[n] = snR_[nS]; |
MikamiUitOpen | 0:e2c6c8630aab | 40 | } |
MikamiUitOpen | 0:e2c6c8630aab | 41 | |
MikamiUitOpen | 0:e2c6c8630aab | 42 | return nStart < N_SEARCH_; |
MikamiUitOpen | 0:e2c6c8630aab | 43 | } |
MikamiUitOpen | 0:e2c6c8630aab | 44 | |
MikamiUitOpen | 0:e2c6c8630aab | 45 | private: |
MikamiUitOpen | 0:e2c6c8630aab | 46 | const Array<int16_t> &snL_, &snR_; |
MikamiUitOpen | 0:e2c6c8630aab | 47 | Array<int16_t> &xnL_, &xnR_; |
MikamiUitOpen | 0:e2c6c8630aab | 48 | const int TH_; |
MikamiUitOpen | 0:e2c6c8630aab | 49 | const int N_SEARCH_; |
MikamiUitOpen | 0:e2c6c8630aab | 50 | |
MikamiUitOpen | 0:e2c6c8630aab | 51 | int Search(const Array<int16_t>& un) |
MikamiUitOpen | 0:e2c6c8630aab | 52 | { |
MikamiUitOpen | 0:e2c6c8630aab | 53 | int n; |
MikamiUitOpen | 0:e2c6c8630aab | 54 | for (n=1; n<N_SEARCH_; n++) |
MikamiUitOpen | 0:e2c6c8630aab | 55 | if ((un[n-1] < -TH_) && (un[n] > TH_)) |
MikamiUitOpen | 0:e2c6c8630aab | 56 | break; |
MikamiUitOpen | 0:e2c6c8630aab | 57 | return n; |
MikamiUitOpen | 0:e2c6c8630aab | 58 | } |
MikamiUitOpen | 0:e2c6c8630aab | 59 | }; |
MikamiUitOpen | 0:e2c6c8630aab | 60 | } |
MikamiUitOpen | 0:e2c6c8630aab | 61 | #endif // F746_TRIGGER_HPP |