気ままにIoTメモ

Iotに関わること関わらないこと備忘録

I2C接続小型キャラクタLCDモジュール(2)

I2Cで制御するLCD用のライブラリを作ったので、使い方のメモ。

回路図はI2C接続小型キャラクタLCDモジュール(1)を参考にしてください。

まずは使っているモジュールのインストール。

npm install i2c
npm install q

サンプルコード

var Lcd = require('./lcd');
// lcd = new Lcd({cols:16, rows:2, contrast: 35}); 
// lcd = new Lcd(); // デフォルト値は省略可
lcd = new Lcd({largeFont:true, rows:1});

lcd.on('ready', function(){
    lcd.print('Hello, world!');
});

I2Cのアドレスは0x3e、16文字2行、コントラストは35がデフォルトになっています。
アドレスを変更したい時には直接ライブラリ内のアドレスを変える必要あり。
カタカナは使う予定が無かったので、ASCIIコード内の文字しか表示できないようになっています。

2行分の文字を表示させる時にはlargeFontとrowsの両方が必要になります。

f:id:htn_hs:20170115004035j:plain

プログラムはこちら
iot_lab/07_i2c_lcd at master · hsgwa/iot_lab · GitHub

本当はCのマクロのようなビット演算

#define bitcheck(a,b) (a >> b) & 1
#define bitset(a,b)     a |= (1 << b)
#define bitunset(a,b)  a &= ~(1 << b)

のようなことをしたかったのですが、プリミティブ型は値渡しになってしまうので毎度丁寧にビット演算式を書いてます(Javascriptにビット操作は向かないのですね)。

今回、ライブラリの作成にはNode.js Hitachi HD44780 LCD driverを参考にさせていただきました。

参考:
aqm0802a-i2c-lcd by saraf
GitHub - fivdi/lcd: Node.js Hitachi HD44780 LCD driver
H8で学ぶマイコン開発入門(7):LCDに文字を表示させるプログラミング (1/3) - MONOist(モノイスト)
i2c
トリッキーなコード - bit演算マクロ
【Javascript】値渡しと参照渡しについてあらためてまとめてみる - Qiita