CQエレクトロニクス・セミナ「実習・マイコンを動かしながら学ぶディジタル・フィルタ」で使うプログラムを,入力として STM32F746 の内蔵 ADC を使うように変更したもの. http://seminar.cqpub.co.jp/ccm/ES18-0020
Dependencies: mbed Array_Matrix BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG
MyFiles/LcdPanel.hpp@2:dd48e1e59daa, 2018-03-12 (annotated)
- Committer:
- MikamiUitOpen
- Date:
- Mon Mar 12 05:10:31 2018 +0000
- Revision:
- 2:dd48e1e59daa
- Parent:
- 0:ab7a35d87173
3
Who changed what in which revision?
User | Revision | Line number | New 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 |