原来如此 发表于 2013-6-21 13:51:57

pcDuino与Arduino通过xbee模块实现双灯互控

本帖最后由 原来如此 于 2013-6-21 14:23 编辑

xbee模块主要功能是实现无线数据通信,利用xbee模块分别与pcDuino和Arduino连接,通过串口读写数据,可以轻松实现二者之间的数据传输。在pcDuino端按下开关按钮控制arduino端的LED灯亮,反之arduino端的开关则控制pcDuino端的LED灯。Xbee模块http://www.linksprite.com/cnblog/wp-content/uploads/2013/05/%E5%9B%BE%E7%89%87110.jpgLED灯控制部分http://www.linksprite.com/cnblog/wp-content/uploads/2013/05/%E5%9B%BE%E7%89%8725.jpg原理图http://www.linksprite.com/cnblog/wp-content/uploads/2013/05/%E5%9B%BE%E7%89%8734.jpg线路连接:1、通过T-board 连接pcDuino和xbee模块,T-board上的电平开关必须打到5Vhttp://www.linksprite.com/cnblog/wp-content/uploads/2013/05/%E5%9B%BE%E7%89%8744.jpghttp://www.linksprite.com/cnblog/wp-content/uploads/2013/05/%E5%9B%BE%E7%89%8754.jpg2、Arduino部分http://www.linksprite.com/cnblog/wp-content/uploads/2013/05/%E5%9B%BE%E7%89%8763.jpg注意:xbee的波特率设置为9600线路连好之后,编译运行程序代码。运行成功后,按下pcDuino这端的LED灯开关,红色LED灯亮http://www.linksprite.com/cnblog/wp-content/uploads/2013/05/%E5%9B%BE%E7%89%8772.jpg按下arduino这端的LED灯开关,绿灯亮http://www.linksprite.com/cnblog/wp-content/uploads/2013/05/%E5%9B%BE%E7%89%8782.jpg两个开关同时按下时http://www.linksprite.com/cnblog/wp-content/uploads/2013/05/%E5%9B%BE%E7%89%8792.jpg

程序代码:

Code for pcDuino:

#include <core.h>

#include "Serial.h"

#define led_pin9

#define button_pin 10

unsigned char flag;

void setup()

{

//Initialize serial and wait for port to open:

pinMode(led_pin,OUTPUT);

      pinMode(button_pin,INPUT);

   int rate = 9600;

   Serial.begin(rate);

   while (!Serial)

{

   ; // wait for serial port to connect. Needed for Leonardo only

   }

}

void loop()

{

if (Serial.available() > 0)

{

                char receive = Serial.read();

                if(receive=='a')         flag++;

   if( (flag%2) )    digitalWrite(led_pin,HIGH);//LED off

                else                     digitalWrite(led_pin,LOW);   //LED on

   }

      if(digitalRead(button_pin)==LOW)

      {

delay(10);

if(digitalRead(button_pin)==LOW)

Serial.print('b');

                delay(200);

}

}


Code for arduino:

#include <SoftwareSerial.h>

#define RxD 11

#define TxD 12

#define led_pin 9

#define button_pin 10

unsigned char flag;

SoftwareSerial mySerial(RxD,TxD);

void setup()

{

    pinMode(RxD, INPUT);

    pinMode(TxD, OUTPUT);

    pinMode(led_pin,OUTPUT);

    pinMode(button_pin,INPUT);

    mySerial.begin(9600);               // the Bee baud rate

}

void loop()

{

    if(digitalRead(button_pin)==LOW)

    {

      delay(10);

      if(digitalRead(button_pin)==LOW)

      mySerial.print('a');

      delay(200);

    }

   if(mySerial.available())

    {

       char RX = mySerial.read();

       if(RX=='b') flag++;

       if(flag%2) digitalWrite(led_pin,HIGH);

       else       digitalWrite(led_pin,LOW);

    }

}

天边 发表于 2013-11-21 15:37:50

土豪啊这是;P交个朋友啊,有需要也救济下小的吧 http://shop103190200.taobao.com/ pcduino、arduino、XBEE都有哦!
页: [1]
查看完整版本: pcDuino与Arduino通过xbee模块实现双灯互控