CQエレクトロニクス・セミナ「実習・マイコンを動かしながら学ぶディジタル・フィルタ」で使うプログラムを,入力として STM32F746 の内蔵 ADC を使うように変更したもの. http://seminar.cqpub.co.jp/ccm/ES18-0020
Dependencies: mbed Array_Matrix BSP_DISCO_F746NG LCD_DISCO_F746NG TS_DISCO_F746NG
LcdPanel.hpp
00001 //----------------------------------------------------------- 00002 // ディジタルフィルタ実験のためのプラットフォームの 00003 // LCD パネル表示と操作で使う 00004 // 00005 // 2017/10/07, Copyright (c) 2017 MIKAMI, Naoki 00006 //----------------------------------------------------------- 00007 00008 #ifndef PANEL_MANIPULATOR_HPP 00009 #define PANEL_MANIPULATOR_HPP 00010 00011 #include "F746_GUI.hpp" 00012 #include "NumericUpDown.hpp" 00013 #include "Zoom.hpp" 00014 #include "WaveformDisplay.hpp" 00015 #include "Trigger.hpp" 00016 00017 namespace Mikami 00018 { 00019 class LcdPanel 00020 { 00021 public: 00022 LcdPanel() : lcd_(GuiBase::GetLcd()), 00023 xnD_(N_DISP_BUF_), ynD_(N_DISP_BUF_), factor_(1) 00024 { 00025 Label title(240, 10, "Digital Filter LAB using internal ADC", 00026 Label::CENTER, Font16); 00027 00028 const uint16_t Y0 = 170; 00029 // 凡例 00030 lcd_.SetTextColor(LINE_COLOR1_); 00031 lcd_.DrawHLine(360, Y0+6, 50); 00032 Label label1(420, Y0, "Input"); 00033 lcd_.SetTextColor(LINE_COLOR2_); 00034 lcd_.DrawHLine(360, Y0+26, 50); 00035 Label label2(420, Y0+20, "Output"); 00036 00037 waveDisp_ = new WaveformDisplay(lcd_, 30, 90, xnD_, ynD_, 400, 8, 00038 AXIS_COLOR_, 00039 LINE_COLOR1_, LINE_COLOR2_, 00040 BACK_COLOR_); 00041 00042 // 時間軸の拡大率は 8 倍まで 00043 zmButton_ = new ZoomButton(240, Y0, 40, 30, 8); 00044 } 00045 00046 // ズームイン/アウト・ボタンの処理 00047 void Update() { zmButton_->Touched(factor_); } 00048 00049 // 入出力信号のデータを表示用バッファへ格納 00050 void Store(int16_t xn, int16_t yn, int n) 00051 { 00052 if (n >= N_DISP_BUF_) return; 00053 00054 xnD_[n] = xn; 00055 ynD_[n] = yn; 00056 } 00057 00058 // 入出力信号の波形の表示 00059 void Display() { waveDisp_->Execute(Trigger(xnD_, 1), factor_); } 00060 00061 private: 00062 static const uint32_t BACK_COLOR_ = GuiBase::ENUM_BACK; 00063 static const uint32_t AXIS_COLOR_ = 0xFFCCFFFF; 00064 static const uint32_t LINE_COLOR1_ = LCD_COLOR_CYAN; 00065 static const uint32_t LINE_COLOR2_ = LCD_COLOR_MAGENTA; 00066 static const int N_DISP_BUF_ = 1000; // 波形表示用のバッファのサイズ 00067 00068 LCD_DISCO_F746NG &lcd_; 00069 WaveformDisplay *waveDisp_; 00070 ZoomButton *zmButton_; // 波形表示:ズームイン/アウト用 00071 00072 Array<int16_t> xnD_; // 波形表示で使うバッファ(入力信号用) 00073 Array<int16_t> ynD_; // 波形表示で使うバッファ(出力信号用) 00074 int factor_; // 波形表示の際の標本化間隔に対応するピクセル数 00075 }; 00076 } 00077 #endif // PANEL_MANIPULATOR_HPP
Generated on Sun Jul 17 2022 01:09:34 by 1.7.2