Arduino HC‑SR04 Ultrasonic Radar: Build a Real‑Time Visual Display with Servo and Processing
Components and supplies
![]() |
| × | 1 | |||
![]() |
| × | 1 |
About this project
Radar Screen Visualisation for HC-SR04
Arduino Code:
Sends sensor readings for every degree moved by the servo values sent to serial port to be picked up by Processing
https://github.com/faweiz/My-Arduino/blob/master/arduino_radar/Arduino_radar_HC_SR04/Arduino/Arduino_radar_server_arduino/Arduino_radar_server_arduino.ino
Processing Code:
Maps out an area of what the HC-SR04 sees from a top down view. Takes and displays 2 readings, one left to right and one right to left. Displays an average of the 2 readings
https://github.com/faweiz/My-Arduino/blob/master/arduino_radar/Arduino_radar_HC_SR04/Processing-code/Arduino_radar_client_processing/Arduino_radar_client_processing.pde
Any questions are welcome!
Github: https://github.com/faweiz
Portfolium: https://portfolium.com/faweiz
Linkedin: https://www.linkedin.com/in/faweiz
Code
- Untitled file
Untitled fileArduino
/*
https://www.hackster.io/faweiz/arduino-radar
Radar Screen Visualisation for HC-SR04
Sends sensor readings for every degree moved by the servo
values sent to serial port to be picked up by Processing
*/
#include <NewPing.h>
#include <Servo.h>
#define TRIGGER_PIN 2 // Arduino pin 2 tied to trigger pin on the ultrasonic sensor.
#define ECHO_PIN 3 // Arduino pin 3 tied to echo pin on the ultrasonic sensor.
#define MAX_DISTANCE 150 // Maximum distance we want to ping for (in centimeters). Maximum sensor distance is rated at 400-500cm.
#define SERVO_PWM_PIN 9 //set servo to Arduino's pin 9
// means -angle .. angle
#define ANGLE_BOUNDS 80
#define ANGLE_STEP 1
int angle = 0;
// direction of servo movement
// -1 = back, 1 = forward
int dir = 1;
Servo myservo;
NewPing sonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE);
void setup() {
Serial.begin(9600); // initialize the serial port:
myservo.attach(SERVO_PWM_PIN); //set servo to Arduino's pin 9
}
void loop() {
delay(50);
// we must renormalize to positive values, because angle is from -ANGLE_BOUNDS .. ANGLE_BOUNDS
// and servo value must be positive
myservo.write(angle + ANGLE_BOUNDS);
// read distance from sensor and send to serial
getDistanceAndSend2Serial(angle);
// calculate angle
if (angle >= ANGLE_BOUNDS || angle <= -ANGLE_BOUNDS) {
dir = -dir;
}
angle += (dir * ANGLE_STEP);
}
int getDistanceAndSend2Serial(int angle) {
int cm = sonar.ping_cm();
Serial.print(angle, DEC);
Serial.print(",");
Serial.println(cm, DEC);
}
Code
https://github.com/faweiz/My-Arduino/tree/master/arduino_radarArduino_radar_server_arduino.ino
Arduino_radar_client_processing.pde
Schematics

Manufacturing process
- Build a Bluetooth‑controlled Arduino Spybot
- FlickMote: Gesture‑Controlled IR Remote for Smart Home
- DIY Arduino TV B-Gone: Universal Remote for All TVs
- Build a Custom LED Master Clock with Alarm – Viewable from 12 Meters
- Find Me: Smart Item Locator with Arduino and Bluetooth
- Optimized Power Solutions for Arduino Projects
- Arduino Tic Tac Toe with MAX7219 LED Matrix and Cardboard Enclosure
- Build a Smart Arduino Quadruped Robot: Step‑by‑Step Guide
- Real-Time Distance Measurement with Arduino Sonar & Processing Visualization
- Build a Custom Arduino Joystick Steering Wheel for Gaming

