一步一步用arduino与Processing实现雷达扫描(1)

版权声明:本博客所有原创文章转发或者拷贝均须注明出处,本人保留版权法律追诉权。 https://blog.csdn.net/haigear/article/details/84821614

平时,我们在军事题材的电影中看到雷达扫描的画面,感觉很酷很炫,实际,对于今天的我们来说这个效果要实现并不是很难,只不过步骤较多而已。所以我们需要一步一步来实现,也就有了我这篇(或者要用几篇的篇幅来实现)《一步一步用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完成了第一步,表盘的绘制和简单扫描线的实现。下一篇,我们实现扫描线的拖影效果和模拟扫描点的显示效果。

猜你喜欢

转载自blog.csdn.net/haigear/article/details/84821614
今日推荐