This code provides capabilities to find the address of connected I2C devices

Dependencies:   mbed

Committer:
Makodan
Date:
Thu May 03 17:06:09 2018 +0000
Revision:
1:6a79412e380e
Parent:
0:1301fb16e306
First commit to share this project

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Dominosus 0:1301fb16e306 1 // Original program found here: http://playground.arduino.cc/Main/I2cScanner
Dominosus 0:1301fb16e306 2 // Modified by Domen Ornik, 4.5.2015
Dominosus 0:1301fb16e306 3 #include "mbed.h"
Dominosus 0:1301fb16e306 4
Makodan 1:6a79412e380e 5 I2C i2c(PB_7, PB_6);
Makodan 1:6a79412e380e 6 Serial pc(USBTX, USBRX);
Dominosus 0:1301fb16e306 7
Dominosus 0:1301fb16e306 8 int main() {
Makodan 1:6a79412e380e 9 pc.baud(115200);
Makodan 1:6a79412e380e 10 pc.printf("\nI2C Scanner");
Dominosus 0:1301fb16e306 11
Dominosus 0:1301fb16e306 12 while(1) {
Dominosus 0:1301fb16e306 13 int error, address;
Dominosus 0:1301fb16e306 14 int nDevices;
Dominosus 0:1301fb16e306 15
Makodan 1:6a79412e380e 16 pc.printf("Scanning...\n");
Dominosus 0:1301fb16e306 17
Dominosus 0:1301fb16e306 18 nDevices = 0;
Dominosus 0:1301fb16e306 19
Dominosus 0:1301fb16e306 20 for(address = 1; address < 127; address++ )
Dominosus 0:1301fb16e306 21 {
Dominosus 0:1301fb16e306 22 i2c.start();
Dominosus 0:1301fb16e306 23 error = i2c.write(address << 1); //We shift it left because mbed takes in 8 bit addreses
Dominosus 0:1301fb16e306 24 i2c.stop();
Dominosus 0:1301fb16e306 25 if (error == 1)
Dominosus 0:1301fb16e306 26 {
Makodan 1:6a79412e380e 27 pc.printf("I2C device found at address 0x%X", address); //Returns 7-bit addres
Dominosus 0:1301fb16e306 28 nDevices++;
Dominosus 0:1301fb16e306 29 }
Dominosus 0:1301fb16e306 30
Dominosus 0:1301fb16e306 31 }
Dominosus 0:1301fb16e306 32 if (nDevices == 0)
Makodan 1:6a79412e380e 33 pc.printf("No I2C devices found\n");
Dominosus 0:1301fb16e306 34 else
Makodan 1:6a79412e380e 35 pc.printf("\ndone\n");
Dominosus 0:1301fb16e306 36
Makodan 1:6a79412e380e 37 wait(2); // wait 5 seconds for next scan
Dominosus 0:1301fb16e306 38
Dominosus 0:1301fb16e306 39 }
Dominosus 0:1301fb16e306 40 }
Dominosus 0:1301fb16e306 41