Advertisement
rinaldohack

I2C scanner

Jun 20th, 2017
2,511
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.16 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. // Version 6, November 27, 2015.
  23. // Added waiting for the Leonardo serial communication.
  24. //
  25. //
  26. // This sketch tests the standard 7-bit addresses
  27. // Devices with higher bit address might not be seen properly.
  28. //
  29.  
  30. #include <Wire.h>
  31.  
  32.  
  33. void setup()
  34. {
  35. Wire.begin();
  36.  
  37. Serial.begin(9600);
  38. while (!Serial); // Leonardo: wait for serial monitor
  39. Serial.println("\nI2C Scanner");
  40. }
  41.  
  42.  
  43. void loop()
  44. {
  45. byte error, address;
  46. int nDevices;
  47.  
  48. Serial.println("Scanning...");
  49.  
  50. nDevices = 0;
  51. for(address = 1; address < 127; address++ )
  52. {
  53. // The i2c_scanner uses the return value of
  54. // the Write.endTransmisstion to see if
  55. // a device did acknowledge to the address.
  56. Wire.beginTransmission(address);
  57. error = Wire.endTransmission();
  58.  
  59. if (error == 0)
  60. {
  61. Serial.print("I2C device found at address 0x");
  62. if (address<16)
  63. Serial.print("0");
  64. Serial.print(address,HEX);
  65. Serial.println(" !");
  66.  
  67. nDevices++;
  68. }
  69. else if (error==4)
  70. {
  71. Serial.print("Unknown error at address 0x");
  72. if (address<16)
  73. Serial.print("0");
  74. Serial.println(address,HEX);
  75. }
  76. }
  77. if (nDevices == 0)
  78. Serial.println("No I2C devices found\n");
  79. else
  80. Serial.println("done\n");
  81.  
  82. delay(5000); // wait 5 seconds for next scan
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement