arduino与电子罗盘模块

电子罗盘是机器人比较重要的一个部件,有了它,机器人才能正确的识别方向,为以后开发行走路线的逻辑提供基础。

我这里采用的是一位网友提供的自制模块,关于其具体的参数就不介绍了,我主要是看中它是用ttl串口通信,可以在我arduino的串口接脚上使用,另外就是价格比较便宜,呵呵。

 

 

模块上有4个接脚,vcc(+5)、RX、TX、gnd,一对一接在板子的串口脚上就行。arduino1280有个好处就是它提供了4个这样的串行通信接口。其中Serial我已经用于更新代码和蓝牙串口进行人机交互了。自然这个模块就得接在Serial1接口上。

arduino的代码要稍作改动

void setup(){

Serial.begin(9600);

Serial1.begin(9600);//这里就定义了与罗盘通信的串口

}

 

根据文档,模块使用16进制数据通信的,而且是一问一答的方式。输入 91H给模块,它返回当前角度值。角度值是两个16进制代码。高位在前,低位在后。我这里写了个函数方便调用。

代码如下:

 

byte StartStr=0x91;
byte ReadStr[2];

int outstr;

 

int guide(){

Serial1.write(StartStr);
while(Serial1.available()){
ReadStr[i]=Serial1.read();
i++;
}
a=int(ReadStr[0]);
b=int(ReadStr[1]);
outstr=a*256+b; // 这一步很重要,呵呵,因为一开始对arduino的数据类型不熟悉,没有做这个转换,困扰了我好久。。。

return outstr;
  }

这样,我们就能随时读出当前的方向值了。这个值是当前方向与正北方的夹角,因为可模块的分辨率是1度,所以这里最大值就是359.

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值