查看: 4567|回复: 3

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

[复制链接]
  • TA的每日心情
    郁闷
    2013-6-3 09:22
  • 签到天数: 29 天

    连续签到: 1 天

    [LV.4]偶尔看看III

    发表于 2013-6-3 09:21:26 | 显示全部楼层 |阅读模式
    分享到:
    本帖最后由 xinxincaijq 于 2013-6-3 09:24 编辑

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

    图片110.jpg

    LED灯控制部分
    图片25.jpg

    原理图
    图片34.jpg

    线路连接:
    1、通过T-board 连接pcDuinoxbee模块,T-board上的电平开关必须打到5V
    图片44.jpg

    图片54.jpg

    2、Arduino部分
    图片63.jpg
    注意:xbee的波特率设置为9600

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

    按下Arduino这端的LED灯开关,绿灯亮
    图片82.jpg

    两个开关同时按下时
    图片92.jpg

    程序代码:
    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. }
    复制代码
    回复

    使用道具 举报

  • TA的每日心情
    无聊
    2015-12-14 11:43
  • 签到天数: 556 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2013-6-3 09:33:29 | 显示全部楼层
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2015-7-14 09:10
  • 签到天数: 9 天

    连续签到: 1 天

    [LV.3]偶尔看看II

    发表于 2013-6-3 11:33:26 | 显示全部楼层
    非常不错啊,围观喽~~~
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    开心
    2014-2-20 10:23
  • 签到天数: 45 天

    连续签到: 1 天

    [LV.5]常住居民I

    发表于 2013-6-4 09:52:40 | 显示全部楼层
    真是GOOD!{:soso_e179:}
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-19 14:42 , Processed in 0.152813 second(s), 22 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.