 There's plenty of things to love about the I2C communications protocol, and some special considerations to keep in mind during usage. The I2C bus output is open drain, which means it can drive a signal low, but it can't drive that signal high. For that, I2C relies on pull-up resistors. These tie I2C's clock and data lines to positive voltage and ensure a default positive high voltage level for both signals. Keep in mind, even if your microcontroller has internal pull-ups, they may not be strong enough for a fast, busy, and or long I2C bus. Of course, it's easy to add your own. The ideal resistance value varies based on your particular hardware and setup, but something in the range of 2.2K to 10K ohm should work for most. The faster your bus speed, the lower the resistance you'll need.