12,966
回編集
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]] |