Discover I2C devices on a bus

Dependencies:   mbed

main.cpp

Committer:
vkottler
Date:
2018-02-17
Revision:
0:4d662897d4a1

File content as of revision 0:4d662897d4a1:

#include "mbed.h"

Serial pc(SERIAL_TX, SERIAL_RX);
I2C i2c(D0, D1);

DigitalOut myled(LED1);

int main() {
    
    pc.baud(115200);
    int i = 1;
    int devices_found;
    uint8_t curr_addr;
    char data[1] = {'\0'};
    pc.printf("\r\n");
    pc.printf("Program begin\r\n");
    wait(1);
    
    while(1) {
        
        devices_found = 0;
        myled = !myled;
        
        for (i = 0; i < 128; i++) {
            curr_addr = i << 1;
            if (!i2c.write(curr_addr, data, 1)) {
                pc.printf("found device at 0x%x\r\n", curr_addr);
                devices_found++;
            }
            wait(0.2);
        }
        
        pc.printf("%d devices found\r\n", devices_found);
        wait(2);
    }
    
    /* should never get here */
    return 0;
}