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.
Revision 9:c403dc9b86cc, committed 2021-11-20
- Comitter:
- tzwell
- Date:
- Sat Nov 20 13:08:09 2021 +0000
- Parent:
- 8:ead6147e31a4
- Commit message:
- First commit, first publish-
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- a/main.cpp Wed Mar 30 14:58:05 2016 +0000
+++ b/main.cpp Sat Nov 20 13:08:09 2021 +0000
@@ -1,53 +1,41 @@
-/* Scan I2C bus on specified pins and prints out
-* the all address where an active device responds.
-*
- By Joseph Ellsworth CTO of A2WH
- Take a look at A2WH.com Producing Water from Air using Solar Energy
- March-2016 License: https://developer.mbed.org/handbook/MIT-Licence
- Please contact us http://a2wh.com for help with custom design projects.
-
-
-* Don't forget 3K pull-up resistors on sda,scl
-*
-* I tested this by soldering in a I2C chip known to respond at
-* address dec=120 hex=70 and the utility got the ack as expected.
-* when the chip was de-soldered it was no longer detected.
-*/
-
+/* I2C scanner for NUCLEO-L476RG
+ *
+ * November, 2021.
+ */
#include "mbed.h"
-Serial pc(USBTX, USBRX);
-Serial pc2(USBTX, USBRX);
+#define D_SDA PB_14
+#define D_SCL PB_13
+#define MIN_ADD 0
+#define MAX_ADD 127
+#define DATA "00"
+#define LENGTH 1
+#define SMALL_DELAY_MS 10
+#define BIG_DELAY 2
- #define D_SDA PB_7
- #define D_SCL PB_6
- // sda=PB7, scl=PB_6 Pins specific to Nucleo-F303K8
- // must change pins to match your board.
-
-I2C i2c(D_SDA, D_SCL);
-
+I2C i2c(D_SDA, D_SCL);
DigitalOut myled(LED1);
int ack;
-int address;
+int address;
+
void scanI2C() {
- for(address=1;address<127;address++) {
- ack = i2c.write(address, "11", 1);
- if (ack == 0) {
- pc.printf("\tFound at %3d -- %3x\r\n", address,address);
+ for(address = MIN_ADD; address < MAX_ADD; address++) {
+ ack = i2c.write(address << 1, DATA, LENGTH);
+ if (!ack) {
+ printf("\tFound at: %3d <--> %3x\r\n", address,address);
}
- wait(0.05);
+ wait_ms(SMALL_DELAY_MS);
}
}
int main() {
- pc.baud(9600);
- pc.printf("I2C scanner \r\n");
+ printf("I2C scanner \r\n");
scanI2C();
- pc.printf("Finished Scan\r\n");
+ printf("Finished Scan\r\n");
// just blink to let us know the CPU is alive
- while(1) {
- wait(5.0);
+ while(true) {
+ wait(BIG_DELAY);
myled = !myled;
}
}