質問: Arduino Pro mini(3.3V)を複数台(現状はとりあえず2台)使用し相互にシリアル通信をさせたいと思っております。 たとえば、Arduino[A]にシリアルモニタからハードウェアシリアルで値を送り、その値に応じてArduino[A]からArduino[B]にソフトウェアシリアルで信号を送りLEDを制御する、などしたいと思っております。 ArduinoをそれぞれFTDIを使いUSBから電源を取ってきた場合は、うまく動作したのですが、 Arduino[A]をFTDIで動かし、Arduino[B]を電池駆動にしたところ、Arduino自体は動いているようなのですが、[B]へのソフトウェアシリアル通信ができませんでした。(信号を送っても反応なしのような状態) いろいろ試してみたところ、Arduino[A]と[B]のグランドを共通にしたところ、通信ができました。 理想としては、それぞれのArduinoを電池駆動の分離したモジュールとして扱いたく、通信の際にはRX,TXをそれぞれ繋げばよいかと考えていたのですが、グランドを共通にする必要があるのでしょうか? 通信時の接続ピン数をできる限り抑えるにはその他の方法もありそうな気がしますが、アドバイスをいただければ幸いです。 また、SoftwareSerialでは SoftwareSerial mySerial(8, 9); のようにピンアサインをすると思いますが、これをloop内からif文等で SoftwareSerial mySerial(9, 8);など動的に変更することは可能でしょうか? どうぞよろしくお願いいたします。
回答: GNDは繋いでください。 電圧というのは相対的な値です。 回路内で電圧の基準となるのがGNDです。 GNDを繋がなければ、 回路A基準での3.3Vが、回路B基準では1Vみたいなことが起こり得ます。