OBJECT FINDER 

using 

ARDUINO UNO 

and

PROCESSING DEVELOPMENT ENVIRONMENT


Overview

This is a object finder using Arduino uno and Processing also use Ultrasonic sensor for detecting and measuring an object 



Parts Requirements
  • Arduino uno     click to Shop new one
  • HC-SR04 Ultrasonic sensor   click to Shope this
  • Small Servo motor   click to Shop this
  • Jumber wires    click to Shop this
  • Breadboard    click to shop this 

Software Requirements

Here is the Arduino code
/* The code is written for Arduino Radar system
 *  using HC-SR04 && Arduino
 * modifyed by Sreekanth.K.R 2016 
 * www.diysundayprojects.blogspot.com
  
 * HC-SR04 is a ultasonic sensor they has 4 pins - VCC,Trig,Echo,GND;
  
 * HC-SR04    Arduino 
 * VCC ------- +5V
 * Trig ------ 12
 * Echo ------ 11
 * GND ------- GND
 * And also connect the Servo signal pin / yellow to Arduino 9th pin
*/
#include<Servo.h>  // Including the servo library
Servo myServo;  // Creating a Servo object
const int trigPin = 12; // defining pin variables 
const int echoPin = 11;
int distance,c; // integer variable for storing distance value that get from the sensor
long duration; // long variables used to store the travel time  ""

void setup(){
  pinMode(trigPin,OUTPUT);
  pinMode(echoPin,INPUT);
  Serial.begin(9600); // Starting the Serial communication for showing the result on the computer  
  myServo.attach(9); 
  
}
int calculateDistance(){ // crate a function for calculating the distance from the sensor
  digitalWrite(trigPin,LOW);
  delayMicroseconds(2);
  digitalWrite(trigPin,HIGH);
  delayMicroseconds(10);
  digitalWrite(trigPin,LOW);
  duration = pulseIn(echoPin,HIGH);
  distance = duration*0.034/2;
  return distance;
}
void loop(){
  for(c=0;c<=180;c++){ // for rotating the servo 0' - 180' 
    myServo.write(c);
    delay(30);
    distance = calculateDistance(); // calling the previuosly defined function
    Serial.print(c); // sending the angle / Servo position
    Serial.print(","); // this charactor for indexing
    Serial.print(distance);// sending the distance that return from the function
    Serial.print("."); // this charactor for indexing
    
  }
  for(c=180;c>0;c--){ // for rotating the servo 180' - 0'
    myServo.write(c);
    delay(30);
    distance = calculateDistance();
    Serial.print(c);
    Serial.print(",");
    Serial.print(distance);
    Serial.print(".");
  }
}
Here is the processing code

//code from www.howtomechatronics.com

import processing.serial.*;
import java.awt.event.KeyEvent; 
import java.io.IOException; 
Serial myPort; 

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

void setup()  
size (1220,696);
smooth();
myPort = new Serial(this,"COM4", 9600); // you can change the COM port  
myPort.bufferUntil('.'); 
 orcFont = loadFont("ComicSansMS-Bold-35.vlw"); 
void draw() { 
fill(100,245,30); 
textFont(orcFont);
noStroke(); 
fill(0,4); 
rect(0, 0, width, height-height*0.030); 
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-height*0.074); 

noFill(); 

strokeWeight(2); 

stroke(0,255,0); 
arc(0,0,(width-width*0.0625),(width-width*0.0625),PI,TWO_PI); 
arc(0,0,(width-width*0.27),(width-width*0.27),PI,TWO_PI); 
arc(0,0,(width-width*0.479),(width-width*0.479),PI,TWO_PI); 
arc(0,0,(width-width*0.687),(width-width*0.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-height*0.074);

strokeWeight(9); 
stroke(255,10,10); 

pixsDistance = iDistance*((height-height*0.1666)*0.025);

if(iDistance<40){ 
line(pixsDistance*cos(radians(iAngle)),-pixsDistance*sin(radians(iAngle)),(width-width*0.505)*cos(radians(iAngle)),-(width-width*0.505)*sin(radians(iAngle))); 

popMatrix(); 

void drawLine() {  
pushMatrix();
strokeWeight(9); 
stroke(30,255,24); 
translate(width/2,height-height*0.074); 
line(0,0,(height-height*0.12)*cos(radians(iAngle)),-(height-height*0.12)*sin(radians(iAngle))); 
popMatrix(); 
}
 void drawText() { 
 pushMatrix(); 
if(iDistance>40) { 
noObject = "Out of Range";
}
 else { 

noObject = "In Range"; 
fill(0); 
noStroke(); 
rect(0, height-height*0.0648, width, height);
 fill(98,245,31); textSize(20); 
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);

text("Sunday Projects",width-width*0.2234,height-height*0.8865);

textSize(40);
text("Object: " + noObject, width-width*0.875, height-height*0.0150);

text("Angle: " + iAngle +" °", width-width*0.48, height-height*0.0150); 
text("Distance: ", width-width*0.26, height-height*0.0150);




if(iDistance<40) { 
  
  text(" " + iDistance +" cm", width-width*0.125, height-height*0.0150); 
textSize(30); fill(255,0,0); 
translate((width-width*0.4994)+width/2*cos(radians(30)),(height-height*0.0907)-width/2*sin(radians(30))); 
rotate(-radians(-60)); 
text("30°",0,0); 
resetMatrix(); 
translate((width-width*0.503)+width/2*cos(radians(60)),(height-height*0.0888)-width/2*sin(radians(60))); 
rotate(-radians(-30)); text("60°",0,0); 
resetMatrix(); translate((width-width*0.507)+width/2*cos(radians(90)),(height-height*0.0833)-width/2*sin(radians(90))); 
rotate(radians(0)); text("90°",0,0); 
resetMatrix(); 
translate(width-width*0.513+width/2*cos(radians(120)),(height-height*0.07129)-width/2*sin(radians(120))); 
rotate(radians(-30)); 
text("120°",0,0); 
resetMatrix(); 
translate((width-width*0.5104)+width/2*cos(radians(150)),(height-height*0.0574)-width/2*sin(radians(150))); 
rotate(radians(-60)); 

text("150°",0,0); 

popMatrix(); 
}

Important thing !

You'll face a font problem in the code runnig 
Don't worry please follow me ....

please click Tools >> Create Font
And choose a Font you like 
Then put the name in loadFond(" ....."); function

Then run the program.........

Thank You

Comments