Arduino 采集雷达模块数据与串口绘图
**当采用串口输出模式时,雷达检测到运动时,则输出 **v=0.0km/h, str=1234
字样;
v
表示目标速度大小,str
表示信号强度;
当雷达检测不到目标时,串口停止输出。
项目实现
**Arduino 串口采集雷达模块数据,并通过串口打印至接收窗口,绘制 **速度演化曲线 和 信号强度演化曲线 。
原始代码
void setup()
{
Serial.begin (115200);
while (Serial.read() >= 0){}//clear serialbuffer
}
String comdata = "";
void loop() {
if (Serial.available() > 0)
{
char data = Serial.read();
comdata += data;
if (data == 'n')
{
Serial.println (comdata);
comdata = "";
}
}
}
串口打印
注意到串口打印出的字符串既包含文字也包含数字,若要实现串口绘图,则需将其中的数字部分提取出来。
代码升级
String comdata = "";
void setup()
{
Serial.begin (115200);
while (Serial.read() >= 0){}//clear serialbuffer
}
void loop() {
if (Serial.available() > 0)
{
char data = Serial.read();
comdata += data;
if (data == 'n')
{
// 分割字符串
int separatorIndex = comdata.indexOf(','); // 假设分隔符为逗号
if (separatorIndex != -1)
{
String part1 = comdata.substring(0, separatorIndex); // 第一个部分
String part2 = comdata.substring(separatorIndex + 1); // 第二个部分
// 打印分割后的数据
Serial.println(part1);
Serial.println(part2);
}
comdata = "";
}
}
}
效果
数字提取
**同理,对 **part1
和 part2
进行分离提取索引数字
String comdata = "";
void setup()
{
Serial.begin (115200);
while (Serial.read() >= 0){}//clear serialbuffer
}
void loop() {
if (Serial.available() > 0)
{
char data = Serial.read();
comdata += data;
if (data == 'n')
{// type of comdata: v=1.0 km/h, str=10151
int separatorIndex = comdata.indexOf(','); // 假设分隔符为逗号
if (separatorIndex != -1)
{
String part1 = comdata.substring(0, separatorIndex); // 第一个部分
String part2 = comdata.substring(separatorIndex + 1); // 第二个部分
// 打印分割后的数据
//Serial.println(part1); // type of part1: v=1.0 km/h
//Serial.println(part2); // type of part2: str=10151
/*------------ part1 : v=1.0 km/h ----------*/
int part1separatorIndex = part1.indexOf('='); //index of '='
if (part1separatorIndex != -1)
{
String vlc = part1.substring(part1separatorIndex + 1); // index of velocity, type of vlc is 1.0 km/h
// vlc: 1.0 km/h
int VLCseparatorIndex = vlc.indexOf(' '); // index of ' '
String v = vlc.substring(0, VLCseparatorIndex);// v only include number
float Vn = v.toFloat();
Serial.print(Vn); // print velocity number
Serial.print(',');
}
/*------------- part2 : str=10151 ------------------*/
int part2separatorIndex = part2.indexOf('='); //index of '='
if (part2separatorIndex != -1)
{
String strng = part2.substring(part2separatorIndex + 1); // strng only include number
int Sn = strng.toInt();
Serial.print(Sn); // print strength number
}
Serial.println();
}
comdata = "";
}
}
}
流程图
串口打印数字
串口绘图
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
雷达
+关注
关注
50文章
2926浏览量
117454 -
串口
+关注
关注
14文章
1550浏览量
76398 -
Arduino
+关注
关注
188文章
6468浏览量
186901
发布评论请先 登录
相关推荐
TF系列激光雷达在Arduino上的开发例程
TF01、TF mini、TF20等)同样适用,如果通信协议有改动,请参考程序对应做出修改即可。最终结果,用Arduino将雷达发送的数据按对应协议正确解析,并发送到PC端,通过IDE上的串口
发表于 11-22 11:12
matlab串口读取arduino数据
我想用matlab读arduino uno 串口的数据,是arduino uno上的电压值,arduino uno 的波特率是115200,
发表于 12-04 06:57
matlab串口数据采集
本文主要介绍了matlab串口数据采集,matlab功能强大,串口操作也很简单,通过以下几个实例你就能掌握串口数据采集是怎么
发表于 01-15 10:23
•2.5w次阅读
基于FPGA的某型雷达视频采集预处理模块设计
和定位等预处理操作,得到动目标在图像中的相对坐标,采用串口设备与上位机进行通信,将所得数据送往上位机。实验结果表明,该采集预处理模块结构简单、运行稳定、
发表于 02-01 16:11
•14次下载
基于Arduino的串口通信项目
、Arduino Mega等。 USB数据线 :用于将Arduino开发板连接到计算机。 串口设备 :可以是另一个Arduino开发板、传感
评论