「Arduinoの基礎 - SC1602」の版間の差分

ナビゲーションに移動 検索に移動
164行目: 164行目:
[[ファイル:Arduino SC1602 08.jpg|フレームなし|中央]]
[[ファイル:Arduino SC1602 08.jpg|フレームなし|中央]]
<br><br>
<br><br>
== I2CScanner ==
I2CScannerというプログラムを使用することにより、LCDのI2Cアドレスを確認することができる。<br>
これは、ArduinoにI2C対応機器を接続して、シリアルモニタからI2Cアドレスを確認するものである。<br>
<br>
* I2CScannerのGithub
*: https://github.com/asukiaaa/I2CScanner
<br>
<syntaxhighlight lang="c++">
#include <Wire.h>
void setup()
{
#ifdef _ESP32_HAL_I2C_H_
    Wire.begin(26, 25);
#else
    Wire.begin();
#endif
    Serial.begin(115200);
    while (!Serial); // シリアルモニタが起動するまで待機
    Serial.println("\nI2C Scanner");
}
void loop()
{
    byte error    = 0x00,
        address  = 0x00;
    int  nDevices = 0;
    Serial.println("Scanning...");
    for (address = 1; address < 127; address++) {
      // I2CScannerは、Write.endTransmisstionメソッドの戻り値を利用して、デバイスがそのアドレスに認識(確認応答)したかどうかを確認する
      Wire.beginTransmission(address);
      error = Wire.endTransmission();
      if (error == 0) {
          Serial.print("I2C device found at address 0x");
          if (address < 16) {
            Serial.print("0");
          }
          Serial.print(address, HEX);
          Serial.println("  !");
          nDevices++;
      }
      else if (error == 4) {
          Serial.print("Unknown error at address 0x");
          if (address < 16) {
            Serial.print("0");
          }
          Serial.println(address, HEX);
      }
    }
    if (nDevices == 0) {
      Serial.println("No I2C devices found\n");
    }
    else {
      Serial.println("done\n");
    }
    delay(5000);  // 次のスキャンまで5秒待機
}
</syntaxhighlight>
<br>
<br><br>


__FORCETOC__
__FORCETOC__
[[カテゴリ:Arduino]]
[[カテゴリ:Arduino]]

案内メニュー