0% found this document useful (0 votes)
3 views7 pages

Processing Code

The document is a Processing sketch that implements an ultrasonic radar system using serial communication with an Arduino. It reads angle and distance data, visualizes the radar with arcs and lines, and displays the information on the screen. The radar sweeps and detects objects within a specified range, updating the display accordingly.

Uploaded by

vaniazaheer1
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
3 views7 pages

Processing Code

The document is a Processing sketch that implements an ultrasonic radar system using serial communication with an Arduino. It reads angle and distance data, visualizes the radar with arcs and lines, and displays the information on the screen. The radar sweeps and detects objects within a specified range, updating the display accordingly.

Uploaded by

vaniazaheer1
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 7

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;

Serial myPort; // defines Object Serial

String angle = "";

String distance = "";

String data = "";

String noObject;

float pixsDistance;

int iAngle = 0, iDistance = 0; // Initialize iAngle and iDistance globally

int index1 = 0;

int index2 = 0;

PFont orcFont;

void setup() {

fullScreen(); // Fullscreen mode

surface.setResizable(true); // Allow the window to be resizable

smooth();

myPort = new Serial(this, "COM5", 9600); // starts the serial communication

myPort.bufferUntil('.'); // reads the data from the serial port up to the character '.' (angle, distance).

}
void draw() {

fill(98, 245, 31);

noStroke();

fill(0, 4);

rect(0, 0, width, height - height * 0.065); // refresh background with transparency

fill(98, 245, 31); // green color

// calls the functions for drawing the radar

drawRadar();

drawLine(); // Draws the sweeping line according to the motor's angle

drawObject(); // Draw the detected object based on angle and distance

drawText(); // Display the current angle and distance information

// Read the serial data from Arduino (angle, distance)

void serialEvent(Serial myPort) {

data = myPort.readStringUntil('.'); // reads the data up to '.'

if (data != null) {

data = data.trim(); // remove leading/trailing whitespaces

index1 = data.indexOf(","); // find the character ',' and puts it into the variable "index1"

if (index1 > 0) {

angle = data.substring(0, index1); // extract angle

distance = data.substring(index1 + 1, data.length()); // extract distance

// converts the String variables into Integer


iAngle = int(angle);

iDistance = int(distance);

void drawRadar() {

pushMatrix();

translate(width / 2, height - height * 0.074); // moves the starting coordinates to new location

noFill();

strokeWeight(2);

stroke(98, 245, 31);

// draws the arc lines for radar's range

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);

// draws the angle lines at fixed positions (30, 60, 90, 120, 150 degrees)

line(-width / 2, 0, width / 2, 0); // 0 degree line

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)));


popMatrix();

// Draw the moving radar sweep line according to the motor's angle

void drawLine() {

pushMatrix();

strokeWeight(9);

stroke(30, 250, 60); // green color for radar sweep line

translate(width / 2, height - height * 0.074); // moves the starting coordinates to new location

// Draw the sweeping line according to the motor's angle

line(0, 0, (height - height * 0.12) * cos(radians(iAngle)), -(height - height * 0.12) * sin(radians(iAngle)));

popMatrix();

void drawObject() {

pushMatrix();

translate(width / 2, height - height * 0.074); // moves the starting coordinates to new location

strokeWeight(9);

stroke(255, 10, 10); // red color for detected object

pixsDistance = iDistance * ((height - height * 0.1666) * 0.025); // convert distance from cm to pixels

// limiting the range to 40 cm

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();

// Display angle and distance info and other text

void drawText() {

pushMatrix();

// Check if the object is in range or out of range

if (iDistance > 40) {

noObject = "Out of Range";

} else {

noObject = "In Range";

fill(0, 0, 0);

noStroke();

rect(0, 0, width, height * 0.0648); // Top black box for text

fill(98, 245, 31); // green text color

textSize(40);

// Display angle and distance at the top-left corner

text("Ultrasonic Radar System", 900, 50); // Moved to top-right

text("by Vania Zaheer", 900, 90); // Moved to top-right

text("Angle: " + iAngle + "°", 20, 50); // Moved to top-left


text("Distance: " + iDistance + " cm", 300, 50); // Moved to top-left with some space after angle

textSize(25);

fill(98, 245, 60);

// Angle markers remain unchanged

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();

You might also like