Simplified oscilloscope using DISCO-F746. Input: MEMS microphone. DISCO-F746 による簡易オシロスコープ.入力:MEMS マイク.

Dependencies:   F746_GUI F746_SAI_IO mbed

Committer:
MikamiUitOpen
Date:
Sun Apr 09 05:39:18 2017 +0000
Revision:
5:2bf3b2b2a9d0
Parent:
4:ff897824d92a
6

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:5acef847513d 1 //--------------------------------------------------------------
MikamiUitOpen 0:5acef847513d 2 // MEMS マイクから CODEC を使って入力したサウンド信号の波形の表示
MikamiUitOpen 0:5acef847513d 3 // 標本化周波数: 16 kHz
MikamiUitOpen 0:5acef847513d 4 //
MikamiUitOpen 0:5acef847513d 5 // ライブラリのリビジョン:
MikamiUitOpen 5:2bf3b2b2a9d0 6 // F746_GUI rev.32
MikamiUitOpen 5:2bf3b2b2a9d0 7 // mbed rev.138
MikamiUitOpen 0:5acef847513d 8 //
MikamiUitOpen 5:2bf3b2b2a9d0 9 // 2017/04/09, Copyright (c) 2017 MIKAMI, Naoki
MikamiUitOpen 0:5acef847513d 10 //--------------------------------------------------------------
MikamiUitOpen 0:5acef847513d 11
MikamiUitOpen 1:a53d220362d4 12 #include "SAI_InOut.hpp" // 自作 SAI 用ライブラリ
MikamiUitOpen 1:a53d220362d4 13 #include "F746_GUI.hpp" // 自作 GUI 用ライブラリ
MikamiUitOpen 1:a53d220362d4 14 #include "WaveformDisplay.hpp" // 波形表示用
MikamiUitOpen 1:a53d220362d4 15 using namespace Mikami; // 自作ライブラリで使っている名前空間
MikamiUitOpen 0:5acef847513d 16
MikamiUitOpen 0:5acef847513d 17 int main()
MikamiUitOpen 0:5acef847513d 18 {
MikamiUitOpen 1:a53d220362d4 19 Label title(240, 12, "Simplified Oscilloscope",
MikamiUitOpen 1:a53d220362d4 20 Label::CENTER, Font20);
MikamiUitOpen 0:5acef847513d 21
MikamiUitOpen 1:a53d220362d4 22 const uint32_t N_DATA = 420; // 表示するデータ数
MikamiUitOpen 0:5acef847513d 23 Array<int16_t> xn(N_DATA); // 表示で使うデータ
MikamiUitOpen 2:1fa4647505bf 24
MikamiUitOpen 0:5acef847513d 25 // 波形表示用のオブジェクト生成
MikamiUitOpen 2:1fa4647505bf 26 WaveformDisplay waveDisp(GuiBase::GetLcd(), 30, 130,
MikamiUitOpen 1:a53d220362d4 27 xn, GuiBase::ENUM_BACK);
MikamiUitOpen 0:5acef847513d 28
MikamiUitOpen 1:a53d220362d4 29 // 入力の再開と中断のためのオブジェクトの生成
MikamiUitOpen 1:a53d220362d4 30 ButtonGroup runStop(365, 235, 55, 35, 2,
MikamiUitOpen 1:a53d220362d4 31 (string[]){"RUN", "STOP"},
MikamiUitOpen 1:a53d220362d4 32 5, 0, 2, 0);
MikamiUitOpen 0:5acef847513d 33
MikamiUitOpen 1:a53d220362d4 34 // サウンド信号入力用 SAI オブジェクト生成,入力:MEMS マイク
MikamiUitOpen 4:ff897824d92a 35 SaiIO mySai(SaiIO::INPUT, N_DATA, AUDIO_FREQUENCY_16K,
MikamiUitOpen 0:5acef847513d 36 INPUT_DEVICE_DIGITAL_MICROPHONE_2);
MikamiUitOpen 0:5acef847513d 37 mySai.RecordIn(); // 入力開始
MikamiUitOpen 0:5acef847513d 38
MikamiUitOpen 0:5acef847513d 39 while (true)
MikamiUitOpen 0:5acef847513d 40 {
MikamiUitOpen 1:a53d220362d4 41 int num;
MikamiUitOpen 1:a53d220362d4 42 if (runStop.GetTouchedNumber(num))
MikamiUitOpen 0:5acef847513d 43 {
MikamiUitOpen 1:a53d220362d4 44 if (num == 0) mySai.ResumeIn(); // 入力再開
MikamiUitOpen 1:a53d220362d4 45 else mySai.PauseIn(); // 入力中断
MikamiUitOpen 0:5acef847513d 46 }
MikamiUitOpen 0:5acef847513d 47
MikamiUitOpen 0:5acef847513d 48 if (mySai.IsCaptured()) // 入力データがそろったら波形を表示する
MikamiUitOpen 0:5acef847513d 49 {
MikamiUitOpen 0:5acef847513d 50 for (int n=0; n<N_DATA; n++)
MikamiUitOpen 0:5acef847513d 51 mySai.Input(xn[n], xn[n]); // 片方のチャンネルのみ表示
MikamiUitOpen 0:5acef847513d 52 waveDisp.Execute(); // 波形の表示
MikamiUitOpen 0:5acef847513d 53 }
MikamiUitOpen 0:5acef847513d 54 }
MikamiUitOpen 0:5acef847513d 55 }