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

Revision:
15:64250b58f933
Parent:
13:4975e1c1d743
--- a/AQM1602.hpp	Fri Feb 14 07:14:51 2020 +0000
+++ b/AQM1602.hpp	Thu Apr 16 04:22:48 2020 +0000
@@ -1,11 +1,14 @@
 //---------------------------------------------------------------
-//  液晶表示器 AQM1602XA-RN-GBW 用クラス(ヘッダ)
+//  液晶表示器 AQM1602XA-RN-GBW 用クラス,ヘッダ
 //
 //  Nucleo の場合のデフォルトのピン
 //      D14 ---- 液晶モジュールの SDA ピン
 //      D15 ---- 液晶モジュールの SCL ピン
 //
-//  2020/02/07, Copyright (c) 2020 MIKAMI, Naoki
+//  割込みサービス・ルーチン内に記述した場合でも動作する
+//  このプログラムを作った際の mbed のリビジョン:Rev.172
+//
+//  2020/04/16, Copyright (c) 2020 MIKAMI, Naoki
 //---------------------------------------------------------------
 
 #include "mbed.h"
@@ -25,40 +28,41 @@
                 PinName scl = D15,          // SCL
                 uint32_t clock = 100000,    // クロック: 100 kHz
                 bool cursor = false,        // カーソル:  off
-                bool blink = false);        // 点滅:     off
+                bool blink = false);        // 点滅:      off
 
         Aqm1602(I2C &i2c,                   // I2C オブジェクトの参照
                 uint32_t clock = 100000,    // クロック: 100 kHz
                 bool cursor = false,        // カーソル:  off
-                bool blink = false);        // 点滅:     off
+                bool blink = false);        // 点滅:      off
 
         virtual ~Aqm1602()
         {   if (NULL != i2cPtr_) delete i2cPtr_;    }
 
         // 液晶表示器が接続されていない場合 false を返す
-        bool IsConnected() { return connected_; }
+        bool IsConnected() const { return connected_; }
         
         // 表示のクリア
-        void Clear();
+        void Clear() const;
         
         // コマンドの送信
-        bool WriteCmd(uint8_t cmd) { return LcdTx(0x00, cmd); }
+        bool WriteCmd(uint8_t cmd) const { return LcdTx(0x00, cmd); }
         
         // 1文字の書込み
-        bool WriteChar(char data) { return LcdTx(0x40, data); }
+        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)
+        void SetXY(uint8_t x = 0, uint8_t y = 0) const
         { WriteCmd(x + y*0x40 | 0x80);}
         
         // 文字列の書込み
-        void WriteString(const string str);
+        void WriteString(const string str) const;
         
         // 指定した位置から文字列の書込み
-        void WriteStringXY(const string str, uint8_t x, uint8_t y);
+        void WriteStringXY(const string str, uint8_t x, uint8_t y) const;
 
         // 数値の書込み
-        template <typename T> void WriteValue(const char fmt[], T value)
+        template <typename T>
+        void WriteValue(const char fmt[], T value) const
         {
             char str[N_CHR+1];
             sprintf(str, fmt, value);
@@ -67,17 +71,18 @@
 
         // 指定した位置から数値の書込み
         template <typename T>
-        void WriteValueXY(const char fmt[], T value, uint8_t x, uint8_t y)
+        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);
+        void ClearLine(uint8_t line) const;
 
         // コントラストの設定
-        void SetContrast(uint8_t c);
+        void SetContrast(uint8_t c) const;
 
     private:
         // AQM1602A のアドレス
@@ -85,15 +90,15 @@
         static const uint8_t LCD_ADDRESS_ = 0x7C;
         static const uint8_t N_CHR = 16;
 
-        I2C *i2cPtr_;       // I2C オブジェクトのポインタ
+        I2C *const i2cPtr_; // I2C オブジェクトのポインタ
         I2C &i2c_;          // I2C オブジェクトの参照
-        bool connected_;    // false: 液晶表示器は接続されていないnected
+        bool connected_;    // false: 液晶表示器は接続されていない
 
         // 初期化
         void Init(uint32_t clock, bool cursor, bool blink);
         
         // コマンドとデータの送信
-        bool LcdTx(uint8_t cmdData, uint8_t data);
+        bool LcdTx(uint8_t cmdData, uint8_t data) const;
 
         // コピー・コンストラクタと代入演算子関数の禁止
         Aqm1602(const Aqm1602&);