// // Raspberry Pi TFT LCD module (for M032C1289TP w/SSD1289) // xkozima@myu.ac.jp // TFT 画面表示には spidev0.0 (16MHz) // タッチパネルには spidev0.1 (1MHz) #ifndef TFT_H #define TFT_H #include "raspGPIO.h" #include "raspSPI.h" // GPIO 端子番号 #define TFT_GPIO_DC 25 // O: ディスプレーへ D/C 出力 #define TFT_GPIO_PENIRQ 24 // I: タッチパネル // 画面サイズ #define TFT_WIDTH 320 #define TFT_HEIGHT 240 #define TFT_BYTES (TFT_WIDTH*TFT_HEIGHT*2) // タッチの種類 #define TFT_TOUCH_NONE 0 // タッチなし #define TFT_TOUCH_1 1 // 左ボタン // タッチの安定化 #define TFT_TOUCH_ALPHA 0.2 // LPF 係数(大きいほど追従性大) class TFT { public: // 初期化 void init(); // フレーム転送 void sendFrame(unsigned char *frame); void sendBuffer(unsigned char *buffer, int x, int y, int width, int hegith); // テストパターン代入 void setTestPattern(unsigned char *buffer, int width, int height); // タッチパネル(TFT_TOUCH_NONE, TFT_TOUCH_DOWN を返す) int getTouch(int *x, int *y); private: SPI spi0; // TFT 表示部(SSD1289)への SPI 接続 void sendCommand1(unsigned char cmdOne); void sendCommand2(unsigned char upper, unsigned char lower); void sendData2(unsigned char upper, unsigned char lower); void sendCommandData2(unsigned char cmd, unsigned char data1, unsigned char data2); void sendBufferN(unsigned char *buffer, int len); SPI spi1; // TFT タッチ部(XPT2046)への SPI 接続 int touchX, touchY, touchN; // タッチ座標,連続カウント }; #endif