Uji Coba projek PID dgn Arduino Uno, driver motor L298, dan Dinamo. Ada beberapa masalah, karena ketika di program Dinamo tidak bergerak, ketika di jumper langsung dari 5V ke ENA/ENB masih nyala.
Di bawah ini adalah gambar wiring:
Kode :
// Definisi pin untuk motor A
const int enA = 9; // Pin Enable A (PWM)
const int in1 = 2; // Pin Input 1 untuk Motor A
const int in2 = 3; // Pin Input 2 untuk Motor A
// Definisi pin untuk motor B
const int enB = 10; // Pin Enable B (PWM)
const int in3 = 4; // Pin Input 3 untuk Motor B
const int in4 = 5; // Pin Input 4 untuk Motor B
// Fungsi untuk menggerakkan motor A
void motorA(int direction, int speed) {
digitalWrite(in1, direction == 1 ? HIGH : LOW); // Maju jika direction 1, Mundur jika 0
digitalWrite(in2, direction == 0 ? HIGH : LOW); // Mundur jika direction 0, Maju jika 1
analogWrite(enA, speed); // Atur kecepatan (0-255)
}
// Fungsi untuk menggerakkan motor B
void motorB(int direction, int speed) {
digitalWrite(in3, direction == 1 ? HIGH : LOW); // Maju jika direction 1, Mundur jika 0
digitalWrite(in4, direction == 0 ? HIGH : LOW); // Mundur jika direction 0, Maju jika 1
analogWrite(enB, speed); // Atur kecepatan (0-255)
}
void setup() {
// Atur pin sebagai output
pinMode(enA, OUTPUT);
pinMode(in1, OUTPUT);
pinMode(in2, OUTPUT);
pinMode(enB, OUTPUT);
pinMode(in3, OUTPUT);
pinMode(in4, OUTPUT);
// Matikan kedua motor pada awal
digitalWrite(in1, LOW);
digitalWrite(in2, LOW);
digitalWrite(in3, LOW);
digitalWrite(in4, LOW);
analogWrite(enA, 0);
analogWrite(enB, 0);
Serial.begin(9600); // Inisialisasi komunikasi serial untuk debugging
Serial.println("Program Kontrol Motor DC dengan L298N Dimulai");
}
void loop() {
// Contoh gerakan motor A
Serial.println("Motor A Maju, Kecepatan 100");
motorA(1, 100); // Arah 1: Maju, Kecepatan: 100 (dari 0-255)
delay(2000);
Serial.println("Motor A Mundur, Kecepatan 150");
motorA(0, 150); // Arah 0: Mundur, Kecepatan: 150
delay(2000);
Serial.println("Motor A Berhenti");
motorA(1, 0); // Kecepatan 0 untuk berhenti
delay(1000);
// Contoh gerakan motor B
Serial.println("Motor B Maju, Kecepatan 120");
motorB(1, 120); // Arah 1: Maju, Kecepatan: 120
delay(2000);
Serial.println("Motor B Mundur, Kecepatan 80");
motorB(0, 80); // Arah 0: Mundur, Kecepatan: 80
delay(2000);
Serial.println("Motor B Berhenti");
motorB(1, 0); // Kecepatan 0 untuk berhenti
delay(1000);
// Contoh gerakan kedua motor secara bersamaan
Serial.println("Kedua Motor Maju, Kecepatan 180");
motorA(1, 180);
motorB(1, 180);
delay(3000);
Serial.println("Kedua Motor Berhenti");
motorA(1, 0);
motorB(1, 0);
delay(1000);
Serial.println("-------------------------");
delay(2000); // Jeda sebentar sebelum mengulang
}

Komentar
Posting Komentar