lcd handler for weather predictor

Dependencies:   C12832_lcd LCD_fonts

Committer:
yukari_hinata
Date:
Wed Jan 28 15:52:09 2015 +0000
Revision:
1:4399eaceb999
Parent:
0:896ba7a737d9
Child:
2:459f757bd2f4
modified

Who changed what in which revision?

UserRevisionLine numberNew contents of line
yukari_hinata 0:896ba7a737d9 1 #ifndef GRAPHICHANDLER_H_INCLUDED
yukari_hinata 0:896ba7a737d9 2 #define GRAPHICHANDLER_H_INCLUDED
yukari_hinata 0:896ba7a737d9 3
yukari_hinata 0:896ba7a737d9 4 #include "mbed.h"
yukari_hinata 0:896ba7a737d9 5 #include "C12832_lcd.h"
yukari_hinata 0:896ba7a737d9 6 #include "Arial_9.h"
yukari_hinata 0:896ba7a737d9 7 #include "Small_7.h"
yukari_hinata 0:896ba7a737d9 8 #include "Small_6.h"
yukari_hinata 0:896ba7a737d9 9
yukari_hinata 0:896ba7a737d9 10 // 天候を表す -> どこかのヘッダに記述予定
yukari_hinata 0:896ba7a737d9 11 typedef enum {
yukari_hinata 0:896ba7a737d9 12 SHINY,
yukari_hinata 0:896ba7a737d9 13 CLOUDY,
yukari_hinata 0:896ba7a737d9 14 RAINY,
yukari_hinata 0:896ba7a737d9 15 SNOWY,
yukari_hinata 0:896ba7a737d9 16 } WEATHER_STATUS;
yukari_hinata 0:896ba7a737d9 17
yukari_hinata 0:896ba7a737d9 18 // 表示モード
yukari_hinata 0:896ba7a737d9 19 typedef enum {
yukari_hinata 0:896ba7a737d9 20 LEARNING, // 観測/学習中
yukari_hinata 0:896ba7a737d9 21 DISPLAYING, // 表示中
yukari_hinata 0:896ba7a737d9 22 } DISPLAY_STATUS;
yukari_hinata 0:896ba7a737d9 23
yukari_hinata 0:896ba7a737d9 24 class GraphicHandler
yukari_hinata 0:896ba7a737d9 25 {
yukari_hinata 0:896ba7a737d9 26 private:
yukari_hinata 0:896ba7a737d9 27 time_t now_time; // 独自に保持する時間構造体
yukari_hinata 1:4399eaceb999 28 time_t last_learned_time; // 最後に学習した時刻
yukari_hinata 0:896ba7a737d9 29 int data_dimension; // 観測/予測データ次元
yukari_hinata 0:896ba7a737d9 30 float* now_data; // 現在の観測データ
yukari_hinata 0:896ba7a737d9 31 int predict_length; // 予測系列長
yukari_hinata 0:896ba7a737d9 32 int seq_time_interval; // 予測時間の間隔:単位は分
yukari_hinata 0:896ba7a737d9 33 int current_display_no; // 現在の画面No
yukari_hinata 0:896ba7a737d9 34 int current_image_no; // 現在のビットマップNo
yukari_hinata 0:896ba7a737d9 35 float* predict_data; // 予測データ
yukari_hinata 0:896ba7a737d9 36 int* predict_weather; // 予測天候の列
yukari_hinata 0:896ba7a737d9 37 Ticker time_ticker; // 時間更新用のティッカー
yukari_hinata 0:896ba7a737d9 38 Ticker image_ticker; // ビットマップアニメーションのティッカー
yukari_hinata 0:896ba7a737d9 39 InterruptIn* joy_left; // ジョイスティックの操作割り込み入力
yukari_hinata 0:896ba7a737d9 40 InterruptIn* joy_right;
yukari_hinata 0:896ba7a737d9 41 C12832_LCD lcd; // ステータス表示ターゲットのLCD
yukari_hinata 0:896ba7a737d9 42
yukari_hinata 0:896ba7a737d9 43 public:
yukari_hinata 0:896ba7a737d9 44 // やること: now_timeの大麻割り込み設定, predic_lenの設定, 配列アロケート
yukari_hinata 0:896ba7a737d9 45 GraphicHandler(int, // 観測データの次元(現在, 温度/気圧/湿度で3)
yukari_hinata 0:896ba7a737d9 46 int, // 時間間隔
yukari_hinata 0:896ba7a737d9 47 int); // 予測系列の長さ.
yukari_hinata 0:896ba7a737d9 48
yukari_hinata 0:896ba7a737d9 49 ~GraphicHandler(void);
yukari_hinata 0:896ba7a737d9 50
yukari_hinata 0:896ba7a737d9 51 // 予測データと天候のセット.
yukari_hinata 0:896ba7a737d9 52 void set_predict_data(float*, // 予測データ
yukari_hinata 0:896ba7a737d9 53 int*); // 予測天候
yukari_hinata 0:896ba7a737d9 54
yukari_hinata 0:896ba7a737d9 55 // 現在の観測データのセット
yukari_hinata 0:896ba7a737d9 56 void set_now_data(float*); // 観測データ
yukari_hinata 0:896ba7a737d9 57
yukari_hinata 0:896ba7a737d9 58 // 描画更新
yukari_hinata 0:896ba7a737d9 59 void update_draw(void);
yukari_hinata 0:896ba7a737d9 60
yukari_hinata 0:896ba7a737d9 61 // 天候ビットマップの描画
yukari_hinata 0:896ba7a737d9 62 void draw_weather_bitmap_at(int, // 天候
yukari_hinata 0:896ba7a737d9 63 int, // 画像No(アニメーション表示のため)
yukari_hinata 0:896ba7a737d9 64 int, // x座標
yukari_hinata 0:896ba7a737d9 65 int); // y座標
yukari_hinata 0:896ba7a737d9 66 // 時間の描画
yukari_hinata 0:896ba7a737d9 67 void draw_time_at(unsigned char*, // フォント識別
yukari_hinata 0:896ba7a737d9 68 int, // 現在時刻からの経過時間(予測時刻を表現):単位は分
yukari_hinata 0:896ba7a737d9 69 int, // x座標
yukari_hinata 0:896ba7a737d9 70 int); // y座標
yukari_hinata 0:896ba7a737d9 71 // 観測/予測データの描画
yukari_hinata 0:896ba7a737d9 72 void draw_data_at(float, // データ数値
yukari_hinata 0:896ba7a737d9 73 const char*, // 単位を表す文字列
yukari_hinata 0:896ba7a737d9 74 unsigned char*, // フォント識別
yukari_hinata 0:896ba7a737d9 75 int, // x座標
yukari_hinata 0:896ba7a737d9 76 int); // y座標
yukari_hinata 0:896ba7a737d9 77 // テキストの描画. フォント/サイズもラップ
yukari_hinata 0:896ba7a737d9 78 void draw_text_at(const char*, // テキスト
yukari_hinata 0:896ba7a737d9 79 unsigned char*, // フォント識別文字列(Arial_9, Small_6, Small_7)
yukari_hinata 0:896ba7a737d9 80 int, // x座標
yukari_hinata 0:896ba7a737d9 81 int); // y座標
yukari_hinata 0:896ba7a737d9 82 // 予測確率の描画.
yukari_hinata 0:896ba7a737d9 83 void draw_percentage_at(float, // 確率値[0,1]
yukari_hinata 0:896ba7a737d9 84 unsigned char*, // フォント
yukari_hinata 0:896ba7a737d9 85 int, // x座標
yukari_hinata 0:896ba7a737d9 86 int); // y座標
yukari_hinata 0:896ba7a737d9 87
yukari_hinata 0:896ba7a737d9 88 // ジョイスティックの入力割り込みハンドラ
yukari_hinata 0:896ba7a737d9 89 void joyleft_isr(void);
yukari_hinata 0:896ba7a737d9 90 void joyright_isr(void);
yukari_hinata 0:896ba7a737d9 91
yukari_hinata 0:896ba7a737d9 92 // 時間更新. 定期的に呼び出す(一分毎でええやん!)
yukari_hinata 0:896ba7a737d9 93 void update_time(void);
yukari_hinata 1:4399eaceb999 94 // 最終学習時刻の更新
yukari_hinata 1:4399eaceb999 95 void update_last_learned_time(void);
yukari_hinata 0:896ba7a737d9 96 // ビットマップ画像の更新.
yukari_hinata 0:896ba7a737d9 97 void update_image(void);
yukari_hinata 0:896ba7a737d9 98 };
yukari_hinata 0:896ba7a737d9 99
yukari_hinata 0:896ba7a737d9 100 #endif /* GRAPHICHANDLER_H_INCLUDED */