mDot / Mbed OS I2C_scaner_5
Committer:
Roietronics
Date:
Fri Apr 14 02:01:45 2017 +0000
Revision:
1:6282a1ee1391
Parent:
0:f4dce843ac31
Update to MBED OS 5.4 release

Who changed what in which revision?

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