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