35 lines
		
	
	
		
			783 B
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			35 lines
		
	
	
		
			783 B
		
	
	
	
		
			C++
		
	
	
	
	
	
#include "Arduino.h"
 | 
						|
#include "Wire.h"
 | 
						|
 | 
						|
[[maybe_unused]] static const char *TAG = "i2c-scanner";
 | 
						|
 | 
						|
void i2c_scan()
 | 
						|
{
 | 
						|
  uint8_t device_num = 0;
 | 
						|
  Serial.println("Scanning I2C devices...");
 | 
						|
  for (byte address = 1; address < 127; address++) {
 | 
						|
    Wire.beginTransmission(address);
 | 
						|
    byte error = Wire.endTransmission();
 | 
						|
    if (error == 0) {
 | 
						|
      Serial.printf(
 | 
						|
          "[0x%.2x]: Device found with clock rate %lu and timeout %u\n",
 | 
						|
          address,
 | 
						|
          Wire.getClock(), Wire.getTimeOut());
 | 
						|
      device_num++;
 | 
						|
    } else if (error == 4) {
 | 
						|
      Serial.printf("[0x%.2x]: Unknown error.\n", address);
 | 
						|
    }
 | 
						|
  }
 | 
						|
  Serial.println(device_num > 0 ? "Done.\n" : "No I2C devices found.\n");
 | 
						|
}
 | 
						|
 | 
						|
void setup()
 | 
						|
{
 | 
						|
  Serial.begin(115200);
 | 
						|
  Wire.begin();
 | 
						|
}
 | 
						|
 | 
						|
void loop()
 | 
						|
{
 | 
						|
  i2c_scan();
 | 
						|
} |