Daniel Mako
/
I2C_scanner
This code provides capabilities to find the address of connected I2C devices
main.cpp@1:6a79412e380e, 2018-05-03 (annotated)
- 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?
User | Revision | Line number | New 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 |