Scans the I2C bus and outputs the addresses that were found

Dependencies:   mbed

Committer:
ElectronicsSanta
Date:
Tue Jun 27 13:36:38 2017 +0000
Revision:
0:c801d9233d33
Child:
1:1d28de04ff26
working version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ElectronicsSanta 0:c801d9233d33 1 #include "mbed.h"
ElectronicsSanta 0:c801d9233d33 2
ElectronicsSanta 0:c801d9233d33 3 I2C i2c(I2C_SDA, I2C_SCL);
ElectronicsSanta 0:c801d9233d33 4 Serial pc(SERIAL_TX, SERIAL_RX);
ElectronicsSanta 0:c801d9233d33 5
ElectronicsSanta 0:c801d9233d33 6 int main()
ElectronicsSanta 0:c801d9233d33 7 {
ElectronicsSanta 0:c801d9233d33 8 pc.baud(115200);
ElectronicsSanta 0:c801d9233d33 9 pc.printf("I2C scanner starting\n");
ElectronicsSanta 0:c801d9233d33 10
ElectronicsSanta 0:c801d9233d33 11 i2c.frequency(100e3); // default freq (100kHz)
ElectronicsSanta 0:c801d9233d33 12
ElectronicsSanta 0:c801d9233d33 13 const char *data = "1";
ElectronicsSanta 0:c801d9233d33 14
ElectronicsSanta 0:c801d9233d33 15 int ack;
ElectronicsSanta 0:c801d9233d33 16 unsigned char address;
ElectronicsSanta 0:c801d9233d33 17 for (address = 1; address < 127; address++) {
ElectronicsSanta 0:c801d9233d33 18 ack = i2c.write(address << 1, data, 1); // address is shifted to the left to leave room for the last R/W bit
ElectronicsSanta 0:c801d9233d33 19 if (ack == 0) {
ElectronicsSanta 0:c801d9233d33 20 pc.printf("Sent 0x%X; 0x%X ACK \r\n", address << 1, address); // Send command string
ElectronicsSanta 0:c801d9233d33 21 }
ElectronicsSanta 0:c801d9233d33 22 wait_ms(2);
ElectronicsSanta 0:c801d9233d33 23 }
ElectronicsSanta 0:c801d9233d33 24
ElectronicsSanta 0:c801d9233d33 25 pc.printf("I2C scanner done\n");
ElectronicsSanta 0:c801d9233d33 26 }