Arduino Servo Radar
HC-SR04 ultrasonik sensör ve SG90 servo motor ile açıya bağlı mesafe ölçümü yapan gerçek zamanlı radar çalışması.

Donanımdan ekrana.
Bağlantı
HC-SR04, servo ve Arduino pinleri şemaya göre eşleştirilir.
Tarama
Servo açı değiştirir, sensör mesafe bilgisi gönderir.
Görselleştirme
Processing veriyi radar ekranına işler; sitedeki demo ayrıca çalışır.
Proje hakkında
SG90 servo motor sensörü farklı açılara çevirir. HC-SR04 her açıda bir mesafe ölçümü alır. Arduino, açı ve mesafeyi seri port üzerinden gönderir. Processing uygulaması bu verileri radar görünümünde gösterir.
Kullanılan araçlar ve bileşenler
- Arduino Uno
- HC-SR04 ultrasonik mesafe sensörü
- SG90 servo motor
- Breadboard, jumper kablolar ve USB
- Arduino IDE ve Processing IDE
Malzeme listesi
CSV indir ↓Projenin paylaşılan donanım ve kod yapısına göre hazırlanan liste. Adetler gösterilen kurulum içindir.
| Malzeme | Adet | Görevi |
|---|---|---|
| Arduino Uno | 1 | Mesafe ölçümü ve servo kontrolü |
| HC-SR04 ultrasonik sensör | 1 | Mesafe ölçme |
| SG90 mikro servo | 1 | Sensörü sağa sola çevirme |
| Breadboard | 1 | Güç dağıtımı ve bağlantılar |
| Jumper kablo | Yeterli sayıda | Sensör, servo ve Arduino bağlantıları |
| USB bağlantı kablosu | 1 | Programlama ve Processing uygulamasıyla seri bağlantı |
Not: Gerçek donanım uygulamasında besleme akımını ve bağlantıların güvenliğini kendi kartına göre kontrol et.
Sanal laboratuvarı deneDevre bağlantıları
Bağlantı şemasını tam boy görmek için görsele tıklayabilirsin.

| Modül bağlantısı | Arduino Uno |
|---|---|
| HC-SR04 VCC | 5V |
| HC-SR04 GND | GND |
| HC-SR04 TRIG | D9 |
| HC-SR04 ECHO | D10 |
| SG90 kırmızı | 5V |
| SG90 kahverengi | GND |
| SG90 turuncu | D11 |
Pin numaraları yüklediğin bağlantı şemasına göre D9, D10 ve D11 olarak ayarlandı. Eski sitedeki kodunda farklı pinler kullanılıyordu; eski devreyi değiştirmeden kullanacaksan kodu buna göre düzenlemelisin.
Radar simülasyonu
Hedef mesafesini değiştir ve tarama hareketini izle. Bu bölüm örnek veri üretir; gerçek Arduino veya sensöre bağlı değildir.
Bu, Processing radar arayüzünün tarayıcıdaki görsel canlandırmasıdır.
Arduino kodu
Kodu indir ↓#include <Servo.h>
// Pinler, sayfadaki kullanici baglanti semasiyla aynidir.
const byte TRIG_PIN = 9;
const byte ECHO_PIN = 10;
const byte SERVO_PIN = 11;
Servo radarServo;
int mesafeOlc() {
digitalWrite(TRIG_PIN, LOW);
delayMicroseconds(2);
digitalWrite(TRIG_PIN, HIGH);
delayMicroseconds(10);
digitalWrite(TRIG_PIN, LOW);
unsigned long sure = pulseIn(ECHO_PIN, HIGH, 30000UL);
if (sure == 0) return 0;
return (int)(sure * 0.0343f / 2.0f);
}
void olcVeGonder(int aci) {
radarServo.write(aci);
delay(35);
Serial.print(aci);
Serial.print(',');
Serial.print(mesafeOlc());
Serial.print('.');
}
void setup() {
pinMode(TRIG_PIN, OUTPUT);
pinMode(ECHO_PIN, INPUT);
radarServo.attach(SERVO_PIN);
Serial.begin(9600);
}
void loop() {
for (int aci = 15; aci <= 165; aci++) olcVeGonder(aci);
for (int aci = 165; aci >= 15; aci--) olcVeGonder(aci);
}
Processing kodu
Kodu indir ↓import processing.serial.*;
Serial port;
int aci = 90;
int mesafe = 0;
void setup() {
size(1100, 650);
smooth();
println(Serial.list());
// Listedeki uygun portu secin (ornegin Serial.list()[0]).
port = new Serial(this, Serial.list()[0], 9600);
port.bufferUntil('.');
}
void serialEvent(Serial p) {
String veri = p.readStringUntil('.');
if (veri == null) return;
veri = trim(veri.substring(0, veri.length() - 1));
String[] alan = split(veri, ',');
if (alan.length != 2) return;
int yeniAci = int(alan[0]);
int yeniMesafe = int(alan[1]);
if (yeniAci >= 0 && yeniAci <= 180) aci = yeniAci;
if (yeniMesafe >= 0) mesafe = yeniMesafe;
}
void draw() {
background(4, 12, 17);
translate(width / 2, height - 65);
noFill();
stroke(38, 197, 88);
strokeWeight(2);
for (int r = 160; r <= 950; r += 160) arc(0, 0, r, r, PI, TWO_PI);
line(-480, 0, 480, 0);
for (int a = 30; a <= 150; a += 30) {
float x = 480 * cos(radians(a));
float y = -480 * sin(radians(a));
line(0, 0, x, y);
}
float x = 470 * cos(radians(aci));
float y = -470 * sin(radians(aci));
stroke(67, 255, 131);
strokeWeight(4);
line(0, 0, x, y);
if (mesafe > 0 && mesafe < 40) {
float hedefUzaklik = map(mesafe, 0, 40, 0, 470);
stroke(255, 87, 87);
strokeWeight(12);
point(hedefUzaklik * cos(radians(aci)), -hedefUzaklik * sin(radians(aci)));
}
resetMatrix();
fill(163, 249, 181);
textSize(22);
text("Arduino Servo Radar", 26, 36);
textSize(17);
text("Aci: " + aci + "°", 26, height - 20);
text("Mesafe: " + (mesafe == 0 ? "Olcum yok" : mesafe + " cm"), 195, height - 20);
}
Diğer projeler
Başka bir çalışmamı da inceleyebilirsin.
Diğer projeye git