1. 程式人生 > >一步一步用arduino與Processing實現雷達掃描(1)

一步一步用arduino與Processing實現雷達掃描(1)

平時,我們在軍事題材的電影中看到雷達掃描的畫面,感覺很酷很炫,實際,對於今天的我們來說這個效果要實現並不是很難,只不過步驟較多而已。所以我們需要一步一步來實現,也就有了我這篇(或者要用幾篇的篇幅來實現)《一步一步用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完成了第一步,錶盤的繪製和簡單掃描線的實現。下一篇,我們實現掃描線的拖影效果和模擬掃描點的顯示效果。