Di bawah ini Anda akan menemukan semua komponen yang diperlukan untuk menyelesaikan tutorial Arduino ini. Setiap komponen mencakup tautan afiliasi ke berbagai marketplace tempat Anda dapat membelinya.
Gambar | Komponen | Deskripsi | Harga Terbaik | Beli |
---|---|---|---|---|
![]() | Arduino Uno Mikrokontroler | Mikrokontroler populer untuk proyek elektronik dan prototipe. | Rp 58.980
di Shopee | |
![]() | Sensor Ultrasonik HC-SR04 Sensor | Sensor untuk mendeteksi jarak benda menggunakan gelombang ultrasonik. | Rp 9.500
di Shopee | |
![]() | Servo Motor SG90 Aktuator | Motor servo untuk menggerakkan sensor ultrasonik secara rotasi. | Rp 12.600
di Tokopedia | |
![]() | Buzzer Aktif Output | Buzzer untuk menghasilkan suara saat benda terdeteksi. | Rp 1.500
di Tokopedia | |
![]() | Kabel Jumper Male-to-Male Kabel | Kabel untuk menghubungkan komponen di breadboard. | Rp 9.980
di Shopee | |
![]() | Kabel Jumper Male-to-Female Kabel | Kabel untuk menghubungkan komponen ke Arduino. | Rp 9.980
di Shopee |
Mikrokontroler populer untuk proyek elektronik dan prototipe.
Sensor untuk mendeteksi jarak benda menggunakan gelombang ultrasonik.
Motor servo untuk menggerakkan sensor ultrasonik secara rotasi.
Buzzer untuk menghasilkan suara saat benda terdeteksi.
Kabel untuk menghubungkan komponen di breadboard.
Mikrokontroler populer untuk proyek elektronik dan prototipe.
Bandingkan harga di berbagai marketplace
Sensor untuk mendeteksi jarak benda menggunakan gelombang ultrasonik.
Bandingkan harga di berbagai marketplace
Motor servo untuk menggerakkan sensor ultrasonik secara rotasi.
Bandingkan harga di berbagai marketplace
Buzzer untuk menghasilkan suara saat benda terdeteksi.
Bandingkan harga di berbagai marketplace
Kabel untuk menghubungkan komponen di breadboard.
Bandingkan harga di berbagai marketplace
Kabel untuk menghubungkan komponen ke Arduino.
Bandingkan harga di berbagai marketplace
#include <Servo.h>
// Definisi pin
const int trigPin = 10; // Pin Trig sensor ultrasonik
const int echoPin = 11; // Pin Echo sensor ultrasonik
const int buzzer = 3; // Pin buzzer
const int servoPin = 12; // Pin servo motor
// Variabel untuk mengukur jarak
long duration;
int distance;
Servo myServo;
void setup()
{
// Atur mode pin
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(buzzer, OUTPUT);
// Mulai komunikasi Serial untuk Processing
Serial.begin(9600);
// Hubungkan servo ke pin
myServo.attach(servoPin);
// Pastikan buzzer mati saat mulai
noTone(buzzer);
}
void loop()
{
// Sapu servo dari 15 ke 165 derajat
sweepServo(15, 165, 1);
// Sapu servo dari 165 ke 15 derajat
sweepServo(165, 15, -1);
}
// Fungsi untuk menggerakkan servo dan mengukur jarak
void sweepServo(int startAngle, int endAngle, int step)
{
for (int i = startAngle; step > 0 ? i <= endAngle : i >= endAngle; i += step)
{
myServo.write(i);
delay(50);
distance = calculateDistance();
// Kirim data ke Serial untuk Processing
Serial.print(i);
Serial.print(",");
Serial.print(distance);
Serial.print(".");
updateBuzzer(distance);
}
}
// Fungsi untuk mengatur buzzer berdasarkan jarak
void updateBuzzer(int distance)
{
// Atur nada buzzer berdasarkan jarak
if (distance > 30)
{
noTone(buzzer); // Matikan buzzer jika jarak > 30 cm
}
else if (distance <= 30 && distance > 10)
{
tone(buzzer, 1000); // Nada 1000 Hz untuk jarak 10-30 cm
}
else if (distance <= 10)
{
tone(buzzer, 500); // Nada 500 Hz untuk jarak < 10 cm
}
}
int calculateDistance()
{
// Kirim pulsa ultrasonik
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Ukur durasi echo dengan batas jarak maksimal
duration = pulseIn(echoPin, HIGH, 23530);
// Hitung jarak dalam cm
if (duration == 0)
{
distance = 400;
}
else
{
distance = duration * 0.034 / 2;
}
return distance;
}
import processing.serial.*;
// Objek untuk komunikasi dengan Arduino
Serial myPort;
// Variabel untuk sudut dan jarak dari Arduino
String angle = "";
String distance = "";
String data = "";
String statusObjek;
float pixsDistance;
int iAngle, iDistance;
int index1 = 0;
int index2 = 0;
void setup() {
// Atur ukuran layar (sesuaikan dengan resolusi Anda)
size(1200, 700);
smooth();
// Mulai komunikasi Serial (ganti indeks port jika perlu)
String portName = Serial.list()[0]; // Pilih port Arduino
myPort = new Serial(this, portName, 9600);
myPort.bufferUntil('.'); // Baca data sampai tanda '.'
}
void draw() {
// Efek fade untuk latar belakang
fill(0, 10);
noStroke();
rect(0, 0, width, height - height * 0.065);
// Gambar elemen radar
fill(98, 245, 31); // Warna hijau
drawRadar();
drawLine();
drawObject();
drawText();
}
// Fungsi untuk membaca data dari Arduino
void serialEvent(Serial myPort) {
data = myPort.readStringUntil('.');
if (data != null) {
data = trim(data);
index1 = data.indexOf(",");
angle = data.substring(0, index1);
distance = data.substring(index1 + 1, data.length());
// Ubah string ke integer
iAngle = int(angle);
iDistance = int(distance);
}
}
// Fungsi untuk menggambar lingkaran dan garis radial radar
void drawRadar() {
pushMatrix();
translate(width/2, height - height * 0.074); // Pindah ke tengah bawah layar
noFill();
strokeWeight(2);
stroke(98, 245, 31);
// Gambar lingkaran jarak
arc(0, 0, width - width * 0.0625, width - width * 0.0625, PI, TWO_PI); // 40 cm
arc(0, 0, width - width * 0.27, width - width * 0.27, PI, TWO_PI); // 30 cm
arc(0, 0, width - width * 0.479, width - width * 0.479, PI, TWO_PI); // 20 cm
arc(0, 0, width - width * 0.687, width - width * 0.687, PI, TWO_PI); // 10 cm
// Gambar garis sudut
line(-width/2, 0, width/2, 0); // Garis tengah (0 derajat)
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();
}
// Fungsi untuk menggambar garis sapuan radar
void drawLine() {
pushMatrix();
strokeWeight(9);
stroke(30, 250, 60);
translate(width/2, height - height * 0.074);
line(0, 0, (height - height * 0.12) * cos(radians(iAngle)), -(height - height * 0.12) * sin(radians(iAngle)));
popMatrix();
}
// Fungsi untuk menggambar objek yang terdeteksi
void drawObject() {
pushMatrix();
translate(width/2, height - height * 0.074);
strokeWeight(9);
stroke(255, 10, 10); // Warna merah
pixsDistance = iDistance * ((height - height * 0.1666) * 0.025); // Ubah jarak ke piksel
// Gambar garis merah jika jarak < 100 cm
if (iDistance < 100) {
line(pixsDistance * cos(radians(iAngle)), -pixsDistance * sin(radians(iAngle)),
(width - width * 0.505) * cos(radians(iAngle)), -(width - width * 0.505) * sin(radians(iAngle)));
}
popMatrix();
}
// Fungsi untuk menampilkan teks informasi
void drawText() {
pushMatrix();
// Tentukan status objek
if (iDistance > 100) {
statusObjek = "Di Luar Jangkauan";
} else {
statusObjek = "Dalam Jangkauan";
}
// Gambar latar belakang teks
fill(0);
noStroke();
rect(0, height - height * 0.0648, width, height);
// Teks informasi
fill(98, 245, 31);
textSize(25);
text("10cm", width - width * 0.3854, height - height * 0.0833);
text("20cm", width - width * 0.281, height - height * 0.0833);
text("30cm", width - width * 0.177, height - height * 0.0833);
text("40cm", width - width * 0.0729, height - height * 0.0833);
textSize(40);
text("Radar DIY", width - width * 0.875, height - height * 0.0277);
text("Sudut: " + iAngle + " °", width - width * 0.48, height - height * 0.0277);
text("Jarak: ", width - width * 0.26, height - height * 0.0277);
if (iDistance < 100) {
text(" " + iDistance + " cm", width - width * 0.185, height - height * 0.0250);
}
// Teks untuk sudut
textSize(25);
fill(98, 245, 60);
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();
}
Siapkan Komponen
Siapkan Arduino Uno, sensor ultrasonik HC-SR04, servo motor SG90, buzzer, kabel jumper male-to-male, dan male-to-female.
Hubungkan Sensor Ultrasonik
Hubungkan pin GND sensor ultrasonik ke GND Arduino, pin Echo ke pin 11, pin Trig ke pin 10, dan pin VCC ke 5V.
Hubungkan Servo Motor
Hubungkan kabel coklat servo ke GND, kabel merah ke 5V, dan kabel oranye ke pin 12 pada Arduino.
Hubungkan Buzzer
Hubungkan pin positif buzzer ke pin 3 dan pin negatif ke GND pada Arduino.
Hubungkan Daya
Gunakan kabel USB untuk menghubungkan Arduino ke laptop untuk daya dan pemrograman.
Unggah Kode ke Arduino
Buka Arduino IDE, salin kode radar ultrasonik, dan unggah ke Arduino Uno.
Jalankan Program Processing
Buka Processing IDE, salin kode tampilan radar, dan jalankan untuk menampilkan UI radar.
Uji Radar
Uji radar dengan menyalakan Arduino dan Processing. Sensor akan mendeteksi benda, buzzer berbunyi, dan UI menampilkan jarak serta sudut benda.