Langsung ke konten utama

Uji coba projek PID

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