Skip to content

lastralab/ArduinoRadar

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ArduinoRadar

Radar using Arduino, Ping, Servo and Processing.

The original code belongs to Dejan Nedelkovski, this is an adaptation for Mac users and for my own needs.

THE WIRING:

screenshot 2017-01-31 15 36 43

CODE for Arduino (fixed):

//Original code by Dejan Nedelkovski
//Author: Niam Moltta
//RADAR

#include <Servo.h>. 

const int trigPin = 7;
const int echoPin = 8;

long duration;
int distance;
Servo myServo; 

void setup() {
  
  pinMode(trigPin, OUTPUT); 
  pinMode(echoPin, INPUT); 
  Serial.begin(9600);
  myServo.attach(9); 
}

void loop() {
  
  for(int i=15;i<=165;i++){  
  myServo.write(i);
  delay(30);
  distance = calculateDistance();
  
  Serial.print(i); 
  Serial.print(","); 
  Serial.print(distance); 
  Serial.print("."); 
  }
  
  for(int i=165;i>15;i--){  
  myServo.write(i);
  delay(30);
  
  distance = calculateDistance();
  
  Serial.print(i);
  Serial.print(",");
  Serial.print(distance);
  Serial.print(".");
  }
}

int calculateDistance() { 
  
  digitalWrite(trigPin, LOW); 
  delayMicroseconds(2);
  digitalWrite(trigPin, HIGH); 
  delayMicroseconds(10);
  digitalWrite(trigPin, LOW);
  duration = pulseIn(echoPin, HIGH); 
  distance= duration*0.034/2;
  return distance;
}

CODE for Processing:

//For Processing 3.2.3- MacOS Sierra
//Author: Niam Moltta
//Jan-2017

import processing.serial.*; // imports library for serial communication import java.awt.event.KeyEvent; // imports library for reading the data from the serial port import java.io.IOException;

String Port = "/dev/tty.usbmodem1411"; //Arduino port Serial myPort; 

String angle=""; String distance=""; String data=""; String noObject; float pixsDistance; int iAngle, iDistance; int index1=0; int index2=0; PFont orcFont;

void setup() {     size (1250, 650); //resolution  smooth();  myPort = new Serial(this, Port, 9600);  myPort.bufferUntil('.');  orcFont = loadFont("OCRAExtended-30.vlw"); } void draw() {      fill(98,245,31);   textFont(orcFont);   noStroke();   fill(0,4);   rect(0, 0, width, height-height*0.065);      fill(98,245,31);      drawRadar();    drawLine();   drawObject();   drawText(); }

void serialEvent (Serial myPort) {      data = myPort.readStringUntil('.');   data = data.substring(0,data.length()-1);      index1 = data.indexOf(",");   angle= data.substring(0, index1);   distance= data.substring(index1+1, data.length());      iAngle = int(angle);   iDistance = int(distance); } void drawRadar() {      pushMatrix();   translate(width/2,height-height0.074);   noFill();   strokeWeight(2);   stroke(98,245,31);      arc(0,0,(width-width0.0625),(width-width0.0625),PI,TWO_PI);   arc(0,0,(width-width0.27),(width-width0.27),PI,TWO_PI);   arc(0,0,(width-width0.479),(width-width0.479),PI,TWO_PI);   arc(0,0,(width-width0.687),(width-width0.687),PI,TWO_PI);      line(-width/2,0,width/2,0);   line(0,0,(-width/2)cos(radians(30)),(-width/2)sin(radians(30)));   line(0,0,(-width/2)cos(radians(60)),(-width/2)sin(radians(60)));   line(0,0,(-width/2)cos(radians(90)),(-width/2)sin(radians(90)));   line(0,0,(-width/2)cos(radians(120)),(-width/2)sin(radians(120)));   line(0,0,(-width/2)cos(radians(150)),(-width/2)sin(radians(150)));   line((-width/2)cos(radians(30)),0,width/2,0);   popMatrix(); }

void drawObject() {      pushMatrix();   translate(width/2,height-height0.074);   strokeWeight(9);   stroke(255,10,10);   pixsDistance = iDistance((height-height0.1666)0.025);      if(iDistance<40){ //range limit        line(pixsDistancecos(radians(iAngle)),-pixsDistancesin(radians(iAngle)),(width-width0.505)cos(radians(iAngle)),-(width-width0.505)sin(radians(iAngle)));   }   popMatrix(); } void drawLine() {   pushMatrix();   strokeWeight(9);   stroke(30,250,60);   translate(width/2,height-height*0.074);   line(0,0,(height-height0.12)cos(radians(iAngle)),-(height-height0.12)sin(radians(iAngle)));   popMatrix(); }

void drawText() {      pushMatrix();   fill(0,0,0);   noStroke();   rect(0, height-height*0.0648, width, height);   fill(98,245,31);   textSize(15);   text("10cm",width-width*0.3854,height-height*0.0833);   text("20cm",width-width*0.281,height-height*0.0833);   text("30cm",width-width*0.177,height-height*0.0833);   text("40cm",width-width*0.0729,height-height*0.0833);   textSize(30);   text("Angle: " + iAngle +" °", width-width*0.48, height-height*0.0277);   text("Distance: ", width-width*0.26, height-height*0.0277);   if(iDistance<40) {   text(" " + iDistance +" cm", width-width*0.225, height-height*0.0277);   }   textSize(25);   fill(98,245,60);   translate((width-width0.4994)+width/2cos(radians(30)),(height-height0.0907)-width/2sin(radians(30)));   rotate(-radians(-60));   text("30°",0,0);   resetMatrix();   translate((width-width0.503)+width/2cos(radians(60)),(height-height0.0888)-width/2sin(radians(60)));   rotate(-radians(-30));   text("60°",0,0);   resetMatrix();   translate((width-width0.507)+width/2cos(radians(90)),(height-height0.0833)-width/2sin(radians(90)));   rotate(radians(0));   text("90°",0,0);   resetMatrix();   translate(width-width0.513+width/2cos(radians(120)),(height-height0.07129)-width/2sin(radians(120)));   rotate(radians(-30));   text("120°",0,0);   resetMatrix();   translate((width-width0.5104)+width/2cos(radians(150)),(height-height0.0574)-width/2sin(radians(150)));   rotate(radians(-60));   text("150°",0,0);   popMatrix(); }

This is how it looks finished (sorry for bad quality of gif):

rad


l'astra lab icon



Releases

No releases published

Packages

No packages published

Languages