Help us understand the problem. What is going on with this article?

2台以上のArduino同士でシリアル通信

説明

親機と子機1~5があって、親機から、1.2.3.4.5の順でシリアル信号が送信され、それを受信した子機が自分の番号のときにLEDを光らせます。つまり、親機一台で子機を制御していることになります。
DSCPDC_0001_BURST20200218161047515.JPG

接続方法

親機の ”→RX” 端子を子機の ”←TX” 端子につながるようにブレッドボードを上手い事します。...以上。

受信側

serial_receive.ino
int No = 1; // 個体番号
int led = 13; // 13番ピンをledに設定

void setup(){
  Serial.begin(9600); // シリアル通信の設定
  pinMode(led, OUTPUT); // ledをアウトプットに設定
}

void loop(){
  while(Serial.available()){ // 受信データがある時
    byte s = (byte)Serial.read(); // 信号を読み取り、"s"に収納
    if(s == No){ // 読み取った信号が自分の番号か?
      digitalWrite(led, HIGH); // LEDを点灯
    }
    else{ // そうでなければ
      digitalWrite(led, LOW); //LEDを消灯
    }
  }
}

送信側

serial_Serve.ino
int led=13; //13番ピンをledに設定
int sw=3; //スイッチを3番ピンに設定
int g=0; //モード番号
int c=0; //for文用

void setup(){
  Serial.begin(9600); //シリアル通信の設定(子機と同じ番号で)
  pinMode(led,OUTPUT); //ledをアウトプットに設定
  pinMode(sw,INPUT_PULLUP); //スイッチをインプットに設定
}
//INPUT_PULLUP:プルアップ抵抗をつけなくても、これでチャタリングを回避できます

void loop(){
  if((digitalRead(sw)==LOW)and(g==0)){ //モード1を選択
    g=1;
    digitalWrite(led,HIGH); //モードを選択したらLEDが光ります。
    delay(500);
    digitalWrite(led,LOW);
  }
  else if((digitalRead(sw)==LOW)and(g==1)){ //モード0を選択
    g=0;
    digitalWrite(led,HIGH); //モードを選択したらLEDが光ります。
    delay(500);
    digitalWrite(led,LOW);
  }
  else if(g==0){ //モード0を実行
    for(c=1; c<=5; c++){
      Serial.write(c);
      delay(100);
    }
  }
  else if(g==1){ //モード1を実行
    for(c=1; c<=5; c++){
      Serial.write(c);
      delay(100);
    }
    for(c=5; c>=1; c--){
      Serial.write(c);
      delay(100);
    }
  }
}

終わりに

これで、たった2本のケーブルで複数の子機を制御できるというわけです。
モータドライバとか使って相互通信できるようにしてみたいですね。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした