這個jy901的體積比較小,最關鍵是使用起來很方便。串列埠通訊,基本上線一接。驅動一裝。開啟上位機三個軸的角度資料就出來了。借商家的上位機給大家看看結果。
他們這個三個軸的角度是根據東北天座標系來定義。如下圖所示。
大致思路和大家說一下簡答分成兩個部分串列埠程式編寫和資料處理
現在jy901是通過串列埠模組已經能把資料給到電腦上了。而且com**們已經知道了。以上面為例子我的是com9。因此,我們只要寫程式去獲取這個com9的資料就可以了。程式如下圖:
clear all;
close all;
instrreset;
disp('press ctrl+c to stop collecting data!')
s=serial('com9','baudrate',9600) ;fopen(s) ;%open com port
f = 20;%datafrequce
t=0;
cnt = 1;
aa=[0 0 0];
ww=[0 0 0];
aa = [0 0 0];
tt = 0;
a=[0 0 0]';
w=[0 0 0]';
a=[0 0 0]';
head = fread(s,2,'uint8');
if (head(1)~=uint8(85))
continue;
end
head(2)
switch(head(2))
case 81
a = fread(s,3,'int16')/32768*16 ;
case 82
w = fread(s,3,'int16')/32768*2000 ;
case 83
a = fread(s,3,'int16')/32768*180;
aa=[aa;a'];
ww = [ww;w'];
aa = [aa;a'];
tt = [tt;t];
if (cnt>(f/5)) %plot in low frequce,
subplot(3,1,1);plot(tt,aa);title(['acceleration = ' num2str(a') 'm2/s']);ylabel('m2/s');
subplot(3,1,2);plot(tt,ww);title(['gyro = ' num2str(w') '°/s']);ylabel('°/s');
subplot(3,1,3);plot(tt,aa);title(['angle = ' num2str(a') '°']);ylabel('°');
cnt=0;
drawnow;
if (size(aa,1)>5*f)%clear history data
aa = aa(f:5*f,:);
ww = ww(f:5*f,:);
aa = aa(f:5*f,:);
tt = tt(f:5*f,:);
endend
cnt=cnt+1;
t=t+0.01;
end
end = fread(s,3,'uint8');
newdata = importdata('data.txt', 't', 2);最後呢和大家分享下我寫的這個程式。data=newdata.data;
Matlab串列埠讀取錯誤
matlab串列埠讀取錯誤 fwrite scom,uint8 hex2dec moter monitor moto num outdec fread scom,17,uchar outhex dec2hex outdec outstr reshape outhex.1,motohz hex2dec...
讀取串列埠資料
void uartbuf wd uartbuf ringbuf,uint8 t datain d今天移植一段 的時候看到乙個挺有意思的寫法 如上 這是一段微控制器讀取串列埠資料的函式,一開始看到的時候我很是懵比,要我以前寫的話或者看的大多數程式都是乙個簡單的迴圈賦值到緩衝陣列,索引達到陣列的size...
讀取串列埠資料
讀取串列埠資料 2017年06月01日 12 10 39 閱讀數 700 cpp view plain copy cpp view plain copy void uartbuf wd uartbuf ringbuf,uint8 t datain d今天移植一段 的時候看到乙個挺有意思的寫法 如上 ...