当采用串口输出模式时,雷达检测到运动时,则输出 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 = ""; } } }
流程图
串口打印数字
串口绘图