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@1:6282a1ee1391, 2017-04-14 (annotated)
- 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?
| 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 | 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 |