質問: 2つのマスターネットワーク間のArduino I2C通信 私は2台のArduinoマイクロコントローラを持っており、それぞれにI2Cデバイスのネットワークが接続されています(1台に2台のADC、もう1台にLCDディスプレイとRTCがあります)。最初のμCで得られた値をADCから2番目のADCに転送するのにI2C接続を使用するにはどうすればよいですか。どちらのuCもI2Cバスのマスターです。 私は2番目のuC上にソフトウェアのI2Cを作成し、それを最初のスレーブにスレーブとして接続することを考えていました(つまり2番目のコントローラには2つのI2Cポートがあります。問題は、スレーブとして動作するソフトウェアのI2Cライブラリが見つからないことです。すべてがマスターです。 あなたのアイデアを待っています。 --- 1つのArduino Mega2560を使って2つのI 2 Cネットワークを作ることができますか? LCDとRTCと通信するためのハードウェアポートのマスタとして1つ、他の2つのピンのペア(SCLとSDA用)のソフトウェアポートのスレーブとして他のマスタarduinoからデータを受信するための... --- すべてのデータを分析した後、2つのI2Cバスを一緒にリンクすることはできないという結論に達しました。私が利用可能なデータ収集用の外部I2Cポートで、私は情報を受信し、無線アダプタ(おそらくNRF24N01)を使用してそれを渡すスレーブとして別のarduinoを接続します。そうすれば、ソーラーコントローラーから生産をpvoutput Webサイトに報告するarduinoまでの配線は不要です。
回答: * I2Cバス上に配置できるI2Cマスターは1つだけです。 (誰がマスターかを切り替えることができる高度なプロトコルがあるかもしれません。) * 多くの組み込みプロセッサは、I2CマスターまたはI2Cマスターとして設定できます。 奴隷。 (私は標準のArduino I2Cライブラリでマスターとスレーブを簡単に切り替えることができるとは思わない。スレーブモードをサポートしていないプロセッサを使うArduinosがあるかもしれない。) * これらの種類のプロトコル(SPIまたはI2C)は、同じボードと電源を共有する部品で使用する必要があります。これらは一般的に、部分的な電源障害、ホットプラグ、過度に長いケーブルなどの複雑さを被るほど堅牢ではありません。 2つのArduino Unoボード(1つのマスターと2つのマスターボード) I2Cバスを使用します。