极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9219|回复: 3

关于使用无线数传的一点心得

[复制链接]
发表于 2013-4-9 22:49:19 | 显示全部楼层 |阅读模式
首先,要感谢Gxx同学{:soso_e181:} ,没有他的点拨我估计调不出来。
最近在玩无线遥控小车         //好水的样子{:soso_e138:}
用的是APC220模块              //略贵,但牛B啊,亲测可穿两至三层楼板{:soso_e129:}
不过调串口可调了我好久     //囧{:soso_e141:}
我策略是这样的,先发送一个字符,比如‘L’ ‘R’神马的,作为标识      //没试过字符串,因为好像不能直接比,吧
大家估计也猜到了,那分别表示左右轮
然后再发送一个整数,其实就是给到电机驱动板en的模拟量              //也就是速度

遥控器那端是这样的           //以左轮为例

  Serial.write('L');
  delay(20);
  Serial.write(spd);

为什么不用print()用write()呢?因为用print()在两块板之间传数据好像有点bug。我也不知道这两者具体有什么区别,好像说write()传的是字节,而print()传什么我就不知道了。总之如果用write()传0~255的整数到SerialMonitor的话,会出字符。
为什么要delay()呢?那是我心血来潮,想是要给小车那头的无线模块反应时间            //问题所在{:soso_e136:}

小车那头,刚开始是这样的

  command=Serial.read();                            //command is char
  if(command=='L') spd=Serial.read();         //spd is int

可怎么老是出-1 啊?!
后来去查,原来,当串口没数据过来时,read()的返回值默认是-1,啊 原来如此

于是我改了一下

  if (Serial.available()) command=Serial.read();                        
  if(command=='L')
    if (Serial.available()) spd=Serial.read();

这下终于有正常数据出来了,可中间怎么夹着好多2062这个数据?    //虽然不多,但我給的spd明明就是在0~255之间
一气之下{:soso_e111:} ,不用无线了,之间把两块板的串口用杜邦线连起来
结果。。。所有数据都变成了2062{:soso_e153:}
这尼玛{:soso_e126:}

然后我就想不通了{:soso_e132:}
这时候Gxx同学来了                       //大神啊{:soso_e179:}
他看了眼我的程序,说                  
“在你delay的时候,‘if (Serial.avaliable()) spd=Serial.read();’这条语句早就跑过了 ”
然后我就幡然醒悟了{:soso_e200:}
原来available()是不等人的呀{:soso_e149:}
然而当我用无线模块是,有延迟,所以会有相当多的好数据出来{:soso_e127:}  

然后我就知道怎么做了{:soso_e116:}
把程序改成这样

  if (Serial.available()) command=Serial.read();                        
  if(command=='L') {
    while (!Serial.available());
    spd=Serial.read();
  }

之后一切完美{:soso_e142:}                       //无线和有线都很完美
但至于为什么是2062,我真是不知道。。。
貌似还出过19XX的坏数据,记不太清了      //不是同一次烧写

顿时觉得自己弱爆了,这tm都搞不定{:soso_e135:}
不过下次就知道了,也是进步啊                  //不过还是弱爆了
回复

使用道具 举报

 楼主| 发表于 2013-4-9 22:54:06 | 显示全部楼层
为什么最后几个表情出不来呢
回复 支持 反对

使用道具 举报

发表于 2013-4-9 23:25:25 | 显示全部楼层
maximus 发表于 2013-4-9 22:54
为什么最后几个表情出不来呢


已经修复BUG
回复 支持 反对

使用道具 举报

发表于 2013-4-10 16:23:03 | 显示全部楼层
黑我还黑到这里来了。

回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-5-13 18:56 , Processed in 0.042668 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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