int motor1Pin1 = 3;
int motor1Pin2 = 4;
int enable1Pin = 6;
int motor2Pin1 = 8;
int motor2Pin2 = 9;
int enable2Pin = 11;
int state;
int flag = 0; // memastikan bahwa serial hanya dicetak setelah status
int stateStop = 0;
void setup() {
// set pin sebagai output:
pinMode(motor1Pin1, OUTPUT);
pinMode(motor1Pin2, OUTPUT);
pinMode(enable1Pin, OUTPUT);
pinMode(motor2Pin1, OUTPUT);
pinMode(motor2Pin2, OUTPUT);
pinMode(enable2Pin, OUTPUT);
// set enable1Pin dan enable2Pin tinggi sehingga motor dapat hidup:
digitalWrite(enable1Pin, HIGH);
digitalWrite(enable2Pin, HIGH);
// inisialisasi komunikasi serial pada 9600 bit per detik:
Serial.begin(9600);
}
void loop() {
// jika ada tanggal yang dikirim, baca dan simpan dalam status
if (Serial.available() > 0) {
state = Serial.read();
flag = 0;
}
// jika keadaan 'F' motor DC akan maju
if (state == 'F') {
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
if (flag == 0) {
Serial.println("Go Forward!");
flag = 1;
}
}
// jika keadaan 'R' motor akan belok kiri
else if (state == 'R') {
digitalWrite(motor1Pin1, HIGH);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, LOW);
if (flag == 0) {
Serial.println("Turn LEFT");
flag = 1;
}
delay(1500);
state = 3;
stateStop = 1;
}
// jika keadaan 'S' motor akan Berhenti
else if (state == 'S' || stateStop == 1) {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, LOW);
if (flag == 0) {
Serial.println("STOP!");
flag = 1;
}
stateStop = 0;
}
// jika keadaan 'L' motor akan belok kanan
else if (state == 'L') {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, LOW);
digitalWrite(motor2Pin1, LOW);
digitalWrite(motor2Pin2, HIGH);
if (flag == 0) {
Serial.println("Turn RIGHT");
flag = 1;
}
delay(1500);
state = 3;
stateStop = 1;
}
// jika keadaan 'B' motor akan Terbalik
else if (state == 'B') {
digitalWrite(motor1Pin1, LOW);
digitalWrite(motor1Pin2, HIGH);
digitalWrite(motor2Pin1, HIGH);
digitalWrite(motor2Pin2, LOW);
if (flag == 0) {
Serial.println("Reverse!");
flag = 1;
}
}
// Untuk tujuan debugging
//Serial.println(state);
}