I2C-skanner

En I2C-skanner är bra att ha om man vill kolla att ens I2C-anslutna kretsar fungerar och svarar på den adress de har. Ibland kanske man inte vet vilken adress en enhet har och då är det bra att kunna skanna den. Det finns en hel del varianter ute i cyberrymden men det här är mina versioner.

Den första versionen är en minimalistisk version som bara skriver ut de adresser som hittas i hexadecimal form. Om ingen fungerande i2C-enhet hittas så skrivs inte heller något ut. Programmet kan laddas ned här.

/*
   Barebone I2C-scanner by Göran Gustafsson 20190809

   The simplest i2c-scanner possible. Just prints out the 
   devices found in hexadecimal.
   
*/
#include <Wire.h>

void setup() {
  Serial.begin(115200);
  while (!Serial);
  Wire.begin();

  for (byte i = 0; i < 127; i++) {
    Wire.beginTransmission(i);
    if (!Wire.endTransmission()) {
      Serial.print("0x");
      Serial.println(i, HEX);
    }
  }
}

void loop() {
}

Om man vill ha en lite flashigare variant så kan man använda följande program Det skriver ut alla adresser i en liten lista med “—-” där det inte finns nån enhet. Där det finns en enhet så skrivs adressen ut. Denna version kan laddas ned här. 

/*
   I2C scanner v1.0 by Göran Gustafsson 20190809

   This is my version of a simple I2C-scanner.
   A lot of Serial.print.
*/

#include <Wire.h>

void setup() {
  Serial.begin(115200);
  while (!Serial);

  Serial.print(" ");
  for (byte x = 0; x < 8; x++) {
    Serial.print("    0");
    Serial.print(x, HEX);
  }
  Serial.println();
  Wire.begin();
  for (byte y = 0; y < 127; y += 8) {
    if (y < 16) {
      Serial.print("0");
    }
    Serial.print(y, HEX);
    Serial.print("  ");
    for (byte x = 0; x < 8; x++) {
      Wire.beginTransmission(y + x);
      if (Wire.endTransmission()) {
        Serial.print("----");
      } else {
        Serial.print("0x");
        if (y + x < 16) {
          Serial.print("0");
        }
        Serial.print(y + x, HEX);
      }
      Serial.print("  ");
    }
    Serial.println();
  }
}

void loop() {
}