极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 32487|回复: 15

xbee的使用

[复制链接]
发表于 2011-12-14 13:14:11 | 显示全部楼层 |阅读模式
本帖最后由 灰太狼大王 于 2011-12-14 13:18 编辑

在serial monitor端输入1,led灯亮;输入0,led灯灭。代码如下
int ledPin = 10;
int val;

void setup()
{
   pinMode(ledPin, OUTPUT);
   Serial.begin(9600);
}

void loop()
{
  
   val = Serial.read();
   if ('1' == val)
  {
      digitalWrite(ledPin, HIGH);
  }
  else if('0' == val)
  {
     digitalWrite(ledPin, LOW);
  }
}

这种最简单的代码运行正确。

然后,我在arduino控制板上插了一个xbee扩展板,再插上xbee,把led灯与xbee扩展板连接,电路,物理上是通的,因为在
void loop()里面只写digitalWrite(ledPin, HIGH);这句的话,灯是亮的。但是

val = Serial.read();
   if ('1' == val)
  {
      digitalWrite(ledPin, HIGH);
  }
  else if('0' == val)
  {
     digitalWrite(ledPin, LOW);
  }

这么写的话就不能控制灯的开关了,问题就在于:好像val = Serial.read();这个就读不到输入的数据了(好像得到-1)。

问题1:插上xbee的情况下,电脑怎么与arduino通讯呢?
问题2:arduino ide可以调试么?

多谢指点。
回复

使用道具 举报

发表于 2011-12-14 16:18:38 | 显示全部楼层
1:请描述一下arduino型号,以及和xbee的接口方式
2:一般通过向串口发送调试数据的方法来调试。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-12-14 17:07:51 | 显示全部楼层
本帖最后由 灰太狼大王 于 2011-12-14 17:12 编辑

这样的连接方式:
xbee--xbee扩展板--arduino控制器

有两套(A和B)。
工作时,用
Serial.print()
Serial.read()

这两套之间就可以通讯,这个没有问题。

问题:
我想通过电脑端发送指令给A,再由A传给B,这时,A的连接方式就变成
xbee--xbee扩展板--arduino控制器--usb线--电脑
对吧。
A不插xbee之前,我们都是用Serial.read()来读取电脑serial monitor端的输入,对吧,但A插上xbee之后,Serial.read()得到的值都为-1了(好像表示读取不到),问题出来了:插上xbee后,电脑怎么与arduino通讯呢?
arduino控制器   Duemilanove 和 uno.

连接图如下:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-12-14 18:54:24 | 显示全部楼层
本帖最后由 灰太狼大王 于 2011-12-14 18:56 编辑

看到:XBee模块会占用串口

不知道是不是这个原因。

不可能xbee只能与xbee通信吧?实际应用中总需要与电脑通信啊。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-12-14 19:15:47 | 显示全部楼层
本帖最后由 灰太狼大王 于 2011-12-14 19:18 编辑

我把A换成:xbee与xbee适配器与电脑相连,通过xctu测试,可以通过电脑发送信息到xbee,并接收xbee收到的信息。

恩,xbee适配器的作用我还没弄懂,我以前以为它只是配置xbee而已。现在看来,如果要与电脑通信的话,xbee适配器是必须的
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-12-15 10:03:01 | 显示全部楼层
问题出来了,用XCTU的Terminal 可以发送接收信息经适配器到xbee,实际应用,肯定要自己写代码,怎么弄呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-12-15 10:13:36 | 显示全部楼层
本帖最后由 灰太狼大王 于 2011-12-15 10:17 编辑

问题解决很简单:
MsVC中是:
String^ portName;
portName = “COM7”;
int baudRate=9600;
SerialPort^ arduino;
arduino = gcnew SerialPort(portName, baudRate);
arduino->WriteLine("A");//A就是你要发送的信息。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-12-15 12:25:08 | 显示全部楼层
问题没完。电脑端怎么接收信息呢?
                                do
                                {
                                        String^ message = arduino->ReadLine();
                                        Console::WriteLine( "Received: " + message);
                                }while(true);

这段代码怎么接收不到arduino端返回来的信息?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2011-12-15 13:41:33 | 显示全部楼层
用ReadByte()就可以得到返回的信息了。前面用ReadLine好像是什么阻塞式,得不到会假死。串口编程还得学习一下。结贴。
回复 支持 反对

使用道具 举报

发表于 2012-9-27 08:56:38 | 显示全部楼层
{:soso_e100:}请问一下怎么将程序下载到XBee呢?
回复 支持 反对

使用道具 举报

发表于 2013-3-17 09:33:10 | 显示全部楼层
请教一下,你是通过XCTU把数据写到xbee,然后到另一个xbee接受再用COM显示吗?还是反过来;
顺便再问一下,xbee,你是如何配置的;都是coordinator AT模式,还是coordinator API模式
回复 支持 反对

使用道具 举报

发表于 2013-3-17 09:33:26 | 显示全部楼层
请教一下,你是通过XCTU把数据写到xbee,然后到另一个xbee接受再用COM显示吗?还是反过来;
顺便再问一下,xbee,你是如何配置的;都是coordinator AT模式,还是coordinator API模式
回复 支持 反对

使用道具 举报

发表于 2013-3-17 09:42:02 | 显示全部楼层
请教一下,你是通过XCTU把数据写到xbee,然后到另一个xbee接受再用COM显示吗?还是反过来;
顺便再问一下,xbee,你是如何配置的;都是coordinator AT模式,还是coordinator API模式
回复 支持 反对

使用道具 举报

发表于 2014-5-18 20:59:33 | 显示全部楼层
xbee使用xctu或者AT指令进行配置
回复 支持 反对

使用道具 举报

发表于 2014-5-18 21:36:15 | 显示全部楼层
这将的是两个Xbee之间通讯,能帮助你吗


http://v.youku.com/v_show/id_XNzEzMjk2OTgw.html
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-19 12:02 , Processed in 0.048850 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表