Dieser Sketch durchsucht den I2C-Bus nach Geräten, wenn ein Gerät gefunden wird, wird es dem seriellen Arduino-Monitor dargestellt.

Dies ist der erste Schritt um die I2C-Kommunikation aufzubauen ohne Wissen der Adresse des Gerätes, ist eine Kommunikation nicht möglich.

Im Arduino-Monitor wird die 7-Bit-Adressen der gefundenen Geräte als Hexadezimalwerte angezeigt. Dieser Wert kann für die Funktion „Wire.begin“ verwendet werden, die die 7-Bit-Adresse verwendet. Einige Datenblätter verwenden die 8-Bit-Adresse und einige Beispiel-Sketche verwenden Dezimaladressen.

I2C – Bus Verdrahtung

Board (Arduino)Verdrahtung (Pin)
Uno, Ethernet, Nano A4 (SDA), A5 (SCL)
Mega2560 20 (SDA), 21 (SCL)
Leonardo 2 (SDA), 3 (SCL)
Due 20 (SDA), 21 (SCL), SDA1, SCL1
Verdrahtung I2C an Arduino

Funktion – Anwendung

  1. Öffne einen neuen Sketch und kopieren den Code hinein.
  2. Laden den Sketch auf den Arduino hoch.
  3. Öffnen den seriellen Monitor. Jedes gefundene Gerät am I2C-Bus wird angezeigt.

Auch das Anschließen der Kabel für die I2C Schnittstelle ist während dem laufendem Arduino möglich

, [HOW TO] Arduino I2C – Bus Adressen auslesen

Die Ausgabe des seriellen Monitors sieht folgendermaßen aus:

, [HOW TO] Arduino I2C – Bus Adressen auslesen

Der Code

    // --------------------------------------
    // 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
    //    https://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.
    // Version 6, November 27, 2015.
    //    Added waiting for the Leonardo serial communication.
    //
    //
    // This sketch tests the standard 7-bit addresses
    // Devices with higher bit address might not be seen properly.
    //
     
    #include <Wire.h>
     
     
    void setup()
    {
      Wire.begin();
     
      Serial.begin(9600);
      while (!Serial);             // Leonardo: wait for serial monitor
      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.print(address,HEX);
          Serial.println("  !");
     
          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\n");
      else
        Serial.println("done\n");
     
      delay(5000);           // wait 5 seconds for next scan
    }

Quelle: https://playground.arduino.cc/Main/I2cScanner/

Hat ihnen dieser Artikel gefallen?
Was passiert mit den Spenden? - Mit den Spenden bezahle ich das Hosting, kaufe neue Hardware um diese testen und hier veröffentlichen zu können.
Zusätzlich werden Affiliate Links von Amazon verwendet um das Hosting bezahlen zu können.
Vorheriger ArtikelWordPress – Bücher
Nächster Artikel[HOW TO] Arduino LCD Display I2C anschließen
Mein Name ist Christoph Purin und befasse mich mit IoT Geräten wie Raspberry, Arduino, ESP. Auch Aktivitäten wie die FFW, Quad-fahren, Amateurfunk zählen zu meinen bevorzugten Hobbys. Dieser Blog, stellt eine Sammlung meiner Projekte dar, wie Dinge gelöst oder umgebaut werden können.

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Ich stimme der Datenschutzerklärung zu