ArduinoのLiquidCrystalライブラリをコア部分とIO部分に分割する。
大分以前の記事になりますが、「ArduinoにLCDを信号線3本で繋ぐ」で、ArduinoのLiquidCrystalライブラリの改造をしました。この時は、丸々LiquidCrystalライブラリをコピーして書換えたのですが、その後未発表ながら、他の接続方式でLCDを駆動するライブラリをいくつか書いてきました。
ところが、この作業、実際に新規にコードを書く部分は少ないものの、もしやマクロ定義でバッティングしないかと、わざわざ定義名をそれそれ書換えて、その作業が結構面倒でした。また、それぞれにコマンドを発行する部分も重複するので何種類かのLCD出力をしたい場合、コードメモリも無駄に消費してしまいます。
そこで、今回、LiquidCrystalライブラリをコア部分とIO部分に分割することにしました。
こちらがコア部分(LCDコマンドの発行部分)のライブラリです。
他のIO部分のライブラリと組み合わせて使い、スケッチ上では「#include <LcdCore.h>」を書く以外には特に何もする必要はありません。
こちらがI/O部分のライブラリです。
このライブラリをLcdCoreライブラリと同時に使うことにより、元のLiquidCrystalライブラリと同様に動作します。
構文、パラメータについては、Arduino 日本語リファレンスの「LiquidCrystal()」をご参照下さい。
スケッチ例
#include <LcdCore.h> // コアライブラリ #include <LCDIO.h> // I/Oライブラリ LCDIO lcd(12, 11, 5, 4, 3, 2); // LiquidCrystal→LCDIO void setup() { lcd.begin(16, 2); lcd.print("hello, world!"); } void loop() { lcd.setCursor(0, 1); lcd.print(millis()/1000); }
スケッチもこの様にLiquidCrystalライブラリ使用のものから「#include ~」と「~ lcd(12, 11, 5, 4, 3, 2);」を差し替えるだけでOKです。
« 7segduino用タイマー駆動ライブラリ(暫定版) | トップページ | 秋月のI2C接続キャラクタLCDモジュールACM1602NIをArduinoで使う »
「Arduino」カテゴリの記事
- bitDuinoでメロディを奏でてみた(2014.09.09)
- 世界最小?のArduino互換ボードを作ってみた(暫定版)(2014.08.27)
- 知らないとソン!? Arduinoの小ネタ色々(2014.07.05)
- WaveシールドをArduino MegaやArduino Leonardoで使える様にしてみた(2014.06.15)
この記事へのコメントは終了しました。
« 7segduino用タイマー駆動ライブラリ(暫定版) | トップページ | 秋月のI2C接続キャラクタLCDモジュールACM1602NIをArduinoで使う »
コメント