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

Dependencies:   F746_GUI F746_SAI_IO mbed

Committer:
MikamiUitOpen
Date:
Tue Jan 24 00:00:07 2017 +0000
Revision:
0:5acef847513d
Child:
1:a53d220362d4
1

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 0:5acef847513d 9 // 2017/01/23, Copyright (c) 2017 MIKAMI, Naoki
MikamiUitOpen 0:5acef847513d 10 //--------------------------------------------------------------
MikamiUitOpen 0:5acef847513d 11
MikamiUitOpen 0:5acef847513d 12 #include "mbed.h"
MikamiUitOpen 0:5acef847513d 13 #include "SAI_InOut.hpp" // 筆者の作った SAI 用ライブラリ
MikamiUitOpen 0:5acef847513d 14 #include "WaveformDisplay.hpp" // 今回作った波形表示用ライブラリ
MikamiUitOpen 0:5acef847513d 15 #include "MyButton.hpp" // 今回作った「ボタン」用ライブラリ
MikamiUitOpen 0:5acef847513d 16 using namespace Mikami; // 筆者の作ったライブラリで使っている名前空間
MikamiUitOpen 0:5acef847513d 17
MikamiUitOpen 0:5acef847513d 18 int main()
MikamiUitOpen 0:5acef847513d 19 {
MikamiUitOpen 0:5acef847513d 20 LCD_DISCO_F746NG lcd; // LCD のオブジェクト生成
MikamiUitOpen 0:5acef847513d 21 const uint32_t BACK_COLOR = 0xFF003538; // LCD 表示器の背景色
MikamiUitOpen 0:5acef847513d 22 lcd.Clear(BACK_COLOR);
MikamiUitOpen 0:5acef847513d 23 lcd.SetFont(&Font20); // フォントのサイズを設定
MikamiUitOpen 0:5acef847513d 24 lcd.SetTextColor(LCD_COLOR_WHITE); // 文字列の色を白に設定
MikamiUitOpen 0:5acef847513d 25 lcd.SetBackColor(BACK_COLOR); // 文字列の背景色を BACK_COLOR に設定
MikamiUitOpen 0:5acef847513d 26 lcd.DisplayStringAt(0, 12, (uint8_t *)"Simplified Oscilloscope",
MikamiUitOpen 0:5acef847513d 27 CENTER_MODE); // 文字列を描画
MikamiUitOpen 0:5acef847513d 28
MikamiUitOpen 0:5acef847513d 29 const uint32_t N_DATA = 420; // 表示するデータ数
MikamiUitOpen 0:5acef847513d 30 Array<int16_t> xn(N_DATA); // 表示で使うデータ
MikamiUitOpen 0:5acef847513d 31 // 波形表示用のオブジェクト生成
MikamiUitOpen 0:5acef847513d 32 WaveformDisplay waveDisp(lcd, 30, 130, xn, BACK_COLOR);
MikamiUitOpen 0:5acef847513d 33
MikamiUitOpen 0:5acef847513d 34 const uint16_t B_TOP = 235; // "ボタン" の上辺の位置
MikamiUitOpen 0:5acef847513d 35 const uint16_t B_WIDTH = 55; // "ボタン" の幅
MikamiUitOpen 0:5acef847513d 36 const uint16_t B_HEIGHT = 35; // "ボタン" の高さ
MikamiUitOpen 0:5acef847513d 37 MyButton run(lcd, 365, B_TOP, B_WIDTH, B_HEIGHT,
MikamiUitOpen 0:5acef847513d 38 "RUN", LCD_COLOR_BLUE); // "RUN" ボタン生成
MikamiUitOpen 0:5acef847513d 39 run.Draw(LCD_COLOR_LIGHTBLUE); // "RUN" ボタンをタッチされた色で描画
MikamiUitOpen 0:5acef847513d 40 MyButton stop(lcd, 370+B_WIDTH, B_TOP, B_WIDTH, B_HEIGHT,
MikamiUitOpen 0:5acef847513d 41 "STOP", LCD_COLOR_BLUE); // "STOP" ボタン生成
MikamiUitOpen 0:5acef847513d 42
MikamiUitOpen 0:5acef847513d 43 // サウンド信号入力用 SAI 用のオブジェクト生成,入力:MEMS マイク
MikamiUitOpen 0:5acef847513d 44 SaiIO mySai(SaiIO::INPUT, N_DATA, I2S_AUDIOFREQ_16K,
MikamiUitOpen 0:5acef847513d 45 INPUT_DEVICE_DIGITAL_MICROPHONE_2);
MikamiUitOpen 0:5acef847513d 46 mySai.RecordIn(); // 入力開始
MikamiUitOpen 0:5acef847513d 47
MikamiUitOpen 0:5acef847513d 48 while (true)
MikamiUitOpen 0:5acef847513d 49 {
MikamiUitOpen 0:5acef847513d 50 if (run.Touched()) // "RUN" をタッチしたときの処理
MikamiUitOpen 0:5acef847513d 51 {
MikamiUitOpen 0:5acef847513d 52 mySai.ResumeIn(); // 入力再開
MikamiUitOpen 0:5acef847513d 53 stop.Draw(); // "STOP" ボタンを最初の色で描画
MikamiUitOpen 0:5acef847513d 54 }
MikamiUitOpen 0:5acef847513d 55 if (stop.Touched()) // "STOP" をタッチしたときの処理
MikamiUitOpen 0:5acef847513d 56 {
MikamiUitOpen 0:5acef847513d 57 mySai.PauseIn(); // 入力中断
MikamiUitOpen 0:5acef847513d 58 run.Draw(); // "RUN" ボタンを最初の色で描画
MikamiUitOpen 0:5acef847513d 59 }
MikamiUitOpen 0:5acef847513d 60
MikamiUitOpen 0:5acef847513d 61 if (mySai.IsCaptured()) // 入力データがそろったら波形を表示する
MikamiUitOpen 0:5acef847513d 62 {
MikamiUitOpen 0:5acef847513d 63 for (int n=0; n<N_DATA; n++)
MikamiUitOpen 0:5acef847513d 64 mySai.Input(xn[n], xn[n]); // 片方のチャンネルのみ表示
MikamiUitOpen 0:5acef847513d 65 waveDisp.Execute(); // 波形の表示
MikamiUitOpen 0:5acef847513d 66 }
MikamiUitOpen 0:5acef847513d 67 }
MikamiUitOpen 0:5acef847513d 68 }