На канале уже были материалы о UART и SPI, теперь кратко расскажу про популярный интерфейс I2C. Что это такое? I2C (Inter Integrated Circuit, произносится ай-ту-си) — последовательный асимметричный интерфейс для соединения низкоскоростных переферийных компонентов с микроконтроллерами. Его очень часто используются для сбора данных с датчиков. В чём идея? Обычно есть одно ведующее устройство (master), несколько ведомых (slave) и два провода для передачи данных: линия тактирования SCL и линия данных SDA. Они подтянуты к линии питания +5 (как у Arduino) или +3.3 В (как у Raspberry) через резисторы 1-10 кОм. Обмен двусторонний, происходит только между ведущим и ведомыми (в отличие от SPI, где можно построить круговую схему передачи данных). Как происходит обмен данными? Понятно, что при отсутствии передачи данных обе линии подтянуты к линии питания. Стартовым сигналом к передаче данных служит ситуация, когда SCL имеет высокое состояние, а SDA меняется с высокого на низкое. Сигнал "стоп" рав