Descobrindo o endereço I2C dos módulos

A comunicação I2C facilita demais o desenvolvimento de projetos com Arduino ou Raspberry PI pois utilizando apenas 2 pinos  (SDA e SCL) podemos comunicar (ler/escrever) com diversos módulos (Displays, Sensores de pressão, Sensores de PH, etc.).

A ideia principal da comunicação I2C é que cada item tenha o seu endereço Hexadecimal e no momento da comunicação somente o item/endereço solicitado responderá. E quando não temos o manual do equipamento, como fazemos para saber o endereço I2C?

A solução está no código abaixo, ele faz uma varredura e exibe uma lista dos endereços encontrados, caso seu equipamento esteja conectado e não seja encontrado verifique se você não inverteu os pinos de comunicação.

#include <Wire.h>

void setup()
{
  Serial.begin(9600);
  Wire.begin();
  
  byte Return;
  
  Serial.println("Scanning I2C bus...");
  for(byte I2CAddress = 1; I2CAddress <= 127; I2CAddress++)
  {
    Serial.print("0x");
    if (I2CAddress<16)
      Serial.print("0");
    Serial.print(I2CAddress, HEX);
    Serial.print(" (");
    if (I2CAddress<10)
      Serial.print("  ");
    else if (I2CAddress<100)
      Serial.print(" ");
    Serial.print(I2CAddress);
    Serial.print("): ");
    
    Wire.beginTransmission(I2CAddress);
    Return = Wire.endTransmission();
    
    if (Return == 0)
      Serial.print("OK!");
    else
      Serial.print("   ");
      
    if (I2CAddress % 5)
      Serial.print("    ");
    else
      Serial.println();
  }
}

void loop() { }

Para ver a lista basta abrir o “Serial Monitor”, ao lado de cada endereço que respondeu a varredura, teremos um “OK”.

 Confira: Nosso display foi encontrado no endereço Hexadecimal “0X27”.

E se você gostou do nosso tutorial, mas ainda não segue a Circuito Maker no Youtube e Instagram, se inscreva.

Ajude a impulsionar o nosso trabalho.