/*
程序: I2C Scanner
公众号:孤独的二进制
*/
#include <Wire.h>
#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x25, 20, 2); // set the LCD address to 0x27 for a 16 chars and 2 line display
LiquidCrystal_I2C lcd2(0x30, 20, 2);
void setup()
{
Serial.begin(9600); //开启串口显示
while (!Serial);
Serial.println("\nI2C Scanner");
Wire.begin(); // 开启I2C, 不写地址,就是主设备
Wire.setClock(100000); //默认 100KHz
Wire.setWireTimeout(3000, true); // timeout (us,reset_on_timeout)
lcd.init(); // initialize the lcd
// Print a message to the LCD.
lcd.backlight();
lcd.setCursor(0, 0);
lcd.print("Hello, world!");
lcd2.init(); // initialize the lcd
// Print a message to the LCD.
lcd2.backlight();
lcd2.setCursor(0, 0);
lcd2.print("Hello, world!");
}
static int i = 0;
void loop()
{
// Serial.println("Scanning...");
// for (int i = 0; i < 128; i++ )
// {
// Wire.beginTransmission(i); // 准备向指定地址开始传输数据
// byte code = Wire.endTransmission(); //结束传输
// if (code == 0) //反馈0,代表收到回应,一切正常
// {
// Serial.print("Found: 0x");
// Serial.println(i, HEX);
// }
// }
i++;
lcd.setCursor(0, 1);
lcd2.setCursor(0, 1);
lcd.print("I2C 0x25");
lcd2.print("I2C 0x30");
lcd.setCursor(9, 1);
lcd2.setCursor(9, 1);
lcd.print(i);
lcd2.print(i);
lcd.setCursor(15, 1);
lcd2.setCursor(15, 1);
if (i % 2 == 0) {
lcd.print("|");
lcd2.print("|");
} else {
lcd.print("-");
lcd2.print("-");
}
delay(1000);
}