Ada beberapa cara untuk memodifikasi program servo agar bergerak lebih lambat atau dikendalikan dengan potensiometer. Mari kita buat program untuk mengendalikan servo dengan potensiometer, karena ini adalah modifikasi yang sangat umum dan interaktif.
Modifikasi Program: Mengendalikan Servo dengan Potensiometer
Program ini akan memungkinkan Anda mengontrol posisi servo secara manual dengan memutar potensiometer.
Komponen Tambahan yang Dibutuhkan:
Potensiometer (biasanya 10k ohm)
Kabel Jumper
Skema Pengkabelan (Tambahan untuk Potensiometer):
Potensiometer Kaki Kiri (atau Kanan): Hubungkan ke pin GND Arduino.
Potensiometer Kaki Kanan (atau Kiri): Hubungkan ke pin 5V Arduino.
Potensiometer Kaki Tengah (Wiper): Hubungkan ke salah satu pin Analog Input Arduino (misalnya pin A0).
Servo motor tetap terhubung seperti sebelumnya:
Kabel Merah (VCC) servo ke 5V Arduino.
Kabel Coklat/Hitam (GND) servo ke GND Arduino.
Kabel Oranye/Kuning (Signal) servo ke Digital Pin 9 (atau pin PWM lain) Arduino.
// --- Library yang Dibutuhkan ---
#include <Servo.h> // Mengimpor library Servo
// --- Inisialisasi Objek Servo ---
Servo myServo; // Membuat objek Servo bernama 'myServo'
// --- Konfigurasi Pin ---
const int servoPin = 9; // Pin digital tempat kabel sinyal servo terhubung (PWM pin)
const int potPin = A0; // Pin analog tempat kabel tengah potensiometer terhubung
void setup() {
// Mengaitkan objek servo dengan pin yang digunakan
myServo.attach(servoPin);
// Mulai komunikasi serial untuk debugging
Serial.begin(9600);
Serial.println("Servo Control with Potentiometer Started");
}
void loop() {
// --- Membaca Nilai dari Potensiometer ---
// Potensiometer akan memberikan nilai analog antara 0-1023
int potValue = analogRead(potPin);
Serial.print("Potensiometer Value: ");
Serial.println(potValue);
// --- Memetakan Nilai Potensiometer ke Sudut Servo ---
// Fungsi map() akan mengubah rentang nilai 0-1023 menjadi 0-180
// 0-1023 adalah rentang pembacaan analog dari Arduino
// 0-180 adalah rentang sudut yang bisa digerakkan servo
int servoAngle = map(potValue, 0, 1023, 0, 180);
Serial.print("Servo Angle: ");
Serial.println(servoAngle);
// --- Menggerakkan Servo ke Sudut yang Dihitung ---
myServo.write(servoAngle);
// --- Jeda Singkat (opsional, untuk stabilitas) ---
// Jeda kecil ini mencegah servo bergerak terlalu cepat atau tidak stabil
delay(15);
}
Penjelasan Kode Modifikasi:
const int potPin = A0;
:Mendefinisikan pin analog
A0
sebagai input untuk potensiometer.
int potValue = analogRead(potPin);
:Fungsi
analogRead()
membaca nilai tegangan dari pin analogpotPin
. Arduino Uno memiliki ADC (Analog-to-Digital Converter) 10-bit, yang berarti ia dapat mengubah tegangan analog menjadi nilai digital antara 0 (0V) hingga 1023 (5V).
int servoAngle = map(potValue, 0, 1023, 0, 180);
:Ini adalah fungsi kunci untuk memetakan nilai.
map(value, fromLow, fromHigh, toLow, toHigh)
:value
: Nilai yang ingin Anda petakan (dalam kasus ini,potValue
dari potensiometer).fromLow
,fromHigh
: Rentang nilai input (0
hingga1023
darianalogRead
).toLow
,toHigh
: Rentang nilai output yang diinginkan (0
hingga180
derajat untuk servo).
Fungsi ini secara otomatis menghitung nilai
servoAngle
yang proporsional denganpotValue
dalam rentang sudut servo.
myServo.write(servoAngle);
:Menggerakkan servo ke sudut yang baru dihitung dari pembacaan potensiometer.
delay(15);
:Jeda singkat ini penting untuk memberikan waktu bagi servo untuk bergerak ke posisi yang diinginkan dan untuk mencegah pembacaan potensiometer yang terlalu cepat yang dapat membuat servo bergetar atau tidak stabil.
Cara Menggunakan:
Hubungkan komponen sesuai skema pengkabelan di atas.
Salin dan tempel kode di atas ke Arduino IDE Anda.
Unggah program ke board Arduino Anda.
Putar potensiometer dan Anda akan melihat servo motor bergerak sesuai dengan putaran potensiometer! Anda juga bisa membuka Serial Monitor di Arduino IDE (Tools > Serial Monitor) untuk melihat nilai
potValue
danservoAngle
secara real-time.
Dengan modifikasi ini, Anda mendapatkan kontrol yang jauh lebih intuitif atas posisi servo motor Anda.
Komentar
Posting Komentar