akira.kei が 2026年06月11日17時08分11秒 に編集
コメント無し
本文の変更
[<前の記事](https://elchika.com/article/e82c2871-c24c-4905-bed0-f859ada7fb2f/) : 次の記事> ## 自前ライブラリAQMCHAR
Arduino IDEでスケッチを新規で作って名前をつけて保存した後、そのinoファイルが含まれるフォルダにArduinoライブラリの公式ページから```LyquidCrystal.cpp```および```LyquidCrystal.h```をコピーする。更にそれぞれを```AQMCHAR.cpp```と```AQMCHAR.h```に変更したコピーを同じフォルダに入れておく。 例えばスケッチを```AQM1602test.ino```とすると、同じフォルダ内には以下の5つのファイルが含まれる。 1. ```AQM1602test.ino``` 1. ```AQMCHAR.cpp``` 1. ```AQMCHAR.h``` 1. ```LyquidCrystal.cpp``` 1. ```LyquidCrystal.h``` Arduino IDEでこのスケッチを開いていると以下のように上部にタブが並ぶようになる。  ちなみに、この自前ライブラリが出来たらスケッチの内容は以下のように出来るようになる。 ```Arduino:AQM1602test.ino #include <Wire.h> #include "AQM1602.h" AQM1602 lcd=AQM1602(0x3E); void setup() { Wire.begin(); lcd.begin(16,2); lcd.setContrast(10); lcd.print("AQM1602XA-RN-GBW"); lcd.setCursor(0,1); for(byte i=0xB1;i<0xB1+16;i++) lcd.write(i); delay(3000); lcd.home(); } byte cnt=0; void loop() { lcd.write(cnt++); delay(10); } ``` ## まずはヘッダファイルAQMCHAR.h 冒頭のラベル```LiquidCrystal_h```を```AQMCHAR_h```に変更する。但し、変更しなくても問題ない。単に重複しないラベルならなんでもいいからだ。 この下にはHD44780(日立)の定義が並んでいるが、その最後に以下を追加する。 ```Arduino: #define LCD_EXTENDED_IS 0x01 #define LCD_NORMAL_IS 0x00 ``` これは拡張モードに関する定義でオリジナルのHD44780には無い。今は初期化とコントラスト調整に少しだけ簡易的に使っているが、そのうち整理していきたい。 コンストラクタの定義は前の記事にも示したように、以下のようなシンプルなものだ。 ```Arduino: class AQM1602 : public Print { public: AQM1602(uint8_t addr); void begin(uint8_t cols, uint8_t rows); ``` ```LyquidCrystal```の方には初期化シーケンスとして```init```が用意されていたが、初期化は```begin```内で行うことにしてある。```setup()```内で```Wire.bigin()```してから```lcd.begin(16,2);```のように初期化する。