ゆるく楽しむプログラミング

IC間のデータ通信 I2C

【I2C通信】 I2C(Inter-Integrated Circuit)は周辺デバイス とのシリアル通信の方式で、主にEEPROMメモリICなどとの高速通信を実現 する方式です。
I2Cの規格仕様書(日本語訳)に詳しく説明されていますが…詳しすぎ(専門的すぐ)て分からない (´・ω・`)

I2C接続

SCL(クロック)とSDA(データ)の2本のラインで複数のスレーブ(周辺デバイス)を接続できます。
スレーブが各々が0~255までの固有のIDを持ち、IDで通信相手を特定します。



マスターとスレーブの動作電圧の違い

ArduinoやRaspberryPIの電圧は5Vですが、センサー類は省電力化の為に3Vとか1.5Vとか低い動作電圧で設計されている場合があります。
高い電圧を繋ぐとセンサー等が破損する可能性がありますので動作電圧が異なる場合にはレベルシフター等を入れて電圧を変換する必要があります。

I2Cでの通信手順

ArduinoではI2C用のライブラリが整備されていますので、大抵のユニットは簡単に使えます。
micro:bitでは汎用I2Cブロックでは出来ることが限られていますがメジャーなデバイスは専用のブロックが用意されていますので深く考えなくても使えます。
なのでI2C通信手順をビット単位で直接操作する必要はあまりないと思います。

解説動画