#include <Wire.h>
#include <LiquidCrystal.h>
LiquidCrystal lcd(2,3,4,5,6,7);
void setup()
{
Wire.begin();
Serial.begin(115200);
//Serial.println("\nI2C Scanner");
lcd.begin(16, 2);
}
void loop()
{
lcd.setCursor(2, 0);
lcd.print("I2C SCANNING!");
Serial.println("I2C Scanning...");
delay(5000);
byte error, address;
int nDevices;
nDevices = 0;
for(address = 0; address <= 127; address++ )
{
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("!");
// write data to LCD:
lcd.setCursor(0, 1);
lcd.print("I2C Found: 0x");
lcd.setCursor(13, 1);
lcd.print(address, HEX);
//---------------------------------------
nDevices++;
}
else if (error==4)
{
Serial.print("Unknow error at address 0x");
if (address<16)
Serial.print("0");
Serial.println(address,HEX);
}
}
if (nDevices == 0)
{
delay(5000);
Serial.println("No I2C devices found\n");
lcd.setCursor(0, 1);
lcd.print("NO I2C FOUND");
}
else
delay(10000);
Serial.println("done\n");
clr(1);
lcd.setCursor(6, 0);
lcd.print("DONE! ");
delay(30000);
}
void clr(int x) {
lcd.setCursor(7, x-1);
//lcd.print("<--Remove");
delay(200);
lcd.setCursor(0,x-1);
lcd.print(" ");
}