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

2013-12-248078
AI 快速预览详细 收起
本文介绍了如何使用xbee模块实现pcDuino与Arduino之间的无线数据通信。通过T-board连接pcDuino和xbee模块,并将电平开关打到5V,确保稳定的数据传输。Arduino部分需要注意xbee的波特率设置为9600。通过编写并运行程序代码,可以实现按下pcDuino端的LED灯开关控制Arduino端的LED灯亮,反之亦然。


xbee模块主要功能是实现无线数据通信,利用xbee模块分别与pcDuinoArduino连接,通过串口读写数据,可以轻松实现二者之间的数据传输。在pcDuino端按下开关按钮控制arduino端的LED灯亮,反之arduino端的开关则控制pcDuino端的LED灯。

线路连接:通过T-board 连接pcDuinoxbee模块,T-board上的电平开关必须打到5V
Arduino部分 注意:xbee的波特率设置为9600

线路连好之后,编译运行程序代码。运行成功后,按下pcDuino这端的LED灯开关,红色LED灯亮
按下Arduino这端的LED灯开关,绿灯亮

程序代码:
Code for pcDuino
  1. #include <core.h>
  2. #include "Serial.h"
  3. #define led_pin 9
  4. #define button_pin 10
  5. unsigned char flag;
  6. void setup()
  7. {
  8. //Initialize serial and wait for port to open:
  9. pinMode(led_pin,OUTPUT);
  10. pinMode(button_pin,INPUT);
  11. int rate = 9600;
  12. Serial.begin(rate);
  13. while (!Serial)
  14. {
  15. ; // wait for serial port to connect. Needed for Leonardo only
  16. }
  17. }
  18. void loop()
  19. {
  20. if (Serial.available() > 0)
  21. {
  22. char receive = Serial.read();
  23. if(receive=='a') flag++;
  24. if( (flag%2) ) digitalWrite(led_pin,HIGH); //LED off
  25. else digitalWrite(led_pin,LOW); //LED on
  26. }
  27. if(digitalRead(button_pin)==LOW)
  28. {
  29. delay(10);
  30. if(digitalRead(button_pin)==LOW)
  31. Serial.print('b');
  32. delay(200);
  33. }
  34. }
复制代码



Code for arduino

  1. #include <SoftwareSerial.h>
  2. #define RxD 11
  3. #define TxD 12
  4. #define led_pin 9
  5. #define button_pin 10
  6. unsigned char flag;
  7. SoftwareSerial mySerial(RxD,TxD);
  8. void setup()
  9. {
  10. pinMode(RxD, INPUT);
  11. pinMode(TxD, OUTPUT);
  12. pinMode(led_pin,OUTPUT);
  13. pinMode(button_pin,INPUT);
  14. mySerial.begin(9600); // the Bee baud rate
  15. }
  16. void loop()
  17. {
  18. if(digitalRead(button_pin)==LOW)
  19. {
  20. delay(10);
  21. if(digitalRead(button_pin)==LOW)
  22. mySerial.print('a');
  23. delay(200);
  24. }
  25. if(mySerial.available())
  26. {
  27. char RX = mySerial.read();
  28. if(RX=='b') flag++;
  29. if(flag%2) digitalWrite(led_pin,HIGH);
  30. else digitalWrite(led_pin,LOW);
  31. }
  32. }
复制代码




创作许可协议

本项目采用 None(不开放任何权利,保留所有权利) 进行许可。

评论(1)
shinkpad
shinkpad
评论内容
- 没有更多了 -