I2C Scanner mit variablen Pins

eine weitere Bastelseite ....

I2C Scanner mit variablen Pins

13. Oktober 2022 Arduino ESP32 Open Weather Egg Wemo 0

Soll der I2C und der SPI Bus gleichzeitig verwendet werden, so entstehen bei dem Wemos Lolin32 Lite einige Probleme. Leider überschneiden sich die Standard Pins. SDA währe bei diesem Board Pin 19 und SCL Pin 23, die aber schon durch den SPI Bus belegt sind. Somit bleibt nur noch eine Variante, die I2C Pins zu ändern. Das folgende Beispiel zeigt einen angepassten I2C Scanner mit variablen Pins.

#include "Wire.h"

#define i2c_sda 0                 //hier den sda port definieren
#define i2c_scl 4                 //hier den scl port definieren

void setup() {
  Serial.begin(115200);           //serielle Schnittstelle erzeugen
  while (!Serial) {;}             //auf die serielle schnittstelle warten
  Wire.begin(i2c_sda, i2c_scl);
}

void loop() {
  byte error, address;
  int nDevices = 0;
  delay(5000);

  Serial.println("scannen nach i2c geraeten ...");
  for(address = 0x01; address < 0x7f; address++){
    Wire.beginTransmission(address);
    error = Wire.endTransmission();
    if (error == 0){
      Serial.printf("i2c geraet an adresse: 0x%02X\n", address);
      nDevices++;
    } else if(error != 2){
      Serial.printf("fehler %d an adresse: 0x%02X\n", error, address);
    }
  }
  if (nDevices == 0){
    Serial.println("keine i2c geraete gefunden ...");
  }
}