CQエレクトロニクス・セミナ「実習・マイコンを動かしながら学ぶディジタル・フィルタ」で使うプログラムを,入力として STM32F746 の内蔵 ADC を使うように変更したもの. http://seminar.cqpub.co.jp/ccm/ES18-0020

Dependencies:   mbed Array_Matrix BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG

Committer:
MikamiUitOpen
Date:
Mon Mar 12 05:10:31 2018 +0000
Revision:
2:dd48e1e59daa
Parent:
0:ab7a35d87173
3

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 0:ab7a35d87173 1 //-----------------------------------------------------------
MikamiUitOpen 0:ab7a35d87173 2 // ディジタルフィルタ実験のためのプラットフォームの
MikamiUitOpen 0:ab7a35d87173 3 // LCD パネル表示と操作で使う
MikamiUitOpen 0:ab7a35d87173 4 //
MikamiUitOpen 0:ab7a35d87173 5 // 2017/10/07, Copyright (c) 2017 MIKAMI, Naoki
MikamiUitOpen 0:ab7a35d87173 6 //-----------------------------------------------------------
MikamiUitOpen 0:ab7a35d87173 7
MikamiUitOpen 0:ab7a35d87173 8 #ifndef PANEL_MANIPULATOR_HPP
MikamiUitOpen 0:ab7a35d87173 9 #define PANEL_MANIPULATOR_HPP
MikamiUitOpen 0:ab7a35d87173 10
MikamiUitOpen 0:ab7a35d87173 11 #include "F746_GUI.hpp"
MikamiUitOpen 0:ab7a35d87173 12 #include "NumericUpDown.hpp"
MikamiUitOpen 0:ab7a35d87173 13 #include "Zoom.hpp"
MikamiUitOpen 0:ab7a35d87173 14 #include "WaveformDisplay.hpp"
MikamiUitOpen 0:ab7a35d87173 15 #include "Trigger.hpp"
MikamiUitOpen 0:ab7a35d87173 16
MikamiUitOpen 0:ab7a35d87173 17 namespace Mikami
MikamiUitOpen 0:ab7a35d87173 18 {
MikamiUitOpen 0:ab7a35d87173 19 class LcdPanel
MikamiUitOpen 0:ab7a35d87173 20 {
MikamiUitOpen 0:ab7a35d87173 21 public:
MikamiUitOpen 0:ab7a35d87173 22 LcdPanel() : lcd_(GuiBase::GetLcd()),
MikamiUitOpen 0:ab7a35d87173 23 xnD_(N_DISP_BUF_), ynD_(N_DISP_BUF_), factor_(1)
MikamiUitOpen 0:ab7a35d87173 24 {
MikamiUitOpen 0:ab7a35d87173 25 Label title(240, 10, "Digital Filter LAB using internal ADC",
MikamiUitOpen 0:ab7a35d87173 26 Label::CENTER, Font16);
MikamiUitOpen 0:ab7a35d87173 27
MikamiUitOpen 0:ab7a35d87173 28 const uint16_t Y0 = 170;
MikamiUitOpen 0:ab7a35d87173 29 // 凡例
MikamiUitOpen 0:ab7a35d87173 30 lcd_.SetTextColor(LINE_COLOR1_);
MikamiUitOpen 0:ab7a35d87173 31 lcd_.DrawHLine(360, Y0+6, 50);
MikamiUitOpen 0:ab7a35d87173 32 Label label1(420, Y0, "Input");
MikamiUitOpen 0:ab7a35d87173 33 lcd_.SetTextColor(LINE_COLOR2_);
MikamiUitOpen 0:ab7a35d87173 34 lcd_.DrawHLine(360, Y0+26, 50);
MikamiUitOpen 0:ab7a35d87173 35 Label label2(420, Y0+20, "Output");
MikamiUitOpen 0:ab7a35d87173 36
MikamiUitOpen 0:ab7a35d87173 37 waveDisp_ = new WaveformDisplay(lcd_, 30, 90, xnD_, ynD_, 400, 8,
MikamiUitOpen 0:ab7a35d87173 38 AXIS_COLOR_,
MikamiUitOpen 0:ab7a35d87173 39 LINE_COLOR1_, LINE_COLOR2_,
MikamiUitOpen 0:ab7a35d87173 40 BACK_COLOR_);
MikamiUitOpen 0:ab7a35d87173 41
MikamiUitOpen 0:ab7a35d87173 42 // 時間軸の拡大率は 8 倍まで
MikamiUitOpen 0:ab7a35d87173 43 zmButton_ = new ZoomButton(240, Y0, 40, 30, 8);
MikamiUitOpen 0:ab7a35d87173 44 }
MikamiUitOpen 0:ab7a35d87173 45
MikamiUitOpen 0:ab7a35d87173 46 // ズームイン/アウト・ボタンの処理
MikamiUitOpen 0:ab7a35d87173 47 void Update() { zmButton_->Touched(factor_); }
MikamiUitOpen 0:ab7a35d87173 48
MikamiUitOpen 0:ab7a35d87173 49 // 入出力信号のデータを表示用バッファへ格納
MikamiUitOpen 0:ab7a35d87173 50 void Store(int16_t xn, int16_t yn, int n)
MikamiUitOpen 0:ab7a35d87173 51 {
MikamiUitOpen 0:ab7a35d87173 52 if (n >= N_DISP_BUF_) return;
MikamiUitOpen 0:ab7a35d87173 53
MikamiUitOpen 0:ab7a35d87173 54 xnD_[n] = xn;
MikamiUitOpen 0:ab7a35d87173 55 ynD_[n] = yn;
MikamiUitOpen 0:ab7a35d87173 56 }
MikamiUitOpen 0:ab7a35d87173 57
MikamiUitOpen 0:ab7a35d87173 58 // 入出力信号の波形の表示
MikamiUitOpen 0:ab7a35d87173 59 void Display() { waveDisp_->Execute(Trigger(xnD_, 1), factor_); }
MikamiUitOpen 0:ab7a35d87173 60
MikamiUitOpen 0:ab7a35d87173 61 private:
MikamiUitOpen 0:ab7a35d87173 62 static const uint32_t BACK_COLOR_ = GuiBase::ENUM_BACK;
MikamiUitOpen 0:ab7a35d87173 63 static const uint32_t AXIS_COLOR_ = 0xFFCCFFFF;
MikamiUitOpen 0:ab7a35d87173 64 static const uint32_t LINE_COLOR1_ = LCD_COLOR_CYAN;
MikamiUitOpen 0:ab7a35d87173 65 static const uint32_t LINE_COLOR2_ = LCD_COLOR_MAGENTA;
MikamiUitOpen 0:ab7a35d87173 66 static const int N_DISP_BUF_ = 1000; // 波形表示用のバッファのサイズ
MikamiUitOpen 0:ab7a35d87173 67
MikamiUitOpen 0:ab7a35d87173 68 LCD_DISCO_F746NG &lcd_;
MikamiUitOpen 0:ab7a35d87173 69 WaveformDisplay *waveDisp_;
MikamiUitOpen 0:ab7a35d87173 70 ZoomButton *zmButton_; // 波形表示:ズームイン/アウト用
MikamiUitOpen 0:ab7a35d87173 71
MikamiUitOpen 0:ab7a35d87173 72 Array<int16_t> xnD_; // 波形表示で使うバッファ(入力信号用)
MikamiUitOpen 0:ab7a35d87173 73 Array<int16_t> ynD_; // 波形表示で使うバッファ(出力信号用)
MikamiUitOpen 0:ab7a35d87173 74 int factor_; // 波形表示の際の標本化間隔に対応するピクセル数
MikamiUitOpen 0:ab7a35d87173 75 };
MikamiUitOpen 0:ab7a35d87173 76 }
MikamiUitOpen 0:ab7a35d87173 77 #endif // PANEL_MANIPULATOR_HPP