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文章
2930瀏覽量
117465 -
串口
+關注
關注
14文章
1551瀏覽量
76421 -
Arduino
+關注
關注
188文章
6468瀏覽量
186951
發布評論請先 登錄
相關推薦
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開發板、傳感
評論