Modifikasi Program: Mengendalikan Servo dengan Potensiometer

 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):

  1. Potensiometer Kaki Kiri (atau Kanan): Hubungkan ke pin GND Arduino.

  2. Potensiometer Kaki Kanan (atau Kiri): Hubungkan ke pin 5V Arduino.

  3. 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.


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:

  1. const int potPin = A0;:

    • Mendefinisikan pin analog A0 sebagai input untuk potensiometer.

  2. int potValue = analogRead(potPin);:

    • Fungsi analogRead() membaca nilai tegangan dari pin analog potPin. 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).

  3. 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 hingga 1023 dari analogRead).

      • toLow, toHigh: Rentang nilai output yang diinginkan (0 hingga 180 derajat untuk servo).

    • Fungsi ini secara otomatis menghitung nilai servoAngle yang proporsional dengan potValue dalam rentang sudut servo.

  4. myServo.write(servoAngle);:

    • Menggerakkan servo ke sudut yang baru dihitung dari pembacaan potensiometer.

  5. 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:

  1. Hubungkan komponen sesuai skema pengkabelan di atas.

  2. Salin dan tempel kode di atas ke Arduino IDE Anda.

  3. Unggah program ke board Arduino Anda.

  4. 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 dan servoAngle secara real-time.

Dengan modifikasi ini, Anda mendapatkan kontrol yang jauh lebih intuitif atas posisi servo motor Anda.

Komentar