include <Wire.h
void
setup
(
)
{
Wire
.begin
(
)
;
Serial
.begin
(
9600
)
;
Serial
.println
(
"\nI2C Scanner"
)
;
}
void
loop
(
)
{
byte
error, address;
int
nDevices;
Serial
.println
(
"Scanning..."
)
;
nDevices = 0
;
for
(
address = 1
; address < 127
; address++ )
{
// The i2c_scanner uses the return value of
// the Write.endTransmisstion to see if
// a device did acknowledge to the 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
(
" !"
)
;
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
)
Serial
.println
(
"No I2C devices found\n"
)
;
else
Serial
.println
(
"done\n"
)
;
delay
(
5000
)
; // wait 5 seconds for next scan
}