2016年8月12日金曜日

Johnny-Fiveでマイコン制御30 - LCD その2

○LCDオブジェクトを作成する
 LCDを制御するには、LCDオブジェクトを使います。LCDオブジェクトは、物理的なボードに接続された単一のLCDを表すオブジェクトです。LCDオブジェクトを作成するには、LCDクラスのコンストラクタを使います。

・パラレル接続
 LCDをパラレル接続で制御するためのLCDオブジェクトを作成するには、LCDの「RS
EN」「D4」「D5」「D6」「D7(D4~D7DB4~DB7と表記される場合もある)を接続するピン番号を指定します。たとえば、7から12ピンをLCDの制御ピンに使うLCDオブジェクトを作成するには、次のように書きます。
new five.LCD({
  // LCDピン名   RS EN D4 D5 D6 D7
  // Arduinoピン  7  8  9 10 11 12
  pins: [7, 8, 9, 10, 11, 12]
});

・配線図


I2C接続
 I2CインターフェイスのLCDを使用する場合は、「controller」プロパティにLCDコントローラの名前を指定します。たとえば、LCDコントローラにPCF8574Aを使用したLCDを制御するLCDオブジェクトを作成するには、次のように書きます。
new five.LCD({
  controller: "PCF8574A"
});

・配線図


○LCDの行数・列数を指定する
 LCDの行数は「rows」プロパティで指定します。規定値は「2」です。行数は「cols」プロパティで指定します。規定値は「16」です。たとえば、4×20(420)LCDを制御するためのLCDオブジェクトを作成するには、次のように書きます。
  // 4×20LCDオブジェクトを作成
  var lcd = new five.LCD({
              pins: [7, 8, 9, 10, 11, 12],
              rows: 4,
              cols: 20
           });

10.4 LCDのバックライトの制御ピンを設定する
 LCDのバックライトの制御ピン(LCDの「A」ピンに接続)を設定するには、「backlight」プロパティを使います。この設定を行うと、コード実行時にバックライトが点灯し、コード終了時(Node.jsのプロセス終了時)にバックライトが消灯します
たとえば、13ピンをバックライトの制御ピンを設定するには、次のように書きます。
  var lcd = new five.LCD({
               pins: [7, 8, 9, 10, 11, 12],
               backlight: 13
             });

・配線図

 なお、I2CインターフェイスのLCDで「backlight」プロパティを指定すると、コード実行にバックライトが消灯するようです(PCF8574ALCDで確認)

○LCDに文字列を表示する
LCDに文字列を表示するには、「print」メソッドを使います。引数には、表示する文字列を指定します。オプションは省略可能です。オプションの詳細については、「useChar」メソッドの項目で解説します。
print(文字列, オプション)
 文字列は、カーソルの位置から表示されます。カーソルの位置を設定するには、「cursor」メソッドを使います。引数には行インデックと列インデックスを指定します。
cursor(行インデックス, 列インデックス)
 行インデックと列インデックスは「0」から始まるため、一般的な行数、列数から1を引いた値になることに注意してください。
たとえば、LCD1行目の5列目から「Hello!」と表示するには、次のように書きます。
  // 15列目にカーソルを移動
  lcd.cursor(0, 4);
  // Hello!」と表示
  lcd.print("Hello!");
 なお、「home」メソッドでカーソルの位置を11列目(0, 0)に移動することができます。
  // 11列目にカーソルを移動
  lcd.home();
  // Hello!」と表示
  lcd.print("Hello!");

特殊文字を表示する
 特殊文字を表示するには、まず「useChar」メソッドでLCDキャラクタマップに特殊文字を登録します。「useChar」メソッドの引数には特殊文字の名前を指定します。
useChar(名前)
 登録できる特殊文字は8文字までです。なお、指定できる特殊文字の名前と文字パターンについては、次のWebページの項目を参照してください。

 次に「print」メソッドの引数に表示する特殊文字の名前を「:」で囲んで指定します。たとえば、ハートマークを表示するには、次のように書きます。
  // 特殊文字のハートマークをLCDキャラクタマップに登録
  lcd.useChar("heart");
  // 11列目にカーソルを移動
  lcd.cursor(0, 0)
  // ハートマークを表示
  lcd.print(":heart:");

  lcd.cursor(1, 0)
  // 通常の文字列と組み合わせる場合
  lcd.print("I :heart: Johnny-Five");
});

 なお、「print」メソッドのオプションの「dontProcessSpecials」プロパティで特殊文字の処理方法を設定できます。「true」に設定すると、特殊文字が処理されず、文字列がそのまま表示されます。
  // 特殊文字のハートマークをLCDキャラクタマップに登録
  lcd.useChar("heart");
  // 11列目にカーソルを移動
  lcd.cursor(0, 0)
  // ハートマークは表示されず「:heart:」と表示される
  lcd.print(":heart:", { dontProcessSpecials: true });


○LCDの表示をオン/オフ/クリアする
 LCDの表示をオン(規定)にするには「on」メソッドを、オフにするには「off」メソッドを使います。またLCDの表示をクリアするには、「clear」メソッドを使います。
  // ホーム(11列目)から「Hello!」と表示
  lcd.home().print("Hello!")
  // 5秒後
  this.wait(5000, function(){
    // 表示オフ
    lcd.off();
  });
  // 10秒後
  this.wait(10000, function(){
    // 表示オン
    lcd.on();
  });
  // 15秒後
  this.wait(14000, function(){
    // 表示クリア
    lcd.clear();
  });


カーソルの点滅を制御する
 カーソルを点滅するには「blink」メソッドを、点滅を停止するには「noBlink」メソッドを使います。
  // ホーム(11列目)にカーソルを移動
  lcd.home();
  // カーソルを点滅
  lcd.blink();
  // Hello!」と表示
  lcd.print("Hello!");
  // 5秒後
  this.wait(5000,function(){
    // カーソルの点滅を停止
    lcd.noBlink();
  });


0 件のコメント:

コメントを投稿