I2C Scanner

Committer:
Valoni
Date:
Sat Aug 26 22:41:16 2017 +0000
Revision:
0:c3dab0101dea
I2C Scanner to detect LCD1602/LCD2004 adress for using with TEXTLCD library

Who changed what in which revision?

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