-
-
Save haeshh/c0f7df6687a42c02d2b06873fe9cec0e to your computer and use it in GitHub Desktop.
I2C-Scanner für den ESP32; scannt beide Standardkanäle (I2C_1: SDA=GPIO 21, SCL=22; I2C_2: SDA=17, SCL=16) // leicht modifizierte Version des Codes von Kutscher07; https://github.com/espressif/arduino-esp32/issues/977#issuecomment-365734787
This file contains 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
/* I2C address scanner | |
Source: Kutscher07 | |
https://github.com/espressif/arduino-esp32/issues/977#issuecomment-365734787 | |
slightly modified version (only one scan function, | |
passing the I2C channel as parameter) | |
2020-11-19 Heiko / unsinnsbasis.de | |
*/ | |
#include <Wire.h> | |
// I2C channel 1: SDA and SCL pin | |
#define SDA1 21 | |
#define SCL1 22 | |
// I2C channel 2: SDA and SCL pin | |
#define SDA2 17 | |
#define SCL2 16 | |
TwoWire I2Cone = TwoWire(0); | |
TwoWire I2Ctwo = TwoWire(1); | |
void scan(TwoWire * tw, char channel) { | |
Serial.print("Scanning I2C addresses on channel "); | |
Serial.println(channel); | |
uint8_t cnt=0; | |
for (uint8_t i=0; i<128; i++) { | |
tw->beginTransmission(i); | |
uint8_t ec = tw->endTransmission(true); | |
if (ec == 0) { | |
if (i<16) Serial.print('0'); // add leading zero | |
Serial.print(i,HEX); | |
cnt++; | |
} else { | |
Serial.print(".."); | |
} | |
Serial.print(' '); | |
if ((i&0x0f) == 0x0f) Serial.println(); | |
} | |
Serial.print("Scan completed, "); | |
Serial.print(cnt); | |
Serial.println(" I2C device(s) found."); | |
Serial.println(); | |
} | |
void setup() { | |
Serial.begin(115200); | |
I2Cone.begin(SDA1, SCL1, 400000); | |
I2Ctwo.begin(SDA2, SCL2, 400000); | |
} | |
void loop() { | |
scan(&I2Cone, '1'); | |
delay(100); | |
scan(&I2Ctwo, '2'); | |
delay(10000); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment