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

Committer:
MikamiUitOpen
Date:
Fri Feb 07 05:23:48 2020 +0000
Revision:
13:4975e1c1d743
Parent:
12:21830002e12d
Child:
15:64250b58f933
14

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MikamiUitOpen 10:6e6c0f24e81f 1 //---------------------------------------------------------------
MikamiUitOpen 13:4975e1c1d743 2 // 液晶表示器 AQM1602XA-RN-GBW 用クラス(ヘッダ)
MikamiUitOpen 0:f177013dc4fc 3 //
MikamiUitOpen 13:4975e1c1d743 4 // Nucleo の場合のデフォルトのピン
MikamiUitOpen 13:4975e1c1d743 5 // D14 ---- 液晶モジュールの SDA ピン
MikamiUitOpen 13:4975e1c1d743 6 // D15 ---- 液晶モジュールの SCL ピン
MikamiUitOpen 11:f650f1e809a9 7 //
MikamiUitOpen 13:4975e1c1d743 8 // 2020/02/07, Copyright (c) 2020 MIKAMI, Naoki
MikamiUitOpen 10:6e6c0f24e81f 9 //---------------------------------------------------------------
MikamiUitOpen 0:f177013dc4fc 10
MikamiUitOpen 13:4975e1c1d743 11 #include "mbed.h"
MikamiUitOpen 13:4975e1c1d743 12 #include <string>
MikamiUitOpen 13:4975e1c1d743 13
MikamiUitOpen 0:f177013dc4fc 14 #ifndef AQM1602I2C_HPP
MikamiUitOpen 0:f177013dc4fc 15 #define AQM1602I2C_HPP
MikamiUitOpen 0:f177013dc4fc 16
MikamiUitOpen 0:f177013dc4fc 17 namespace Mikami
MikamiUitOpen 0:f177013dc4fc 18 {
MikamiUitOpen 0:f177013dc4fc 19 class Aqm1602
MikamiUitOpen 0:f177013dc4fc 20 {
MikamiUitOpen 0:f177013dc4fc 21 public:
MikamiUitOpen 13:4975e1c1d743 22 // コンストラクタ
MikamiUitOpen 13:4975e1c1d743 23 // SDA, SCA のデフォルト値は Nucleo に対応
MikamiUitOpen 0:f177013dc4fc 24 Aqm1602(PinName sda = D14, // SDA
MikamiUitOpen 0:f177013dc4fc 25 PinName scl = D15, // SCL
MikamiUitOpen 13:4975e1c1d743 26 uint32_t clock = 100000, // クロック: 100 kHz
MikamiUitOpen 13:4975e1c1d743 27 bool cursor = false, // カーソル: off
MikamiUitOpen 13:4975e1c1d743 28 bool blink = false); // 点滅: off
MikamiUitOpen 12:21830002e12d 29
MikamiUitOpen 13:4975e1c1d743 30 Aqm1602(I2C &i2c, // I2C オブジェクトの参照
MikamiUitOpen 13:4975e1c1d743 31 uint32_t clock = 100000, // クロック: 100 kHz
MikamiUitOpen 13:4975e1c1d743 32 bool cursor = false, // カーソル: off
MikamiUitOpen 13:4975e1c1d743 33 bool blink = false); // 点滅: off
MikamiUitOpen 8:854c244a7863 34
MikamiUitOpen 10:6e6c0f24e81f 35 virtual ~Aqm1602()
MikamiUitOpen 8:854c244a7863 36 { if (NULL != i2cPtr_) delete i2cPtr_; }
MikamiUitOpen 8:854c244a7863 37
MikamiUitOpen 13:4975e1c1d743 38 // 液晶表示器が接続されていない場合 false を返す
MikamiUitOpen 3:414f98234c94 39 bool IsConnected() { return connected_; }
MikamiUitOpen 3:414f98234c94 40
MikamiUitOpen 13:4975e1c1d743 41 // 表示のクリア
MikamiUitOpen 12:21830002e12d 42 void Clear();
MikamiUitOpen 1:18cd1c4212c3 43
MikamiUitOpen 13:4975e1c1d743 44 // コマンドの送信
MikamiUitOpen 3:414f98234c94 45 bool WriteCmd(uint8_t cmd) { return LcdTx(0x00, cmd); }
MikamiUitOpen 1:18cd1c4212c3 46
MikamiUitOpen 13:4975e1c1d743 47 // 1文字の書込み
MikamiUitOpen 3:414f98234c94 48 bool WriteChar(char data) { return LcdTx(0x40, data); }
MikamiUitOpen 1:18cd1c4212c3 49
MikamiUitOpen 13:4975e1c1d743 50 // 表示位置の設定, x: 0 ~ 15, y: 0, 1
MikamiUitOpen 0:f177013dc4fc 51 void SetXY(uint8_t x = 0, uint8_t y = 0)
MikamiUitOpen 0:f177013dc4fc 52 { WriteCmd(x + y*0x40 | 0x80);}
MikamiUitOpen 1:18cd1c4212c3 53
MikamiUitOpen 13:4975e1c1d743 54 // 文字列の書込み
MikamiUitOpen 12:21830002e12d 55 void WriteString(const string str);
MikamiUitOpen 1:18cd1c4212c3 56
MikamiUitOpen 13:4975e1c1d743 57 // 指定した位置から文字列の書込み
MikamiUitOpen 12:21830002e12d 58 void WriteStringXY(const string str, uint8_t x, uint8_t y);
MikamiUitOpen 1:18cd1c4212c3 59
MikamiUitOpen 13:4975e1c1d743 60 // 数値の書込み
MikamiUitOpen 9:74a845df6e7a 61 template <typename T> void WriteValue(const char fmt[], T value)
MikamiUitOpen 9:74a845df6e7a 62 {
MikamiUitOpen 12:21830002e12d 63 char str[N_CHR+1];
MikamiUitOpen 9:74a845df6e7a 64 sprintf(str, fmt, value);
MikamiUitOpen 9:74a845df6e7a 65 WriteString(str);
MikamiUitOpen 9:74a845df6e7a 66 }
MikamiUitOpen 9:74a845df6e7a 67
MikamiUitOpen 13:4975e1c1d743 68 // 指定した位置から数値の書込み
MikamiUitOpen 9:74a845df6e7a 69 template <typename T>
MikamiUitOpen 9:74a845df6e7a 70 void WriteValueXY(const char fmt[], T value, uint8_t x, uint8_t y)
MikamiUitOpen 9:74a845df6e7a 71 {
MikamiUitOpen 9:74a845df6e7a 72 SetXY(x, y);
MikamiUitOpen 9:74a845df6e7a 73 WriteValue(fmt, value);
MikamiUitOpen 9:74a845df6e7a 74 }
MikamiUitOpen 9:74a845df6e7a 75
MikamiUitOpen 13:4975e1c1d743 76 // 指定した行のクリア
MikamiUitOpen 0:f177013dc4fc 77 void ClearLine(uint8_t line);
MikamiUitOpen 1:18cd1c4212c3 78
MikamiUitOpen 13:4975e1c1d743 79 // コントラストの設定
MikamiUitOpen 0:f177013dc4fc 80 void SetContrast(uint8_t c);
MikamiUitOpen 0:f177013dc4fc 81
MikamiUitOpen 0:f177013dc4fc 82 private:
MikamiUitOpen 13:4975e1c1d743 83 // AQM1602A のアドレス
MikamiUitOpen 13:4975e1c1d743 84 // 左詰め 7-bit アドレス
MikamiUitOpen 0:f177013dc4fc 85 static const uint8_t LCD_ADDRESS_ = 0x7C;
MikamiUitOpen 0:f177013dc4fc 86 static const uint8_t N_CHR = 16;
MikamiUitOpen 0:f177013dc4fc 87
MikamiUitOpen 13:4975e1c1d743 88 I2C *i2cPtr_; // I2C オブジェクトのポインタ
MikamiUitOpen 13:4975e1c1d743 89 I2C &i2c_; // I2C オブジェクトの参照
MikamiUitOpen 13:4975e1c1d743 90 bool connected_; // false: 液晶表示器は接続されていないnected
MikamiUitOpen 0:f177013dc4fc 91
MikamiUitOpen 13:4975e1c1d743 92 // 初期化
MikamiUitOpen 8:854c244a7863 93 void Init(uint32_t clock, bool cursor, bool blink);
MikamiUitOpen 8:854c244a7863 94
MikamiUitOpen 13:4975e1c1d743 95 // コマンドとデータの送信
MikamiUitOpen 3:414f98234c94 96 bool LcdTx(uint8_t cmdData, uint8_t data);
MikamiUitOpen 0:f177013dc4fc 97
MikamiUitOpen 13:4975e1c1d743 98 // コピー・コンストラクタと代入演算子関数の禁止
MikamiUitOpen 0:f177013dc4fc 99 Aqm1602(const Aqm1602&);
MikamiUitOpen 0:f177013dc4fc 100 Aqm1602& operator=(const Aqm1602&);
MikamiUitOpen 0:f177013dc4fc 101 };
MikamiUitOpen 0:f177013dc4fc 102 }
MikamiUitOpen 13:4975e1c1d743 103 #endif // AQM1602I2C_HPP