とある科学の備忘録

とある科学の備忘録

CやPythonのプログラミング、Arduino等を使った電子工作をメインに書いています。また、木製CNCやドローンの自作製作記も更新中です。たまに機械学習とかもやってます。

【Arduino】2台のAruduinoをシリアル通信させる

タイトルの通りです。Arduino同士をシリアル通信します。

1. ハードウェア

次の図のような回路を組みます。下の図の2本の配線はシリアル通信用なので、Arduinoが電源につながっていない時は、別途に電源用の配線が必要になります。
f:id:pythonjacascript:20180724225759p:plain

2. ソフトウェア

送信側と受信側でプログラムを二つ用意します。ハードウェアは両方同じなので、どっちにどのプログラムを書き込んでも構いません。

送信側:

int LED = 13;
int count = 0;

void setup(){
  Serial.begin(9600);
  pinMode(LED, OUTPUT);
}

void loop(){
  count++;
  Serial.write(count);
  if((count % 2) == 1){ 
    digitalWrite(LED, HIGH);
  }else{
    digitalWrite(LED, LOW);
  }
  delay(1000);
}

受信側:

int LED = 13;

void setup(){
  Serial.begin(9600);
  pinMode(LED, OUTPUT);
}

void loop(){
  while(Serial.available()){
    byte inChar = (byte)Serial.read();
    if((inChar % 2) == 1){ 
      digitalWrite(LED, HIGH);
    }else{
      digitalWrite(LED, LOW);
    }
    delay(10);
  }
}

3. 実行結果

二機のArduinoの13ピンのLEDがそれぞれ、同じタイミングで点滅していれば、二つのArduinoが同期していることの証拠になります。


4. 書き込みの時の注意

このプログラムをArduinoに書き込むときは、Arduino同士を繋いでいるケーブルを外してください。PCとArduinoを繋いでいるUSBケーブルの配線は、そのままTX-RXピンにつながっているため、PCとArduinoが正常に通信できなくなり、書き込みエラーが出ます。