一步一步用arduino與Processing實現雷達掃描(1)
阿新 • • 發佈:2018-12-05
平時,我們在軍事題材的電影中看到雷達掃描的畫面,感覺很酷很炫,實際,對於今天的我們來說這個效果要實現並不是很難,只不過步驟較多而已。所以我們需要一步一步來實現,也就有了我這篇(或者要用幾篇的篇幅來實現)《一步一步用arduino與Processing實現雷達掃描》。
首先把我們要實現的步驟簡單勾勒一下(我們要製作一個360度的雷達掃描):
一、軟體實現
1、繪製雷達錶盤
2、增加掃描線
3、實現拖影效果
4、實現目標掃描點顯示(漸出效果)
二、硬體實現
1、準備器材(arduino UNO、360度舵機、超聲波感測器、擴充套件板)
2、雷達平臺
三、聯合除錯
1、串列埠通訊接受資料
2、掃描點的顯示函式改造
廢話不多說,我們就用Processing來繪製雷達掃描的錶盤。實現後的效果如下:
步驟如下
1、我們首先在一個高寬均為600的畫布中繪製一個半徑為300的圓,並且依次遞減半徑產生6個同心圓;
2、繪製十字座標
3、繪製刻度距離
4、繪製掃描線
程式碼如下:
int offset=10; float x, y; float r=300; float a=0; float pi=3.141592697932; void setup() { size(600,600); background(0); } void draw() { background(0); x=r*cos(a); y=r*sin(a); //繪製掃描線 fill(0,180,0); //設定掃描線顏色 line(width/2, height/2, //掃描線的起點在螢幕中央 width/2+x, height/2+y); //x,y分別是兩個方向上的增量 //繪製座標軸 fill(0,110,0,50); //設定四軸顏色 for(int i=0;i<4;i++) { line( width/2, height/2, //掃描線的起點在螢幕中央 width/2+r*cos(i*pi/2), height/2+r*sin(i*pi/2)); } //同心圓繪製 //fill(0,0,110,2); stroke(0,110,0); for(int j=1;j<7;j++) ellipse(width/2,height/2, 2*50*j,2*50*j); //刻度標識距離 fill(160,250,160); for(int ii=0;ii<4;ii++) { for(int t=0;t<6;t++) text(t*50,width/2+t*50*cos(ii*pi/2), height/2+t*50*sin(ii*pi/2)); } fill(0,180,00); text("Angle:"+(a/pi)*180,480,580); //掃描角度變化 a=a+0.0124; }
這裡要注意,掃描線是動態變化的,需要用到cos和sin函式,好在Processing中不需要引入math庫,直接可以使用cos和sin,的確很方便。
到現在為止,我們利用Processing完成了第一步,錶盤的繪製和簡單掃描線的實現。下一篇,我們實現掃描線的拖影效果和模擬掃描點的顯示效果。