[Arduino]I2CでLCDを繋げてみる

Arduino
この記事は約2分で読めます。

早速LCDを繋げてみようと思います

Arduinoについてきたケーブルって短いし、硬いので取り回しが. . .


LCDシールドで使ったソースコードはそのまま使えません

I2C用のライブラリをインクルードして少々変更します

ですがその前に

君のアドレス何番だい?

I2C接続ってどれを選択するのかがアドレスを使っているので外見ではわからないです

レビューには0x27って書いてあるけどしっかり試す必要があります。

ポートスキャナーならぬアドレススキャナーを使ってみた

I2Cアドレススキャナー (i2cdetectもどき)を作る – ラジオペンチ

こちらで作られていたスキャナーをぱk. . .参考にします

知ってたよ(*^_^*)アハハ

てことでこのモジュールのアドレスは0x27でした


実装じゃぁー


#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("");
}
}

view raw

I2C_LCD.ino

hosted with ❤ by GitHub

前のLCDのやつをベースにしました

毎回バックライトを点灯しないといけないのがめんどいですねぇ

一行分のデータから表示可能文字(16文字)を超えたら改行しています。ただ、画面外までに行くとそのまま改行しちゃいます。

改行はスクロールのような動作はしません。限界まで行ったらリセットする感じです

まぁいい感じなんでいいとしましょう

コメント

  1. 人畜 無害 より:

    ライブラリは
    https://github.com/marcoschwartz/LiquidCrystal_I2C
    を使用しました

    モジュールのレビューには1文字が表示できないとありますが特に起きませんでした。