1. ホーム
  2. アルドゥイーノ

arduino+i2c 1602 画面表示 シリアル入力データ 注意事項

2022-02-26 04:55:58

1602の配線

まず、アダプターボードをLCDディスプレイにはんだ付けします(向きは上と同じ)。

<テーブル PCF8574T Arduino GND -> GND VCC -> 5V SDA -> A4 SCL -> A5

このsdaのsclポートは固定なので、プログラムを書くときにピン宣言を書く必要もなく、ピンのi2cアドレスを宣言するだけでいいのです。

arduino用1602 LCDライブラリの追加

購入した1602のi2cモジュールはpcf8574です。これはi2c to 1602専用チップではなく、i2cインターフェース用のI/O拡張チップなので、arduinoライブラリで検索すると、pcf8574を使用していると表記されているものと、されていないものがある。

実験してみると、赤い矢印のものが一番よく使われていることがわかりました。このライブラリは多くの神が持っていて、liquidcrystal_pcf8574もあり、ルーチンにカスタム文字もありますが、比較的使い方が複雑です。

I2Cアドレスのスキャンとアドレスの欠点と修正点

ソフトウェアでデバイスのi2cアドレスを取得する

Ref.Japanに良いi2cデバイスアドレススキャンプログラムがありました。それは以下の通りです。

以下のコードをArduino IDEにコピーして実行します。次に、以下を選択します。 tool -> Serial Monitor に変更し、右下のボーレートを 115200 をクリックすると、シリアルモニターにI2Cアドレスが読み出されます。

// I2C Scanner
#include <Wire.h>
void setup() { 
    Serial.begin (115200); // Leonardo: wait for serial port to connect 
    while (!Serial) { } 
    Serial.println (); 
    Serial.println ("I2C scanner. Scanning ... "); 
    byte count = 0; 
    Wire.begin(); 
    for (byte i = 8; i < 120; i++) { 
        Wire.beginTransmission (i); 
        if (Wire.endTransmission () == 0) { 
          Serial.print ("Found address: "); 
          Serial.print (i, DEC); 
          Serial.print (" (0x"); 
          Serial.print (i, HEX); 
          Serial.println (")"); 
          count++; 
          delay (1); // maybe unneeded? 
        } // end of good response 
    } // end of for loop 
    Serial.println ("Done."); 
    Serial.print ("Found "); 
    Serial.print (count, DEC); 
    Serial.println (" device(s). ");
} // end of setup
void loop() {}

ハードウェアハンダジョイントによるi2cアドレスの変更

以下のように

シリアルデータ表示プログラム

#include <Wire.h> 
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x27,16,2); //change here to your own i2c device address
void setup(){
  lcd.init();
  lcd.backlight();
  Serial.begin(9600);
}
void loop(){
  if (Serial.available()) {
    delay(100);
    lcd.clear();
    while (Serial.available() > 0) {
      lcd.write(Serial.read());
    }
  }
}

プログラムが書けたら、シリアルデバッガでデバッグして、ボーレートを設定して、1602に表示させるテキストを送ればよい。

トラブルシューティング

  1. 液晶ディスプレイのアドレスが実態に即して変更されていない。
  2. LCDのサイズが目的のサイズ(16x2)と異なっている。
  3. pcf8574モジュールのブルーセレクターは、文字のグレースケールを制御します。グレースケールが正しくないとLCDに表示されませんが、明るさは制御できます( 1602が表示されないと遭遇した問題点 ).
  4. LCD_I2c ライブラリを非 I2c ディスプレイで使用する、またはその逆を行う。
  5. LCDが正しく接続されていない。
  6. Arduinoが正しく接続されていない。
  7. ドライバ(CH340[中国Arduino用])がインストールされていません。
  8. あなたはとても運が悪いです。

参考

https://create.arduino.cc/projecthub/thesahilsaluja/cpu-and-ram-usage-monitor-windows-linux-921282?ref=similar&ref_id=32069& amp;offset=0

https://create.arduino.cc/projecthub/zakrzu/arduino-pc-monitor-66c07a

https://www.arduino.cn/thread-49987-1-1.html

https://www.jianshu.com/p/eee98fb5e68f