Descobrindo o endereço I2C dos módulos

Tutoriais16/02/2020

A comunicação I2C facilita demais o desenvolvimento de projetos com Arduino ou Raspberry PI, pois utiliza apenas 2 pinos  (SDA e SCL).

 

Dessa forma, podemos realizar a comunicação (leitura e escrita) com diversos módulos, como displays, sensores de pressão, sensores de pH, entre outros.

 

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 responda.

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”.

Follow
Loading

Signing-in 3 seconds...

Signing-up 3 seconds...