1対多のシリアル通信をやってみました.
Arduino Duemilanove(UNO)はI2C通信が使えるのですが,この場合アナログ4,5ピンが使用されるので,アナログを6ポートとも使いたい場合には使えません.
(あと,I2Cは長距離伝送にも向かないらしいので)
それでシリアル通信を使って1対多の通信をやってみました.
その様子↓
手書きメモ
ホストはハードウェアシリアルを使う.
ターゲットはハードウェアシリアルの受信と,ソフトウェアシリアルの送信を使う.
ホスト側のTXをターゲットのRXに並列接続.
ターゲットのTX(ソフトウェアシリアルでデジタル3ピン)は100Ωの抵抗を介して
ホストのRXに並列接続.
ホストからの送信は,ターゲットが並列に受信.
ターゲットは自分が呼ばれたら応答をソフトウェアシリアルで返す.
ターゲットのソフトウェアシリアルのTXは,
通常はピンモードを強制的にINPUTにしてハイインピーダンス状態.
送信時だけピンモードをOUTPUTにして送信.
送信後にピンモードをINPUTに戻して,ターゲットデバイスの並列なTXとの干渉を防ぐ.
※このモード切替がハードウェアシリアルではできなかったのでターゲットからの送信にはソフトウェアシリアルを使った.
プログラムはフリーページにあります