IrvinHeslan

I2C_Scanner

Feb 17th, 2014
325
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.99 KB | None | 0 0
  1. // --------------------------------------
  2. // i2c_scanner
  3. //
  4. // Version 1
  5. //    This program (or code that looks like it)
  6. //    can be found in many places.
  7. //    For example on the Arduino.cc forum.
  8. //    The original author is not know.
  9. // Version 2, Juni 2012, Using Arduino 1.0.1
  10. //     Adapted to be as simple as possible by Arduino.cc user Krodal
  11. // Version 3, Feb 26  2013
  12. //    V3 by louarnold
  13. // Version 4, March 3, 2013, Using Arduino 1.0.3
  14. //    by Arduino.cc user Krodal.
  15. //    Changes by louarnold removed.
  16. //    Scanning addresses changed from 0...127 to 1...119,
  17. //    according to the i2c scanner by Nick Gammon
  18. //    http://www.gammon.com.au/forum/?id=10896
  19. // Version 5, March 28, 2013
  20. //    As version 4, but address scans now to 127.
  21. //    A sensor seems to use address 120.
  22. //
  23. //
  24. // This sketch tests the standard 7-bit addresses
  25. // Devices with higher bit address might not be seen properly.
  26. //
  27.  
  28. #include <Wire.h>
  29.  
  30.  
  31. void setup()
  32. {
  33.   Wire.begin();
  34.  
  35.   Serial.begin(9600);
  36.   Serial.println("\nI2C Scanner");
  37. }
  38.  
  39.  
  40. void loop()
  41. {
  42.   byte error, address;
  43.   int nDevices;
  44.  
  45.   Serial.println("Scanning...");
  46.  
  47.   nDevices = 0;
  48.   for(address = 1; address < 127; address++ )
  49.   {
  50.     // The i2c_scanner uses the return value of
  51.     // the Write.endTransmisstion to see if
  52.     // a device did acknowledge to the address.
  53.     Wire.beginTransmission(address);
  54.     error = Wire.endTransmission();
  55.  
  56.     if (error == 0)
  57.     {
  58.       Serial.print("I2C device found at address 0x");
  59.       if (address<16)
  60.         Serial.print("0");
  61.       Serial.print(address,HEX);
  62.       Serial.println("  !");
  63.  
  64.       nDevices++;
  65.     }
  66.     else if (error==4)
  67.     {
  68.       Serial.print("Unknow error at address 0x");
  69.       if (address<16)
  70.         Serial.print("0");
  71.       Serial.println(address,HEX);
  72.     }    
  73.   }
  74.   if (nDevices == 0)
  75.     Serial.println("No I2C devices found\n");
  76.   else
  77.     Serial.println("done\n");
  78.  
  79.   delay(5000);           // wait 5 seconds for next scan
  80. }
Add Comment
Please, Sign In to add comment