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模塊是透傳的,配置好插上去就行。
電池有充足的的電很重要。