Arduino 資料一覧
Node.jsでI2C接続小型LCD(AQM0802A-RN-GBW)に文字列を表示させる
2017/02/18更新
対応バージョン: Node.js 4.2.6, Johnny-Five 0.10.6
Node.jsでI2C接続のLCDに文字列を表示させる。
I2C接続小型LCDモジュール(8x2行) ピッチ変換モジュール(完成品) (秋月電子通商)
このパーツはLCDモジュールAQM0802A-RN-GBWとピッチ変換基板AE-AQM0802を組み合わせたもので、コントローラICはST7032iが使われている。
Node.jsを動かす母艦はUbuntu 16.04とする。
結線
ピッチ変換基板に対する結線は以下の通り。
VDD: 3.3Vに接続
RESET: (未使用)
SCL(クロック): A5に接続
SDA(データ): A4に接続
GND: GNDに接続
I2Cバスのプルアップ抵抗(10kΩ)はピッチ変換基盤側に用意されている(基盤のPUの2箇所がハンダでショートされている)ため改めて抵抗を使用する必要はない。
ソース
以下のようなコードを書きNode.jsで実行する。
データシートに従って細かい制御ができるものの、ここではいったん文字列を表示している。
lcd.js
// AQM0802A-RN-GBW - I2C接続小型液晶 8文字x2行
//
// ピン配置
// 1. VDD(3.3Vに接続)
// 2. RESET (*)未使用
// 3. SCL(クロック)
// 4. SDA(データ)
// 5. GND
//
// 初期設定
//
var five = require("johnny-five");
var board = new five.Board();
var LCD_ADR = 0x3E; // コントローラIC ST7032iのI2Cアドレス(固定)
var clm_list = [ // 送信コマンドを変えることで表示行を変える
0x80, // 0行目表示
0xc0 // 1行目表示
];
//
// 関数定義
//
// LCD制御
var lcd_cmd = function(cmd) {
board.io.i2cWrite(LCD_ADR, 0x00, cmd);
}
// データ送信
var lcd_data = function(lcd_data) {
board.io.i2cWrite(LCD_ADR, 0x40, lcd_data);
}
// 出力位置指定(行, 列)
var lcd_setCursor = function(row, clm){
lcd_cmd(clm_list[row] + clm);
}
// LCDクリア
var lcd_clear = function() {
lcd_cmd(0x01);
}
// LCD初期化
// (*)コントラストは好みに応じて微調整するとよい
var lcd_init = function() {
board.io.i2cConfig();
lcd_cmd(0x38); // 画面サイズ指定(8文字 x 2行)
lcd_cmd(0x39); // 拡張コマンド設定
lcd_cmd(0x14); // 内部OSC周波数
lcd_cmd(0x7A); // コントラスト
lcd_cmd(0x56); // 電源(3V)/アイコンOFF/コントラスト
lcd_cmd(0x6A); // フォロワー操作
lcd_cmd(0x38); // 拡張コマンド設定終了
lcd_cmd(0x0C); // 表示ON
lcd_clear(); // LCDクリア
}
//
// メイン
//
board.on("ready", function() {
// LCD出力
var lcd_print = function(msg) {
for(var i = 0; i < msg.length; i++) {
lcd_data(msg.charCodeAt(i)); // 1文字出力
}
}
lcd_init(); // LCD初期化
lcd_clear(); // LCDクリア
lcd_setCursor(0, 0); // カーソル位置(行, 列)
lcd_print("I Love"); // 表示文字列
lcd_setCursor(1, 0);
lcd_print("Arduino!");
});
実行
% node lcd.js 1487422161958 Device(s) /dev/ttyACM0 1487422161965 Connected /dev/ttyACM0 1487422165206 Repl Initialized >>
関連資料・記事
[Arduino] I2C接続小型LCD(AQM0802A-RN-GBW)に文字列を表示させる
[Arduino] Node.jsのJohnny-Fiveフレームワークを使ってArduino UnoでLチカ
[Arduino] ArduinoをNode.jsで操作する準備としてArduinoにFirmataプログラムを書き込む際にArduino IDEを使わずコマンドラインで実行する方法(GORT)
参考サイト
Arduino (Wikipedia)
Arduino技術情報 (Qiita)
Arduino関連情報 (Device Plus)
Arduino記事一覧 (Think IT)
Node.js技術情報 (Qiita)
Johnny-Five技術情報 (Qiita)
エレクトロニクス豆知識 (ROHM)