1.硬件:Seeeduino Stalker v3.0俩块,xbeeS1俩块,led一个,导线,电源,面包板
软件:XCTU,Arduino1.8.2
2.xbee模块配置:恢复出场设置后
主机xbee的 DH:1234,MY:5678
从机xbee的 DH:5678, MY:1234
(API为disabled,也就是AP模式(默认出厂设置),API模式以前用过,后来做过一个关于节点发现的实验后,就不好使了)
3.主机程序:
int button_open =4;//开灯按钮连在数字端口4
int button_close =5; //关灯按钮连在数字端口5
char flag;//定义“向从机发送LED灯亮灭标志”的变量
void setup()
{
pinMode(button_open, INPUT); //设置按钮为输入模式
pinMode(button_close, INPUT);
Serial.begin(9600);//启动串口通信,波特率为9600b/s
}
void loop()
{
//如果亮灯按钮按下同时关灯按钮松开
if( digitalRead(button_open)==LOW&&digitalRead(button_close)==HIGH)
{
flag=‘a‘;
Serial.println(flag);//向从机发送灯亮标志
}
//如果关灯按钮按下同时亮灯按钮松开
if(digitalRead(button_close)==LOW&&digitalRead(button_open)==HIGH)
{
flag=‘b‘;
Serial.print(flag);//向从机发送灯灭标志
}
delay(200);//延时,等待数据发送成功
}
从机程序:
int ledpin=9;//LED灯连在数字端口9
int val; //定义“接受主机发来的LED灯亮灭标志”的变量
void setup()
{
pinMode(ledpin,OUTPUT);//设置LED灯为输出模式
digitalWrite(ledpin,HIGH);//初始化使LED灯熄灭
Serial.begin(9600);//启动串口通信,波特率为9600b/s
}
void loop()
{
if(Serial.available()>0) //查询串口有无数据
{
val=Serial.read();//读取主机发送的数据
if(val==‘a‘)//如果主机发送字符‘a‘,则点亮LED
{
digitalWrite(ledpin,LOW);//LED灯点亮
}
if(val==‘b‘)//如果主机发送字符‘b‘,则熄灭LED
{
digitalWrite(ledpin,HIGH);//LED灯熄灭
}
}
}
4.实验过程
A.配置xbee时,只需配置DH和MY,然后在xctu的consoles界面测试一下,能互相接受到信息就行了。
再配置xbee模块后,直接把配置好的xbee模块插进Stalker V3.0的xbee插孔上就行,不用想这为什么,为什么插上去就自己执行了呢,xbee是透传的,直接插上去就可以。
B.把程序分别写进各自的StalkerV3.0.
C.给主机的pin4接地pin5接电源,灯亮
给主机pin4接电源pin5接地,灯灭
5.心得体会
我知道了,xbee模块是透传的,配置好插上去就行。
电池有充足的的电很重要。