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
Child:
2:1fa4647505bf
2

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 1:a53d220362d4 1 //-----------------------------------------------------------
MikamiUitOpen 1:a53d220362d4 2 // 波形表示のためのクラス
MikamiUitOpen 1:a53d220362d4 3 //
MikamiUitOpen 1:a53d220362d4 4 // 2017/03/15, 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 1:a53d220362d4 13 lcd_->SetTextColor(BACK_COLOR_);
MikamiUitOpen 1:a53d220362d4 14 lcd_->FillRect(X0_, Y0_-LIMIT_, N_DATA_, LIMIT_*2+1);
MikamiUitOpen 1:a53d220362d4 15
MikamiUitOpen 1:a53d220362d4 16 // 横軸の描画
MikamiUitOpen 1:a53d220362d4 17 lcd_->SetTextColor(LCD_COLOR_CYAN);
MikamiUitOpen 1:a53d220362d4 18 lcd_->DrawLine(X0_-5, Y0_, X0_+N_DATA_+5, Y0_);
MikamiUitOpen 1:a53d220362d4 19
MikamiUitOpen 1:a53d220362d4 20 // 波形の描画
MikamiUitOpen 1:a53d220362d4 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 1:a53d220362d4 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 1:a53d220362d4 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 1:a53d220362d4 40 return Y0_ + x;
MikamiUitOpen 1:a53d220362d4 41 }