2015年12月
    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」カテゴリの記事

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/1242669/45445608

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

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