Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What is going on with this article?
@yusuke005

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

More than 1 year has passed since last update.

説明

親機と子機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本のケーブルで複数の子機を制御できるというわけです。
モータドライバとか使って相互通信できるようにしてみたいですね。

4
Help us understand the problem. What is going on with this article?
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
yusuke005
関西圏在住の社会人。電子工作とかプログラム、raspberry piとかをいじってるものです。 なにか完成したら備忘録程度に書き記そうかなと思います。まだまだ初心者なので、参考にならないと思いますが.... あくまで趣味なので、途中で辞めるかも。内容も薄いと思います。 https://qiita.com/yusuke2504/items/4a4986fac1d27f9482db

Comments

No comments
Sign up for free and join this conversation.
Sign Up
If you already have a Qiita account Login
4
Help us understand the problem. What is going on with this article?