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に文字列を表示させる。

このパーツは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  
>>

関連資料・記事

参考サイト