arduino超声波测距接线图详细_Arduino超声波测距模块使用

本文介绍了如何使用URM37 V3.2超声波模块进行距离测试。通过连接Arduino基板、扩展板和URM37模块,设置串口通信协议,实现串口通信的TTL模式。代码示例展示了如何发送命令、读取距离并根据结果控制LED。
摘要由CSDN通过智能技术生成

上一篇文章中试验了最简单的一个Arduino:LED的闪烁,这个文章里来讨论如何使用URM37超声波模块来进行距离测试。

环境搭建: Arduino基板一块

扩展板Expansion v4一块

URM37 V3.2模块一块

排线4根

基板自带的USB连接线一根

图 URM37 V3.2

图 电路连接图

URM37 V3.2的串口通信协议下的测距命令如下:

0x22+Degree+NC+SUM,degree为控制电机的角度,此处设置为0,NC设置为0,响应格式为0x22+High(distance)+Low(distance)+SUM,如果读取的值非法,则返回0x22+0xFF+0xFF+SUM。

URM37 V3.2支持两种模式的串口通信:RS232及TTL。我们在这个实验中,使用TTL模式,其跳线配置如下:

图 TTL模式

接线方式很简单,URM37的1号线接5V,2号线接GND, 8号线RXD接基板的1号I/O口(TX),9号线TXD接基板的0号I/O口(RX),这个是串口通信的标准接法。

应该注意的是,如果使用扩展板(我用的是DFRduino的扩展板Expansion V4)的话,需要将URM37的RXD和TXD与基板的Data行连接,用以传输数据。

1: int usval = 0;2: int timecount = 0;3: int ledpin = 13;4: boolean flag = true;5:6: uint8_t DMCmd[4] = {0x22, 0x00, 0x00, 0x22};7:8: void setup(){9: Serial.begin(9600);10: pinMode(ledpin, OUTPUT); //设置13号口为输出11: digitalWrite(ledpin, LOW); //灭掉LED12: delay(200);13: }14:15: void loop(){16: flag = true;17:18: for(int i = 0; i < 4; i++){19: Serial.write(DMCmd[i]);//发送命令20: }21:22: delay(100);23:24: while(flag){25: if(Serial.available() > 0){26: int header = Serial.read(); //读头,一个字节,下同27: int high = Serial.read(); //读高位28: int low = Serial.read(); //读低位29: int sum = Serial.read(); //读校验值30:31: if(high == 255){//invalid32: usval = 65525;33: }else{34: usval = high * 255 + low;35:36: //如果距离超过50厘米,则点亮LED37: if(usval > 50){38: digitalWrite(ledpin, HIGH);39: }else{40: digitalWrite(ledpin, LOW);41: }42:43: //实时输出距离信息44: Serial.print("distance = ");45: Serial.println(usval);46: flag = false;47: }48: }49: delay(100);50: }51: }

图 测试效果

URM37 V3.2的还具有RS232串口通信方式,温度测试等,我将在随后的实验中逐一记录。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值