--- description: XBee同士が通信できる設定にできたので、次はAruduino同士で無線通信できるプログラムを作成してみます。 image: https://lh3.googleusercontent.com/lDH0W3FJoWDOBO5QSATvZKAS9mspvTgzymv56ALNByclTeLbZH66QvRib8bBRUCkx9m8d2YpDkI_VNedxGmPk-78zdX6icZuIqs20Ghol5Gqz1sfilBqpWw-HTUOevDbMEQ1Diaeta8=w1024-no tags: Aruduino, XBee lang: ja-jp --- # AruduinoとXBeeで無線通信してみる(プログラム編) XBee同士が通信できる設定にできたので、次はAruduino同士で無線通信できるプログラムを作成してみます。 > [AruduinoとXBeeで無線通信してみる\(設定編\) \- HackMD](https://hackmd.io/@gIyjBJHDSCCdtTcpxFuDWg/Sy77D_j_B) と言っても、シリアル通信で有線で繋いでいた部分を、XBeeにするだけなのだが。 > [Aruduinoでシリアル通信をしてみる \- HackMD](https://hackmd.io/@gIyjBJHDSCCdtTcpxFuDWg/SkBhOzcdS) ## 配線 ![](https://cdn-ak.f.st-hatena.com/images/fotolife/p/pythonjacascript/20180724/20180724225759.png) としていたのを、 ![](https://cdn-ak.f.st-hatena.com/images/fotolife/p/pythonjacascript/20180923/20180923151144.jpg) にします。 自分の持っている、Aruduinoとシールドの組み合わせでは以下のようになりました。 ![](https://lh3.googleusercontent.com/lDH0W3FJoWDOBO5QSATvZKAS9mspvTgzymv56ALNByclTeLbZH66QvRib8bBRUCkx9m8d2YpDkI_VNedxGmPk-78zdX6icZuIqs20Ghol5Gqz1sfilBqpWw-HTUOevDbMEQ1Diaeta8=w1024-no) ## プログラム ### 送信側 ```c= 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(500); } ``` 0.5秒間隔でcountの数値をシリアルに送信し、それに合わせてLEDが点滅します。 ### 受信側 ```c= 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); } } ``` 送信側から数字データを受け取って、それに合わせて送信側と同じようにLEDを点滅させます。 うまく、無線通信できないとLEDが点滅しないので、LED点滅すれば成功です。 ### プログラム書き込み時の注意 Aruduinoにプログラムを書き込む場合は、XBeeモジュールを外す必要があります。 シールドによっては、スイッチを切り替えることで可能になります。 ## 結果 何の問題もなくうまく行きました。 シリアルを有線接続した時は、GNDを共有しておかないと安定しませんでしたが、今回の無線接続は問題ありませんでした。 ## 参考サイト 【xBee】xBeeを使ってArduino二台を無線シリアル通信 - とある科学の備忘録 https://shizenkarasuzon.hatenablog.com/entry/2018/09/23/145928