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

Dependencies:   F746_GUI F746_SAI_IO mbed

Committer:
MikamiUitOpen
Date:
Wed Mar 15 02:03:39 2017 +0000
Revision:
1:a53d220362d4
Parent:
0:5acef847513d
Child:
2:1fa4647505bf
2

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 0:5acef847513d 6 // BSP_DISCO_F746NG rev.5
MikamiUitOpen 0:5acef847513d 7 // mbed rev.131
MikamiUitOpen 0:5acef847513d 8 //
MikamiUitOpen 1:a53d220362d4 9 // 2017/03/15, 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 0:5acef847513d 24 // 波形表示用のオブジェクト生成
MikamiUitOpen 1:a53d220362d4 25 WaveformDisplay waveDisp(GuiBase::GetLcdPtr(), 30, 130,
MikamiUitOpen 1:a53d220362d4 26 xn, GuiBase::ENUM_BACK);
MikamiUitOpen 0:5acef847513d 27
MikamiUitOpen 1:a53d220362d4 28 // 入力の再開と中断のためのオブジェクトの生成
MikamiUitOpen 1:a53d220362d4 29 ButtonGroup runStop(365, 235, 55, 35, 2,
MikamiUitOpen 1:a53d220362d4 30 (string[]){"RUN", "STOP"},
MikamiUitOpen 1:a53d220362d4 31 5, 0, 2, 0);
MikamiUitOpen 0:5acef847513d 32
MikamiUitOpen 1:a53d220362d4 33 // サウンド信号入力用 SAI オブジェクト生成,入力:MEMS マイク
MikamiUitOpen 0:5acef847513d 34 SaiIO mySai(SaiIO::INPUT, N_DATA, I2S_AUDIOFREQ_16K,
MikamiUitOpen 0:5acef847513d 35 INPUT_DEVICE_DIGITAL_MICROPHONE_2);
MikamiUitOpen 0:5acef847513d 36 mySai.RecordIn(); // 入力開始
MikamiUitOpen 0:5acef847513d 37
MikamiUitOpen 0:5acef847513d 38 while (true)
MikamiUitOpen 0:5acef847513d 39 {
MikamiUitOpen 1:a53d220362d4 40 int num;
MikamiUitOpen 1:a53d220362d4 41 if (runStop.GetTouchedNumber(num))
MikamiUitOpen 0:5acef847513d 42 {
MikamiUitOpen 1:a53d220362d4 43 if (num == 0) mySai.ResumeIn(); // 入力再開
MikamiUitOpen 1:a53d220362d4 44 else mySai.PauseIn(); // 入力中断
MikamiUitOpen 0:5acef847513d 45 }
MikamiUitOpen 0:5acef847513d 46
MikamiUitOpen 0:5acef847513d 47 if (mySai.IsCaptured()) // 入力データがそろったら波形を表示する
MikamiUitOpen 0:5acef847513d 48 {
MikamiUitOpen 0:5acef847513d 49 for (int n=0; n<N_DATA; n++)
MikamiUitOpen 0:5acef847513d 50 mySai.Input(xn[n], xn[n]); // 片方のチャンネルのみ表示
MikamiUitOpen 0:5acef847513d 51 waveDisp.Execute(); // 波形の表示
MikamiUitOpen 0:5acef847513d 52 }
MikamiUitOpen 0:5acef847513d 53 }
MikamiUitOpen 0:5acef847513d 54 }