Endereços Barramento I2C
1A PARTE
COMO SABER O ENDERECO DO DISPOSITIVO
2A PARTE
TROCANDO O ENDERECO DO DISPOSITIVO
1A PARTE
***********************************************************
Como saber endereços dos dispositivos ligados ao Barramento I2C?
https://www.arduinoportugal.pt/saber-enderecos-dos-dispositivos-ligados-ao-barramento-i2c/
Como saber endereços dos dispositivos ligados ao Barramento I2C?
Este tutorial explica de forma simples como encontrar dispositivos anexados ao barramento i2c com o Arduino. Verifica ainda qual o endereço de cada dispositivo i2c ligado ao Arduino.
Ligações
Basta fazer as seguintes quatro conexões entre o dispositivo Arduino e I2C.
1. Analógico 4 -> SDA
2. Analógico 5 -> SCL
3. VCC -> VCC
4. GND -> GND
Scanner i2c
Copie o seguinte codigo para o Arduino IDE e envie para o Arduino. Se seguida abra o Serial Monitor e encontrará o endereço dos dispositivos i2c anexados.
#include <Wire.h>
void setup() {
Serial.begin (115200);
// Leonardo: wait for serial port to connect
while (!Serial)
{
}
Serial.println ();
Serial.println ("I2C scanner. Scanning ...");
byte count = 0;
Wire.begin();
for (byte i = 1; i < 120; i++)
{
Wire.beginTransmission (i);
if (Wire.endTransmission () == 0)
{
Serial.print ("Found address: ");
Serial.print (i, DEC);
Serial.print (" (0x");
Serial.print (i, HEX);
Serial.println (")");
count++;
delay (1); // maybe unneeded?
} // end of good response
} // end of for loop
Serial.println ("Done.");
Serial.print ("Found ");
Serial.print (count, DEC);
Serial.println (" device(s).");
} // end of setup
void loop() {}
2A PARTE
**********************************************************
// The following code changes the address of a Devantech Ultrasonic Range Finder (SRF10 or SRF08)
// usage: changeAddress(0x70, 0xE6);
void changeAddress(byte oldAddress, byte newAddress)
{
Wire.beginTransmission(oldAddress);
Wire.write(byte(0x00));
Wire.write(byte(0xA0));
Wire.endTransmission();
Wire.beginTransmission(oldAddress);
Wire.write(byte(0x00));
Wire.write(byte(0xAA));
Wire.endTransmission();
Wire.beginTransmission(oldAddress);
Wire.write(byte(0x00));
Wire.write(byte(0xA5));
Wire.endTransmission();
Wire.beginTransmission(oldAddress);
Wire.write(byte(0x00));
Wire.write(newAddress);
Wire.endTransmission();
}
// usage: changeAddress(0x70, 0xE6);
void changeAddress(byte oldAddress, byte newAddress)
{
Wire.beginTransmission(oldAddress);
Wire.write(byte(0x00));
Wire.write(byte(0xA0));
Wire.endTransmission();
Wire.beginTransmission(oldAddress);
Wire.write(byte(0x00));
Wire.write(byte(0xAA));
Wire.endTransmission();
Wire.beginTransmission(oldAddress);
Wire.write(byte(0x00));
Wire.write(byte(0xA5));
Wire.endTransmission();
Wire.beginTransmission(oldAddress);
Wire.write(byte(0x00));
Wire.write(newAddress);
Wire.endTransmission();
}
Comentários
Postar um comentário