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:
3:dc29fbcf1b48
6

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 1:a53d220362d4 1 //-----------------------------------------------------------
MikamiUitOpen 1:a53d220362d4 2 // 波形表示のためのクラス
MikamiUitOpen 1:a53d220362d4 3 //
MikamiUitOpen 3:dc29fbcf1b48 4 // 2017/03/16, Copyright (c) 2017 MIKAMI, Naoki
MikamiUitOpen 1:a53d220362d4 5 //-----------------------------------------------------------
MikamiUitOpen 1:a53d220362d4 6
MikamiUitOpen 1:a53d220362d4 7 #include "WaveformDisplay.hpp"
MikamiUitOpen 1:a53d220362d4 8
MikamiUitOpen 1:a53d220362d4 9 // 波形表示
MikamiUitOpen 1:a53d220362d4 10 void WaveformDisplay::Execute()
MikamiUitOpen 1:a53d220362d4 11 {
MikamiUitOpen 1:a53d220362d4 12 // 以前の波形を消去
MikamiUitOpen 2:1fa4647505bf 13 lcd_.SetTextColor(BACK_COLOR_);
MikamiUitOpen 2:1fa4647505bf 14 lcd_.FillRect(X0_, Y0_-LIMIT_, N_DATA_, LIMIT_*2+1);
MikamiUitOpen 1:a53d220362d4 15
MikamiUitOpen 1:a53d220362d4 16 // 横軸の描画
MikamiUitOpen 2:1fa4647505bf 17 lcd_.SetTextColor(LCD_COLOR_CYAN);
MikamiUitOpen 2:1fa4647505bf 18 lcd_.DrawLine(X0_-5, Y0_, X0_+N_DATA_+5, Y0_);
MikamiUitOpen 1:a53d220362d4 19
MikamiUitOpen 1:a53d220362d4 20 // 波形の描画
MikamiUitOpen 2:1fa4647505bf 21 lcd_.SetTextColor(LCD_COLOR_WHITE);
MikamiUitOpen 1:a53d220362d4 22 uint16_t x1 = X0_;
MikamiUitOpen 1:a53d220362d4 23 uint16_t y1 = Clip(xn_[0]);
MikamiUitOpen 1:a53d220362d4 24 for (int n=1; n<N_DATA_; n++)
MikamiUitOpen 1:a53d220362d4 25 {
MikamiUitOpen 1:a53d220362d4 26 uint16_t x2 = X0_ + n;
MikamiUitOpen 1:a53d220362d4 27 uint16_t y2 = Clip(xn_[n]);
MikamiUitOpen 2:1fa4647505bf 28 lcd_.DrawLine(x1, y1, x2, y2);
MikamiUitOpen 1:a53d220362d4 29 x1 = x2;
MikamiUitOpen 1:a53d220362d4 30 y1 = y2;
MikamiUitOpen 1:a53d220362d4 31 }
MikamiUitOpen 1:a53d220362d4 32 }
MikamiUitOpen 1:a53d220362d4 33
MikamiUitOpen 2:1fa4647505bf 34 // 縦方向のクリッピングと縦方向の位置の移動
MikamiUitOpen 1:a53d220362d4 35 uint16_t WaveformDisplay::Clip(int16_t xn)
MikamiUitOpen 1:a53d220362d4 36 {
MikamiUitOpen 1:a53d220362d4 37 int16_t x = xn >> R_SHIFT_; // スケーリング
MikamiUitOpen 1:a53d220362d4 38 if (x > LIMIT_ ) x = LIMIT_;
MikamiUitOpen 1:a53d220362d4 39 if (x < -LIMIT_ ) x = -LIMIT_ ;
MikamiUitOpen 3:dc29fbcf1b48 40 return Y0_ - x;
MikamiUitOpen 1:a53d220362d4 41 }