-
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
Merged
Merged
I2C Scanner examples #303
Changes from all commits
Commits
Show all changes
3 commits
Select commit
Hold shift + click to select a range
File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,96 @@ | ||
// -------------------------------------- | ||
// 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. | ||
// | ||
|
||
|
||
|
||
// Example 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) | ||
// Remap the first I2C before call begin() | ||
// Wire.setSDA(PB9); | ||
// Wire.setSCL(PB8); | ||
// Wire.begin(); | ||
// | ||
// I2C-2: PB11(sda) PB10(scl) | ||
// Wire.setSDA(PB11); | ||
// Wire.setSCL(PB10); | ||
// | ||
// If you want to use the two I2Cs simultaneously, create a new instance for the second I2C | ||
// TwoWire Wire2(PB11,PB10); | ||
|
||
|
||
|
||
#include <Wire.h> | ||
|
||
|
||
void setup() { | ||
|
||
Serial.begin(9600); | ||
Wire.begin(); | ||
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 | ||
} |
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
Other method to use another I2C pin or instance, it to update the Pins before call Begin().
This allow to kept Wire instance and declare a new one.
Example for the BP:
or
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 also think is better, but you cannot use two I2c in the sametime, so the second must have a second declaration.
I will modifie the example, look if you like it
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 know :)
I only gave several example to use only one but with different pins possibilities.