arduino通过读写十六进制数据串与超声雷达通信

用的下面这款的雷达,装在小车上,前、左、右各一个,arduino NANO(或UNO)开发板一块,为了调试方便,用的软串口。
在这里插入图片描述
先用店家提供的软件(如下图)一个一个连接并写参数,我这里设了1、2、3三个站,都设成了角度等级level-1(不知有何用)和9600波特率,厂家提醒触发周期最好在50ms以上,我试了一下50ms,挺好,就用这个了。
在这里插入图片描述
在这里插入图片描述
设置好参数之后,可以三个一起连上,然后查看距离波形(单一勾选NO复选款,一次只能看一个,记得点自动触发的开按钮),测试后之后,用芯片通信协议,开始通信调试。首先确定理解的没错,用一般的串口助手,手动发送十六进制数据串过去,看有无正确反馈,如下图。
在这里插入图片描述
在这里插入图片描述
经测试如我所理解,OK,开始搞arduino单片机通信控制。
代码如下:

#include “SoftwareSerial.h”
SoftwareSerial mySerial(10,11);//RX=10,TX=11

void setup()
{
//硬件串口波特率
Serial.begin(9600);
//软件串口波特率
mySerial.begin(9600);

}
void loop()
{

int i=0;
unsigned char c[10];
unsigned char highbyte,lowbyte;
unsigned char data;
int num,numl,numr;
data=0x00;
mySerial.write(0x7F);
mySerial.write(0x01);
mySerial.write(0x12);
mySerial.write(data);
mySerial.write(data);
mySerial.write(data);
mySerial.write(data);
mySerial.write(data);
mySerial.write(0x03);
mySerial.write(0x16);
delay(50);
while(mySerial.available())
{
c[i]=mySerial.read();
delay(2);
//Serial.write(mySerial.read());
Serial.print(c[i],HEX);
i++;
}
highbyte=c[4];
lowbyte=c[5];
num=highbyte*256+lowbyte;
Serial.print(";");
Serial.println(num);

i=0;
mySerial.write(0x7F);
mySerial.write(0x02);
mySerial.write(0x12);
mySerial.write(data);
mySerial.write(data);
mySerial.write(data);
mySerial.write(data);
mySerial.write(data);
mySerial.write(0x03);
mySerial.write(0x17);
delay(50);
while(mySerial.available())
{
c[i]=mySerial.read();
delay(2);
//Serial.write(mySerial.read());
Serial.print(c[i],HEX);
i++;
}
highbyte=c[4];
lowbyte=c[5];
numl=highbyte*256+lowbyte;
Serial.print(";");
Serial.println(numl);

i=0;
mySerial.write(0x7F);
mySerial.write(0x03);
mySerial.write(0x12);
mySerial.write(data);
mySerial.write(data);
mySerial.write(data);
mySerial.write(data);
mySerial.write(data);
mySerial.write(0x03);
mySerial.write(0x18);
delay(50);
while(mySerial.available())
{
c[i]=mySerial.read();
delay(2);
/if(c[i]0xFF)
Serial.println(“ok!”);
if(i
1)
highbyte=c[i];
if(i==2)
lowbyte=c[i];
/
//Serial.write(mySerial.read());
Serial.print(c[i],HEX);
i++;
}
highbyte=c[4];
lowbyte=c[5];
numr=highbyte256+lowbyte;
Serial.print(";");
Serial.println(numr);
/

//如果软件串口有数据
if(mySerial.available())
{
//从软件串口读出一字节,写入硬件串口
Serial.write(mySerial.read());
}
*/
}
结果如下图:
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44345862/article/details/86295483