Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
main.cpp@0:f4dce843ac31, 2016-12-15 (annotated)
- Committer:
- Roietronics
- Date:
- Thu Dec 15 09:37:19 2016 +0000
- Revision:
- 0:f4dce843ac31
- Child:
- 1:6282a1ee1391
project name changed to I2C_scanner_5 to match mbed 2 version name
Who changed what in which revision?
| User | Revision | Line number | New 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 | 0:f4dce843ac31 | 29 | |
| Roietronics | 0:f4dce843ac31 | 30 | } |
| Roietronics | 0:f4dce843ac31 | 31 | if (nDevices == 0) |
| Roietronics | 0:f4dce843ac31 | 32 | printf("No I2C devices found\n"); |
| Roietronics | 0:f4dce843ac31 | 33 | else |
| Roietronics | 0:f4dce843ac31 | 34 | printf("\ndone\n"); |
| Roietronics | 0:f4dce843ac31 | 35 | |
| Roietronics | 0:f4dce843ac31 | 36 | wait(5); // wait 5 seconds for next scan |
| Roietronics | 0:f4dce843ac31 | 37 | |
| Roietronics | 0:f4dce843ac31 | 38 | } |
| Roietronics | 0:f4dce843ac31 | 39 | } |
| Roietronics | 0:f4dce843ac31 | 40 |