Arduino I2C Sniffer

I2C is a serial protocol used to communicate a microcontroller with external peripherals attached to the same circuit. Each peripheral must have a unique ID number called address that is used to identify it as the intended recipient of a given message. Those addresses are assigned by the device manufacturer and most of the times can not be changed. A sniffer scans all the possible addresses looking for connected devices and reports the ones it finds. This helps identify unmarked chips as then the address can tehn be googled for more information regarding the chip.
This device mimics on an Arduino UNO the behavior of the Raspberry Pi i2cdetect script, sniffing all the possible i2c addresses looking for connected devices and printing the results nicely on a 16x02 LCD screen.
To fit everything on the screen, both the high and low parts of the address are printed above the results, the high part being on a bold typeface. Two push buttons allow to navigate between the addresses, showing 16 addresses at a time. In case a device is detected, W will be printed to show it as a writing address and R would be shown in case it is a reading address. In case nothing is detected at that address, a hyphen (-) will be shown on screen.”