Arduino I2C scanner

Uit Private Rotor Designs
Naar navigatie springen Naar zoeken springen
Crystal Clear action run.png
Arduino IDE Installeren

Release status: Tutorial

I2c-logo-blue-1.jpg
Description
Arduino I2C scanner
License
Author
Contributors
Based-on
Categories
CAD Models
none
External Link

Inleiding

Wanneer u I2C-modules gaat gebruiken voor uw Arduinov-projecten, heeft de fabrikant soms niet het adres van het I2C-apparaat in de chip opgegeven. Het kan een ernstig probleem zijn als het adres onbekend is of als u het verkeerde adres opgeeft.

Deze methode wordt gebruikt voor het scannen van het I2C-apparaat in uw module dat is aangesloten op de I2C-bus in Arduino (SDA, SCL). Bij Arduino Uno / Nano / Pro Mini is de I2C-bus aangesloten op A4 (SDA) en A5 (SCL), bij Arduino Mega 2560 is de I2C-bus aangesloten op D20 (SDA) en D21 (SCL)

Hier ga ik je laten zien hoe je het I2C-adres kunt scannen met een eenvoudige code.

Sketch

// --------------------------------------
// i2c_scanner
//
// Version 1
//    This program (or code that looks like it)
//    can be found in many places.
//    For example on the Arduino.cc forum.
//    The original author is not known.
//
// This sketch tests the standard 7-bit addresses
// Devices with higher bit address might not be seen properly.
//

#include <Wire.h>


void setup()
{
  Wire.begin();

  Serial.begin(9600);
  Serial.println("\nI2C Scanner");
}


void loop()
{
  byte error, address;
  int nDevices;

  Serial.println("Scanning...");

  nDevices = 0;
  for(address = 1; address < 127; address++ ) 
  {
    // The i2c_scanner uses the return value of
    // the Write.endTransmisstion to see if
    // a device did acknowledge to the address.
    Wire.beginTransmission(address);
    error = Wire.endTransmission();

    if (error == 0)
    {
      Serial.print("I2C device found at address 0x");
      if (address<16) 
        Serial.print("0");
      Serial.print(address,HEX);
      Serial.println("  !");

      nDevices++;
    }
    else if (error==4) 
    {
      Serial.print("Unknow error at address 0x");
      if (address<16) 
        Serial.print("0");
      Serial.println(address,HEX);
    }    
  }
  if (nDevices == 0)
    Serial.println("No I2C devices found\n");
  else
    Serial.println("done\n");

  delay(2000);           // wait 2 seconds for next scan
}

programma uitvoer

LCD display

Controller I2C address
PCF8574 0X20
PCF8574A 0X27
Scan display found.jpg

RTC(RealTimeClock)

640pxcenter

OLED

Scan display RTC + all found.jpg

In de afbeelding hierboven ziet U alle devices welke op dat moment op de I2C-bus zijn aangesloten. Het standaard address van 99% van de OLED display's is 0X3C