xbee模块主要功能是实现无线数据通信,利用xbee模块分别与pcDuino和Arduino连接,通过串口读写数据,可以轻松实现二者之间的数据传输。在pcDuino端按下开关按钮控制arduino端的LED灯亮,反之arduino端的开关则控制pcDuino端的LED灯。
Xbee模块
LED灯控制部分
原理图
线路连接:
1、通过T-board 连接pcDuino和xbee模块,T-board上的电平开关必须打到5V
2、Arduino部分
注意:xbee的波特率设置为9600
线路连好之后,编译运行程序代码。运行成功后,按下pcDuino这端的LED灯开关,红色LED灯亮
按下arduino这端的LED灯开关,绿灯亮
两个开关同时按下时
程序代码:
Code for pcDuino:
#include <core.h>
#include "Serial.h"
#define led_pin 9
#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);
}
}
来源:oschina
链接:https://my.oschina.net/u/1174645/blog/142251