使い方の説明と、Arduino向けのサンプルスケッチのページです。PCAL9555APWは、マイコンとI2C通信によって接続される、汎用I/Oポート拡張モジュールです。商品ページより一部抜粋したものを載せます。本製品はI2C通信によって制御されます。下に実体配線図を示します。本製品にはI2C通信時のプルアップ用抵抗は実装されていません。ピンヘッダと合わせて各自で実装してください。プルアップ抵抗は基板裏面のR1とR2に1608サイズの10kΩ程度のチップ抵抗をはんだ付けしてください。ArduinoのWireライブラリを使用する場合は内蔵プルアップが有効になりますので、プルアップ抵抗を省略してもかまいません。通信方法デバイスアドレスは、本製品における標準ではArduino向けの7bit表記で0x20です。これは、基板上のジャンパA0,A1,A2を加工することで変更可能です。販売時は3つともGND(0のシルク側)に接続されています。本デバイスには22個のレジスタが存在していますが、2個を1組とした11個の組として動作します。11個のレジスタ種は後述する機能欄にて簡単に説明します。デバイスアドレスを送信した後にコマンドバイトを送信します。このコマンドバイトは、後続のデータをどのレジスタ種が受け取るのかを決定づけます。レジスタ種間での自動インクリメントは行われません。ある一つのレジスタにデータを送信した場合、次のデータはペアとなっているもう一つのレジスタに書き込まれます。registor0(コマンドバイト:0x02)に書き込まれます。データを書き込み続けると、同じレジスタ種内部でロールオーバーします。0x03->0x02->0x03->...という風にになります。実際の通信の例を挙げると、このような状態になります。registor1(コマンドバイト:0x03)に書き込まれます。registor0(コマンドバイト:0x02)に書き込まれます。同じレジスタ種内部でロールオーバーします。registor1(コマンドバイト:0x03)に書き込まれます。4つ目以降のデータも同様に同じレジスタ種内部で繰り返し書き込まれていきます。読みだす際にも、同様にコマンドバイトを設定する必要があります。送信の時と同様に2個をペアとしたレジスタを読み込みます。registor0(コマンドバイト:0x00)のデータを読みます。データを読み込み続けると、同じレジスタ種内部でロールオーバーします。通信を行うときは以上の点について注意する必要があります。詳細についてはデータシートを参照してください。INPUTレジスタ(0x00,0x01)ICのピンの状態が反映されます。これはピンの入出力設定に左右されません。OUTPUTレジスタ(0x02,0x03)Configrationレジスタによって出力に設定されたピンは、このレジスタの内容が反映されます。このレジスタから読みだした内容は、設定内容であり、実際の出力状態ではありません。inversionレジスタ(0x04,0x05)1にセットされたビットに対応するピンに関して、入力に設定されたピンの状態を反転してINPUTレジスタに反映させます。Configurationレジスタ(0x06,0x07)1にセットされたビットに対応するピンをハイインピーダンス入力に設定します。0にセットした場合は出力です。strengthレジスタ(0x40,0x41,0x42,0x43)1ポートあたり2ビットの設定があります。出力に設定されたピンをドライブするために利用する回路の数を変更します。latchレジスタ(0x44,0x45)指定した入力ピンの状態変化を割り込みピンに反映させたり、INPUTレジスタに反映させたりします。enable(0x46,0x47)各ピンに対してプルアップ・プルダウンの有効・無効設定をします。selection(0x48,0x49)プルアップ・プルダウンが有効なピンに対して、プルアップかプルダウンを設定します。maskレジスタ(0x4A,0x4B)割り込みを検出するかどうかの設定です。statusレジスタ(0x4C,0x4D)割り込みが検出されたかどうかの状態を示します。configurationレジスタ(0x4F)出力に設定されたポート(0,1ごと)に対して、オープンドレイン回路を利用するかプッシュプル回路を利用するかを設定します。サンプルプログラムPORT0,1の状態をArduinoIDEのシリアルモニタに表示し続けます。Software.スイッチサイエンス・ウェブショップhttp://www.switch-science.com/。