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