2021年10月
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31            

最近のトラックバック

« 7segduino用タイマー駆動ライブラリ(暫定版) | トップページ | 秋月のI2C接続キャラクタLCDモジュールACM1602NIをArduinoで使う »

2012年5月28日 (月)

ArduinoのLiquidCrystalライブラリをコア部分とIO部分に分割する。

大分以前の記事になりますが、「ArduinoにLCDを信号線3本で繋ぐ」で、ArduinoのLiquidCrystalライブラリの改造をしました。この時は、丸々LiquidCrystalライブラリをコピーして書換えたのですが、その後未発表ながら、他の接続方式でLCDを駆動するライブラリをいくつか書いてきました。

ところが、この作業、実際に新規にコードを書く部分は少ないものの、もしやマクロ定義でバッティングしないかと、わざわざ定義名をそれそれ書換えて、その作業が結構面倒でした。また、それぞれにコマンドを発行する部分も重複するので何種類かのLCD出力をしたい場合、コードメモリも無駄に消費してしまいます。

そこで、今回、LiquidCrystalライブラリをコア部分とIO部分に分割することにしました。

「LcdCore_20120528.zip」をダウンロード

こちらがコア部分(LCDコマンドの発行部分)のライブラリです。
他のIO部分のライブラリと組み合わせて使い、スケッチ上では「#include <LcdCore.h>」を書く以外には特に何もする必要はありません。

「LCDIO_20120528.zip」をダウンロード

こちらが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」カテゴリの記事

コメント

この記事へのコメントは終了しました。

トラックバック


この記事へのトラックバック一覧です: ArduinoのLiquidCrystalライブラリをコア部分とIO部分に分割する。:

« 7segduino用タイマー駆動ライブラリ(暫定版) | トップページ | 秋月のI2C接続キャラクタLCDモジュールACM1602NIをArduinoで使う »

ウェブページ

無料ブログはココログ