-
Notifications
You must be signed in to change notification settings - Fork 1k
I2C Scanner examples #303
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
I2C Scanner examples #303
Changes from 1 commit
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
// -------------------------------------- | ||
// i2c_scanner | ||
// | ||
// Version 1 | ||
// This program (or code that looks like it) | ||
// can be found in many places. | ||
// For example on the Arduino.cc forum. | ||
// The original author is not know. | ||
// Version 2, Juni 2012, Using Arduino 1.0.1 | ||
// Adapted to be as simple as possible by Arduino.cc user Krodal | ||
// Version 3, Feb 26 2013 | ||
// V3 by louarnold | ||
// Version 4, March 3, 2013, Using Arduino 1.0.3 | ||
// by Arduino.cc user Krodal. | ||
// Changes by louarnold removed. | ||
// Scanning addresses changed from 0...127 to 1...119, | ||
// according to the i2c scanner by Nick Gammon | ||
// http://www.gammon.com.au/forum/?id=10896 | ||
// Version 5, March 28, 2013 | ||
// As version 4, but address scans now to 127. | ||
// A sensor seems to use address 120. | ||
// | ||
// This sketch tests the standard 7-bit addresses | ||
// Devices with higher bit address might not be seen properly. | ||
// | ||
|
||
|
||
|
||
// Pinmap for Bluepill I2Cs (by Testato) | ||
// | ||
// I2C-1 standard pins: PB7(sda) PB6(scl) | ||
// Use it by "Wire" without pin declaration | ||
// | ||
// I2C-1 alternative pins: PB9(sda) PB8(scl) | ||
// TwoWire Wire_alt(PB9,PB8); | ||
// | ||
// I2C-2: PB9(sda) PB8(scl) | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. If kept, this line need to be updated: There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ok |
||
// TwoWire Wire2(PB11,PB10); | ||
|
||
|
||
|
||
#include <Wire.h> | ||
|
||
|
||
void setup() { | ||
|
||
Serial.begin(9600); | ||
Wire.begin(); | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Other method to use another I2C pin or instance, it to update the Pins before call Begin().
or
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. yes, i also think is better, but you cannot use two I2c in the sametime, so the second must have a second declaration. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I know :) |
||
Serial.println("\nI2C Scanner"); | ||
} | ||
|
||
|
||
void loop() { | ||
byte error, address; | ||
int nDevices; | ||
|
||
Serial.println("Scanning..."); | ||
|
||
nDevices = 0; | ||
for(address = 1; address < 127; address++) { | ||
// The i2c_scanner uses the return value of | ||
// the Write.endTransmisstion to see if | ||
// a device did acknowledge to the address. | ||
|
||
Wire.beginTransmission(address); | ||
error = Wire.endTransmission(); | ||
|
||
if (error == 0) { | ||
Serial.print("I2C device found at address 0x"); | ||
if (address < 16) | ||
Serial.print("0"); | ||
Serial.println(address, HEX); | ||
|
||
nDevices++; | ||
} | ||
else if (error == 4) { | ||
Serial.print("Unknown error at address 0x"); | ||
if (address < 16) | ||
Serial.print("0"); | ||
Serial.println(address, HEX); | ||
} | ||
} | ||
if (nDevices == 0) | ||
Serial.println("No I2C devices found"); | ||
else | ||
Serial.println("done"); | ||
|
||
delay(5000); // wait 5 seconds for next scan | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I wonder if it's really needed to add specific board pins?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
yes, i think it is very useful add at least one examples for a board, and the Bluepill is the most famous ST variant
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ok