早速LCDを繋げてみようと思います
ケーブル硬いから置きづらい pic.twitter.com/EyWEhIWPki
— じんさん (@uesitananame55) February 22, 2017
Arduinoについてきたケーブルって短いし、硬いので取り回しが. . .
LCDシールドで使ったソースコードはそのまま使えません
I2C用のライブラリをインクルードして少々変更します
ですがその前に
君のアドレス何番だい?
I2C接続ってどれを選択するのかがアドレスを使っているので外見ではわからないです
レビューには0x27って書いてあるけどしっかり試す必要があります。
ポートスキャナーならぬアドレススキャナーを使ってみた
I2Cアドレススキャナー (i2cdetectもどき)を作る – ラジオペンチ
こちらで作られていたスキャナーをぱk. . .参考にします
知ってたよ(*^_^*)アハハ
てことでこのモジュールのアドレスは0x27でした
実装じゃぁー
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <Wire.h> | |
#include <LiquidCrystal_I2C.h> | |
/* | |
* アドレス0x27 | |
* 16×2 | |
*/ | |
#define CALACTER 16 | |
#define LINE 2 | |
#define LCDADDRESS 0x27 | |
//I2C版で初期化 | |
LiquidCrystal_I2C lcd(LCDADDRESS, CALACTER, LINE); | |
int cnt, line; | |
char tmp; | |
void setup() { | |
//LCD初期化 | |
lcd.init(); | |
//バックライト点灯 | |
lcd.backlight(); | |
Serial.begin(9600); | |
} | |
void loop() { | |
//何か入力を受けていたら | |
if(Serial.available() ){ | |
delay(100); | |
//画面初期化 | |
lcd.clear(); | |
cnt = line = 0; | |
//入力された文字が全てread()で読み込まれるまで | |
while(Serial.available() > 0) { | |
cnt++; | |
//表示可能行を超えた | |
if(line > LINE-1) { | |
Serial.println("Opps…."); | |
break; | |
} | |
//行の終わり | |
if(cnt > CALACTER) { | |
cnt = 0; | |
line++; | |
//行変更 | |
lcd.setCursor(0, line); | |
Serial.println(""); | |
} | |
//入力された1文字を読み込み、LCD,シリアルに送信 | |
tmp = Serial.read(); | |
lcd.write(tmp); | |
Serial.print(tmp); | |
} | |
Serial.println(""); | |
} | |
} |
前のLCDのやつをベースにしました
毎回バックライトを点灯しないといけないのがめんどいですねぇ
一行分のデータから表示可能文字(16文字)を超えたら改行しています。ただ、画面外までに行くとそのまま改行しちゃいます。
改行はスクロールのような動作はしません。限界まで行ったらリセットする感じです
いいじゃん(左:シールド 右:i2c) pic.twitter.com/2JulxRXPGC
— じんさん (@uesitananame55) February 22, 2017
— じんさん (@uesitananame55) February 22, 2017
まぁいい感じなんでいいとしましょう
コメント
ライブラリは
https://github.com/marcoschwartz/LiquidCrystal_I2C
を使用しました
モジュールのレビューには1文字が表示できないとありますが特に起きませんでした。