I2C 接続の LCD AQM1602XA-RN-GBW 用のライブラリ. Library for LCD 1602XA-RN-GBW connected using I2C interface.
Dependents: UIT2_MovingAv_Intr UIT2_VariableFIR UIT2_VowelSynthesizer UIT2_ALE_LeakyLMS ... more
AQM1602.hpp
- Committer:
- MikamiUitOpen
- Date:
- 2020-04-16
- Revision:
- 15:64250b58f933
- Parent:
- 13:4975e1c1d743
File content as of revision 15:64250b58f933:
//--------------------------------------------------------------- // 液晶表示器 AQM1602XA-RN-GBW 用クラス,ヘッダ // // Nucleo の場合のデフォルトのピン // D14 ---- 液晶モジュールの SDA ピン // D15 ---- 液晶モジュールの SCL ピン // // 割込みサービス・ルーチン内に記述した場合でも動作する // このプログラムを作った際の mbed のリビジョン:Rev.172 // // 2020/04/16, Copyright (c) 2020 MIKAMI, Naoki //--------------------------------------------------------------- #include "mbed.h" #include <string> #ifndef AQM1602I2C_HPP #define AQM1602I2C_HPP namespace Mikami { class Aqm1602 { public: // コンストラクタ // SDA, SCA のデフォルト値は Nucleo に対応 Aqm1602(PinName sda = D14, // SDA PinName scl = D15, // SCL uint32_t clock = 100000, // クロック: 100 kHz bool cursor = false, // カーソル: off bool blink = false); // 点滅: off Aqm1602(I2C &i2c, // I2C オブジェクトの参照 uint32_t clock = 100000, // クロック: 100 kHz bool cursor = false, // カーソル: off bool blink = false); // 点滅: off virtual ~Aqm1602() { if (NULL != i2cPtr_) delete i2cPtr_; } // 液晶表示器が接続されていない場合 false を返す bool IsConnected() const { return connected_; } // 表示のクリア void Clear() const; // コマンドの送信 bool WriteCmd(uint8_t cmd) const { return LcdTx(0x00, cmd); } // 1文字の書込み bool WriteChar(char data) const { return LcdTx(0x40, data); } // 表示位置の設定, x: 0 ~ 15, y: 0, 1 void SetXY(uint8_t x = 0, uint8_t y = 0) const { WriteCmd(x + y*0x40 | 0x80);} // 文字列の書込み void WriteString(const string str) const; // 指定した位置から文字列の書込み void WriteStringXY(const string str, uint8_t x, uint8_t y) const; // 数値の書込み template <typename T> void WriteValue(const char fmt[], T value) const { char str[N_CHR+1]; sprintf(str, fmt, value); WriteString(str); } // 指定した位置から数値の書込み template <typename T> void WriteValueXY(const char fmt[], T value, uint8_t x, uint8_t y) const { SetXY(x, y); WriteValue(fmt, value); } // 指定した行のクリア void ClearLine(uint8_t line) const; // コントラストの設定 void SetContrast(uint8_t c) const; private: // AQM1602A のアドレス // 左詰め 7-bit アドレス static const uint8_t LCD_ADDRESS_ = 0x7C; static const uint8_t N_CHR = 16; I2C *const i2cPtr_; // I2C オブジェクトのポインタ I2C &i2c_; // I2C オブジェクトの参照 bool connected_; // false: 液晶表示器は接続されていない // 初期化 void Init(uint32_t clock, bool cursor, bool blink); // コマンドとデータの送信 bool LcdTx(uint8_t cmdData, uint8_t data) const; // コピー・コンストラクタと代入演算子関数の禁止 Aqm1602(const Aqm1602&); Aqm1602& operator=(const Aqm1602&); }; } #endif // AQM1602I2C_HPP