├── README.md ├── radar_ultrasonic.ino └── radar_ultrasonic.pde /README.md: -------------------------------------------------------------------------------- 1 | # Ultrasonic_radar 2 | The first file is the Arduino sketch 3 | The second file contains the code for Processing IDE 4 | -------------------------------------------------------------------------------- /radar_ultrasonic.ino: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | #define trigPin 8 4 | #define echoPin 9 5 | 6 | long duration; 7 | int distance ; 8 | 9 | Servo myservo; 10 | 11 | int calculateDistance() 12 | { 13 | digitalWrite(trigPin,LOW); 14 | delayMicroseconds(2); 15 | digitalWrite(trigPin,HIGH); 16 | delayMicroseconds(10); 17 | digitalWrite(trigPin,LOW); 18 | duration = pulseIn(echoPin, HIGH); 19 | distance = duration*0.034/2; 20 | return distance; 21 | } 22 | 23 | void setup() 24 | { 25 | pinMode(trigPin , OUTPUT); 26 | pinMode(echoPin, INPUT); 27 | myservo.attach(11); 28 | Serial.begin(9600); 29 | } 30 | 31 | void loop() 32 | { 33 | int i ; 34 | for (i=15; i<=165; i++) 35 | { 36 | myservo.write(i); 37 | delay(15); 38 | calculateDistance(); 39 | Serial.print(i); 40 | Serial.print(","); 41 | Serial.print(distance); 42 | Serial.print("."); 43 | } 44 | for(i=165; i>=15; i--) 45 | { 46 | myservo.write(i); 47 | delay(15); 48 | calculateDistance(); 49 | Serial.print(i); 50 | Serial.print(","); 51 | Serial.print(distance); 52 | Serial.print("."); 53 | 54 | } 55 | 56 | 57 | 58 | 59 | } 60 | 61 | -------------------------------------------------------------------------------- /radar_ultrasonic.pde: -------------------------------------------------------------------------------- 1 | import processing.serial.*; // imports library for serial communication 2 | import java.awt.event.KeyEvent; // imports library for reading the data from the serial port 3 | import java.io.IOException; 4 | Serial myPort; // defines Object Serial 5 | // defubes variables 6 | String angle=""; 7 | String distance=""; 8 | String data=""; 9 | String noObject; 10 | float pixsDistance; 11 | int iAngle, iDistance; 12 | int index1=0; 13 | int index2=0; 14 | PFont orcFont; 15 | void setup() { 16 | 17 | size (1200, 700); // ***CHANGE THIS TO YOUR SCREEN RESOLUTION*** 18 | smooth(); 19 | myPort = new Serial(this, "COM7", 9600); // starts the serial communication 20 | myPort.bufferUntil('.'); // reads the data from the serial port up to the character '.'. So actually it reads this: angle,distance. 21 | } 22 | void draw() { 23 | 24 | fill(98, 245, 31); 25 | // simulating motion blur and slow fade of the moving line 26 | noStroke(); 27 | fill(0, 4); 28 | rect(0, 0, width, height-height*0.065); 29 | 30 | fill(98, 245, 31); // green color 31 | // calls the functions for drawing the radar 32 | drawRadar(); 33 | drawLine(); 34 | drawObject(); 35 | drawText(); 36 | } 37 | void serialEvent (Serial myPort) { // starts reading data from the Serial Port 38 | // reads the data from the Serial Port up to the character '.' and puts it into the String variable "data". 39 | data = myPort.readStringUntil('.'); 40 | data = data.substring(0, data.length()-1); 41 | 42 | index1 = data.indexOf(","); // find the character ',' and puts it into the variable "index1" 43 | angle= data.substring(0, index1); // read the data from position "0" to position of the variable index1 or thats the value of the angle the Arduino Board sent into the Serial Port 44 | distance= data.substring(index1+1, data.length()); // read the data from position "index1" to the end of the data pr thats the value of the distance 45 | 46 | // converts the String variables into Integer 47 | iAngle = int(angle); 48 | iDistance = int(distance); 49 | } 50 | void drawRadar() { 51 | pushMatrix(); 52 | translate(width/2, height-height*0.074); // moves the starting coordinats to new location 53 | noFill(); 54 | strokeWeight(2); 55 | stroke(98, 245, 31); 56 | // draws the arc lines 57 | arc(0, 0, (width-width*0.0625), (width-width*0.0625), PI, TWO_PI); 58 | arc(0, 0, (width-width*0.27), (width-width*0.27), PI, TWO_PI); 59 | arc(0, 0, (width-width*0.479), (width-width*0.479), PI, TWO_PI); 60 | arc(0, 0, (width-width*0.687), (width-width*0.687), PI, TWO_PI); 61 | // draws the angle lines 62 | line(-width/2, 0, width/2, 0); 63 | line(0, 0, (-width/2)*cos(radians(30)), (-width/2)*sin(radians(30))); 64 | line(0, 0, (-width/2)*cos(radians(60)), (-width/2)*sin(radians(60))); 65 | line(0, 0, (-width/2)*cos(radians(90)), (-width/2)*sin(radians(90))); 66 | line(0, 0, (-width/2)*cos(radians(120)), (-width/2)*sin(radians(120))); 67 | line(0, 0, (-width/2)*cos(radians(150)), (-width/2)*sin(radians(150))); 68 | line((-width/2)*cos(radians(30)), 0, width/2, 0); 69 | popMatrix(); 70 | } 71 | void drawObject() { 72 | pushMatrix(); 73 | translate(width/2, height-height*0.074); // moves the starting coordinats to new location 74 | strokeWeight(9); 75 | stroke(255, 10, 10); // red color 76 | pixsDistance = iDistance*((height-height*0.1666)*0.025); // covers the distance from the sensor from cm to pixels 77 | // limiting the range to 40 cms 78 | if (iDistance<40) { 79 | // draws the object according to the angle and the distance 80 | line(pixsDistance*cos(radians(iAngle)), -pixsDistance*sin(radians(iAngle)), (width-width*0.505)*cos(radians(iAngle)), -(width-width*0.505)*sin(radians(iAngle))); 81 | } 82 | popMatrix(); 83 | } 84 | void drawLine() { 85 | pushMatrix(); 86 | strokeWeight(9); 87 | stroke(30, 250, 60); 88 | translate(width/2, height-height*0.074); // moves the starting coordinats to new location 89 | line(0, 0, (height-height*0.12)*cos(radians(iAngle)), -(height-height*0.12)*sin(radians(iAngle))); // draws the line according to the angle 90 | popMatrix(); 91 | } 92 | void drawText() { // draws the texts on the screen 93 | 94 | pushMatrix(); 95 | if (iDistance>40) { 96 | noObject = "Out of Range"; 97 | } else { 98 | noObject = "In Range"; 99 | } 100 | fill(0, 0, 0); 101 | noStroke(); 102 | rect(0, height-height*0.0648, width, height); 103 | fill(98, 245, 31); 104 | textSize(25); 105 | 106 | text("10cm", width-width*0.3854, height-height*0.0833); 107 | text("20cm", width-width*0.281, height-height*0.0833); 108 | text("30cm", width-width*0.177, height-height*0.0833); 109 | text("40cm", width-width*0.0729, height-height*0.0833); 110 | textSize(40); 111 | text("N_Tech ", width-width*0.875, height-height*0.0277); 112 | text("Angle: " + iAngle +" ", width-width*0.48, height-height*0.0277); 113 | text("Distance: ", width-width*0.26, height-height*0.0277); 114 | if (iDistance<40) { 115 | text(" " + iDistance +" cm", width-width*0.225, height-height*0.0277); 116 | } 117 | textSize(25); 118 | fill(98, 245, 60); 119 | translate((width-width*0.4994)+width/2*cos(radians(30)), (height-height*0.0907)-width/2*sin(radians(30))); 120 | rotate(-radians(-60)); 121 | text("30", 0, 0); 122 | resetMatrix(); 123 | translate((width-width*0.503)+width/2*cos(radians(60)), (height-height*0.0888)-width/2*sin(radians(60))); 124 | rotate(-radians(-30)); 125 | text("60", 0, 0); 126 | resetMatrix(); 127 | translate((width-width*0.507)+width/2*cos(radians(90)), (height-height*0.0833)-width/2*sin(radians(90))); 128 | rotate(radians(0)); 129 | text("90", 0, 0); 130 | resetMatrix(); 131 | translate(width-width*0.513+width/2*cos(radians(120)), (height-height*0.07129)-width/2*sin(radians(120))); 132 | rotate(radians(-30)); 133 | text("120", 0, 0); 134 | resetMatrix(); 135 | translate((width-width*0.5104)+width/2*cos(radians(150)), (height-height*0.0574)-width/2*sin(radians(150))); 136 | rotate(radians(-60)); 137 | text("150", 0, 0); 138 | popMatrix(); 139 | } 140 | --------------------------------------------------------------------------------