2014年12月29日月曜日

LCD3WIRE(裏ワザ)

LCD3WIREは「3本の信号線だけで16×2のLCDを表示可能にする変換ボード」ですが、特徴として「I2CやSPIを使っていない為、余っているI/Oに接続できる」事があります。

実はそれだけではありません、今回は更に素晴らしい裏技を紹介します!

マイコンボード(Arduinoとかmbedとか)に、LCDを複数台接続したい場合、この商品とLCDを必要数用意すれば「2台目以降は1ヶ所しか新規のI/Oを使用しない!」で接続できちゃうんです!

この商品の信号線は「DATA」と「E.LATCH」と「CLOCK」の3本があります。
この中の「E.LATCH」は「今からデータを送りますよ」と言う信号線です。
この商品を使って複数台のLCDを接続する場合「E.LATCH」のみ別々のI/Oに繋げばオッケーなんです。 つまり「DATA」と「CLOCK」の信号線は全て同じI/Oに繋いで大丈夫なのです!

以下にArduinoにLCDを5個接続する場合のプログラム例を書いておきます。

#include <LiquidCrystal3.h>

// LiquidCrystal lcd(clock, data, latch);
// d0-d13,a0-a5 select free!
LiquidCrystal lcd1(2, 3, 4);
LiquidCrystal lcd2(2, 3, 5);
LiquidCrystal lcd3(2, 3, 6);
LiquidCrystal lcd4(2, 3, 7);
LiquidCrystal lcd5(2, 3, 8);

void setup() {
  lcd1.begin(16, 2);
  lcd2.begin(16, 2);
  lcd3.begin(16, 2);
  lcd4.begin(16, 2);
  lcd5.begin(16, 2);
  lcd1.setCursor(0, 0);
  lcd1.print("LCD No.1");
  lcd2.setCursor(1, 0);
  lcd2.print("LCD No.2");
  lcd3.setCursor(2, 0);
  lcd3.print("LCD No.3");
  lcd4.setCursor(3, 0);
  lcd4.print("LCD No.4");
  lcd5.setCursor(4, 0);
  lcd5.print("LCD No.5");
}

void loop() {
}


既にLCD3WIREを使った事のある方なら、上記プログラムの意味は分かるでしょう。
全てのLCD3WIREのCLOCKをArduinoのD2ピンに接続する。
全てのLCD3WIREのDATAをArduinoのD3ピンに接続する。
それぞれのLCD3WIREのE.LATCHをArduinoのD4~D8ピンにそれぞれ接続する。 そんな接続例です。

lcd1~lcd5に好きなデータを送れば、指定したLCDに文字が表示される感じです。

LCDを3ヶ所のI/Oに接続するだけでLCD表示ができて便利なこの商品ですが、LCDを2台、3台、、、と増やしていっても「2台目以降必要な信号線は1本づつ!」と更にお得になっちゃいますね!

いかがですか?ちょっとした裏技でしょ!?