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();
							 | 
						||
| 
								 | 
							
								}
							 |