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);
}
} 土豪啊这是;P交个朋友啊,有需要也救济下小的吧 http://shop103190200.taobao.com/ pcduino、arduino、XBEE都有哦!
页:
[1]