刚做好的超声雷达与大家分享一下!-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 10278|回复: 5

刚做好的超声雷达与大家分享一下!

[复制链接]
发表于 2014-7-4 20:31 | 显示全部楼层 |阅读模式
刚做好的超声雷达与大家分享一下!
http://www.robotway.com/bbs/forum.php?mod=viewthread&tid=2696
(出处: 探索者——探索与机器人有关的一切)

今天用超声波做了一个雷达探测实验,同学们毕业设计有没有想做倒车雷达的,可以参考一下,废话不多说,直接上代码
  • #include <Servo.h>
  • #define ECHOPIN A0
  • #define TRIGPIN A1
  • Servo myServo[6];
  • int servo_port[6]={4,9,10,3,6,5};
  • void setup()
  • {
  •   Serial.begin(9600);
  •   pinMode(ECHOPIN, INPUT);
  •   pinMode(TRIGPIN, OUTPUT);
  •   ServoGo(0,0);
  •   delay(100);
  • }
  • void loop()
  • {
  •   int distance;
  •   for(int i=0; i<180; i++)
  •   {
  •     ServoGo(0, i);
  •     digitalWrite(TRIGPIN, LOW);
  •     delayMicroseconds(2);
  •     digitalWrite(TRIGPIN, HIGH);
  •     delayMicroseconds(10);
  •     digitalWrite(TRIGPIN, LOW);
  •     distance = pulseIn(ECHOPIN, HIGH, 14705);
  •     distance = (int)(distance/58);
  •     Serial.print(i);
  •     Serial.print(',');
  •     Serial.println(distance);
  •     delay(100);
  •   }
  •   for(int i=180; i>0; i--)
  •   {
  •     ServoGo(0, i);
  •     digitalWrite(TRIGPIN, LOW);
  •     delayMicroseconds(2);
  •     digitalWrite(TRIGPIN, HIGH);
  •     delayMicroseconds(10);
  •     digitalWrite(TRIGPIN, LOW);
  •     distance = pulseIn(ECHOPIN, HIGH, 14705);
  •     distance = (int)(distance/58);
  •     Serial.print(i);
  •     Serial.print(',');
  •     Serial.println(distance);
  •     delay(100);
  •   }
  •   while(1){
  •   }
  • }
  • void ServoStart(int which)
  • {
  •   if(!myServo[which].attached())myServo[which].attach(servo_port[which]);
  •   pinMode(servo_port[which], OUTPUT);
  • }
  • void ServoStop(int which)
  • {
  •   myServo[which].detach();
  •   digitalWrite(servo_port[which],LOW);
  • }
  • void ServoGo(int which , int where)
  • {
  •   //if(where<20)where=20;
  •   //if(where>160)where=160;
  •   if(where!=200)
  •   {
  •     if(where==201) ServoStop(which);
  •     else
  •     {
  •       ServoStart(which);
  •       myServo[which].write(where);
  •     }
  •   }
  • }
  • void ServoMove(int which, int start, int finish, int t)
  • {
  •   int a;
  •   if((start-finish)>0) a=-1;
  •   else a=1;
  •   for(int i=0;i<abs(start-finish);i++) {ServoGo(which,start+i*a);delay(t/(abs(start-finish)));}
  • }


[color=rgb(51, 102, 153) !important]复制代码

超声波的工作原理大家应该都懂得吧,具体的工作模块用的谁家的就不做广告了,不懂的可以跟帖交流!再附上实验模型一张


175619sslate3zstp3s3h2.jpg


在processing上做了个简陋的雷达界面,显示雷达数据
081429n8f7d7dvdqw8gwz8.jpg
processing的代码在这里
  • import processing.serial.*;
  • Serial myPort;                  // Create object from Serial class
  • String inputString="";
  • boolean stringComplete = false;
  • int degree;
  • int distance;
  • int[] data = new int[180];
  • void setup()
  • {
  •   fill(0);
  •   size(500,500);
  •   background(255);
  •   myPort = new Serial(this, "COM52", 9600); //change the COM number to meet your computer
  •   noFill();
  •   //arc(250, 250, 500, 500, 0, PI);
  • }
  • void draw()
  • {
  •   if ( myPort.available() > 0 )
  •   {
  •     char inChar = (char)myPort.read();       //get serial data
  •     inputString += inChar;
  •     if(inChar=='\n') stringComplete=true;
  •   }
  •   if(stringComplete)
  •   {
  •     background(255);
  •     stringComplete=false;
  •     text(inputString,10,10);
  •     Decoding();
  •     text(degree,10,20);
  •     text(distance,10,30);
  •     Radar();
  •     inputString="";
  •   }
  • }
  • void Decoding()
  • {
  •   degree=int(inputString.substring(0,inputString.indexOf(',')));
  •   distance=int(inputString.substring(inputString.indexOf(',')+1,inputString.indexOf('\n')-1));
  •   if(distance>50)distance=50;
  •   if(distance<1)distance=50;
  •   if(degree>179)degree=179;
  •   data[degree]=distance;
  • }
  • void Radar()
  • {
  •   for(int i=0;i<180;i++)
  •   {
  •     noFill();
  •     arc(250, 250, data*8, data*8, radians(i+180), radians(i+1+180));
  •   }
  • }

[color=rgb(51, 102, 153) !important]复制代码




[color=rgb(51, 102, 153) !important]

[color=rgb(51, 102, 153) !important]

[color=rgb(51, 102, 153) !important]

[color=rgb(51, 102, 153) !important]

[color=rgb(51, 102, 153) !important]

[color=rgb(51, 102, 153) !important]

[color=rgb(51, 102, 153) !important]

[color=rgb(51, 102, 153) !important]

[color=rgb(51, 102, 153) !important]

[color=rgb(51, 102, 153) !important]


发表于 2014-7-5 10:22 | 显示全部楼层
我前年做过一个,界面感觉比你这个好看些……那个看起来真的像是军用雷达少苗的图……而且还用LCD装载小车上显示了……
 楼主| 发表于 2014-7-14 20:51 | 显示全部楼层
hp198969 发表于 2014-7-5 10:22
我前年做过一个,界面感觉比你这个好看些……那个看起来真的像是军用雷达少苗的图……而且还用LCD装载小车 ...

是吗?如果能分享一下就太好了。
发表于 2014-7-15 12:17 | 显示全部楼层
walker无动力 发表于 2014-7-14 20:51
是吗?如果能分享一下就太好了。

Processing互动艺术  这本书里面有一个雷达的例子,我当初就是按照这个来做的。两年前的事了……我写的那些代码都不知道丢哪儿了额……
 楼主| 发表于 2014-7-15 13:09 | 显示全部楼层
啊, 我这个界面也是参考这本书做的,不过为了赶时间,没有做好看,呵呵
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-28 10:33 , Processed in 0.080678 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表