Arduino UNO Ultrasonic Distance Measurement with Servo Motor Control
View and Edit Project In Cirkit Designer
Circuit Documentation
Summary
This circuit involves an Arduino UNO microcontroller interfacing with an HC-SR04 Ultrasonic Sensor and a 9G Servo Motor. The Arduino UNO is used to control the servo motor based on distance measurements obtained from the ultrasonic sensor.
Component List
HC-SR04 Ultrasonic Sensor
- Description: The HC-SR04 is an ultrasonic sensor used for distance measurement.
- Pins: VCC, TRIG, ECHO, GND
Arduino UNO
- Description: The Arduino UNO is a microcontroller board based on the ATmega328P.
- Pins: UNUSED, IOREF, Reset, 3.3V, 5V, GND, Vin, A0, A1, A2, A3, A4, A5, SCL, SDA, AREF, D13, D12, D11, D10, D9, D8, D7, D6, D5, D4, D3, D2, D1, D0
Servo Motor 9G
- Description: The 9G Servo Motor is a small and lightweight servo motor used for precise control of angular position.
- Pins: VCC 5V, PMW, GND
Wiring Details
HC-SR04 Ultrasonic Sensor
- VCC: Not connected
- TRIG: Connected to Arduino UNO pin D2
- ECHO: Connected to Arduino UNO pin D3
- GND: Not connected
Arduino UNO
- D2: Connected to HC-SR04 Ultrasonic Sensor pin TRIG
- D3: Connected to HC-SR04 Ultrasonic Sensor pin ECHO
- 5V: Connected to Servo Motor 9G pin VCC 5V
- GND: Connected to Servo Motor 9G pin GND
Servo Motor 9G
- VCC 5V: Connected to Arduino UNO pin 5V
- PMW: Not connected
- GND: Connected to Arduino UNO pin GND
Code Documentation
Arduino UNO Code
#include <Servo.h>
#define trigPin 2
#define echoPin 3
long duration;
int distance;
Servo myservo;
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;
}
void setup() {
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
myservo.attach(11);
Serial.begin(9600);
}
void loop() {
int i;
for (i = 15; i <= 165; i++) {
myservo.write(i);
delay(15);
calculateDistance();
Serial.print(i);
Serial.print(",");
Serial.print(distance);
Serial.print(".");
}
for (i = 165; i >= 15; i--) {
myservo.write(i);
delay(15);
calculateDistance();
Serial.print(i);
Serial.print(",");
Serial.print(distance);
Serial.print(".");
}
}
This code initializes the ultrasonic sensor and the servo motor. It continuously measures the distance using the ultrasonic sensor and moves the servo motor back and forth while printing the distance to the serial monitor.