// int LED_A =12;
// int LED_B =27;
// int LED_C =14;
// int PB_A =2;
// int PB_B =4;
// void setup() {
// pinMode(LED_A, OUTPUT);
// pinMode(LED_B, OUTPUT);
// pinMode(LED_C, OUTPUT);
// pinMode(PB_A, INPUT);
// pinMode(PB_B, INPUT);
// Serial.begin(115200);
// // Serial.println("Hello, ESP32!");
// }
// void loop() {
// digitalWrite(LED_A, HIGH);
// delay(100);
// digitalWrite(LED_A, LOW);
// digitalWrite(LED_B, HIGH);
// delay(100);
// digitalWrite(LED_B, LOW);
// digitalWrite(LED_C, HIGH);
// delay(100);
// digitalWrite(LED_C, LOW);
// // // put your main code here, to run repeatedly:
// // delay(10); // this speeds up the simulation
// }
// int LED_A =12;
// int LED_B =27;
// int LED_C =14;
// int PB_A =2;
// int PB_B =4;
// void setup() {
// pinMode(LED_A, OUTPUT);
// pinMode(LED_B, OUTPUT);
// pinMode(LED_C, OUTPUT);
// pinMode(PB_A, INPUT);
// pinMode(PB_B, INPUT);
// Serial.begin(115200);
// // Serial.println("Hello, ESP32!");
// }
// void loop() {
// digitalWrite(LED_A, HIGH);
// delay(100);
// digitalWrite(LED_A, LOW);
// digitalWrite(LED_B, HIGH);
// delay(100);
// digitalWrite(LED_B, LOW);
// digitalWrite(LED_C, HIGH);
// delay(100);
// digitalWrite(LED_C, LOW);
// // // put your main code here, to run repeatedly:
// // delay(10); // this speeds up the simulation
// }
// Pin Motor Driver
const int RPWM = 26;
const int LPWM = 27;
const int R_EN = 25;
const int L_EN = 33;
const int relayPins[8] = {2, 4, 5, 18, 19, 21, 22, 23};
int LED_A =12;
int LED_B =28;
int LED_C =14;
int PB_A =2;
int PB_B =4;
// #include <Wire.h>
// #include <Adafruit_GFX.h>
// #include <Adafruit_SSD1306.h>
// Mendefinisikan ukuran layar OLED (dalam pixel)
#define SCREEN_WIDTH 128
#define SCREEN_HEIGHT 64
// Mendefinisikan pin reset layar OLED (tidak digunakan di sini)
// #define OLED_RESET -1
// Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET);
void setup() {
// Mengatur pin relay sebagai output
for (int i = 0; i < 8; i++) {
pinMode(relayPins[i], OUTPUT);
digitalWrite(relayPins[i], LOW); // Pastikan relay dimatikan saat awal
// Mengatur pin sebagai output
pinMode(RPWM, OUTPUT);
pinMode(LPWM, OUTPUT);
pinMode(R_EN, OUTPUT);
pinMode(L_EN, OUTPUT);
// Aktifkan driver
digitalWrite(R_EN, HIGH);
digitalWrite(L_EN, HIGH);
// Inisialisasi Serial Monitor
Serial.begin(9600);
pinMode(LED_A, OUTPUT);
pinMode(LED_B, OUTPUT);
pinMode(LED_C, OUTPUT);
pinMode(PB_A, INPUT);
pinMode(PB_B, INPUT);
// Serial.begin(115200);
// // Serial.println("Hello, ESP32!");
// // Menginisialisasi komunikasi dengan layar OLED
// if(!display.begin(SSD1306_SWITCHCAPVCC, 0x3C)) {
// Serial.println(F("SSD1306 allocation failed")); for(;;);}
// Serial.println(F("SSD1306 allocation failed")); for(;;);
// //membersihkan display
// display.clearDisplay();
// // Menampilkan pesan "ANJAY" di layar OLED
// display.setTextSize(2); // Ukuran teks
// display.setTextColor(SSD1306_WHITE); // Warna teks
// display.setCursor(0,10); // Posisi awal teks
// display.println(F("ANJAY"));
// display.display(); // Menampilkan di layar
// delay(1000); // Menunda selama 1 detik
// }
}
void loop() { // Menjalankan motor ke arah maju
Serial.println("Motor Maju");
analogWrite(RPWM, 255); // Kecepatan maksimum
analogWrite(LPWM, 0);
delay(2000);
// Menghentikan motor
Serial.println("Motor Berhenti");
analogWrite(RPWM, 0);
analogWrite(LPWM, 0);
delay(1000);
// Menjalankan motor ke arah mundur
Serial.println("Motor Mundur");
analogWrite(RPWM, 0);
analogWrite(LPWM, 255); // Kecepatan maksimum
delay(2000);
// Menghentikan motor lagi
Serial.println("Motor Berhenti");
analogWrite(RPWM, 0);
analogWrite(LPWM, 0);
delay(1000);
digitalWrite(LED_A, HIGH);
delay(100);
digitalWrite(LED_A, LOW);
digitalWrite(LED_B, HIGH);
delay(100);
digitalWrite(LED_B, LOW);
digitalWrite(LED_C, HIGH);
delay(100);
digitalWrite(LED_C, LOW);
for (int i = 0; i < 8; i++) {
// Menyalakan relay
Serial.print("Menyalakan relay ");
Serial.println(i + 1);
digitalWrite(relayPins[i], HIGH);
delay(1000); // Durasi relay menyala
// Mematikan relay
Serial.print("Mematikan relay ");
Serial.println(i + 1);
digitalWrite(relayPins[i], LOW);
delay(500); // Durasi relay mati sebelum melanjutkan ke relay berikutnya
// // Menampilkan pesan "LED OFF" di layar OLED
// display.clearDisplay();
// display.setCursor(0,10);
// display.display();
// delay(1000);
// // Menampilkan pesan "ANJAY" di layar OLED
// display.clearDisplay
// display.setCursor(0,10);
// display.println(F("LED ON"));
// display.displadelay(1000);y();}
// Menjalankan motor ke arah maju
Serial.println("Motor Maju");
analogWrite(RPWM, 255); // Kecepatan maksimum
analogWrite(LPWM, 0);
delay(2000);
// Menghentikan motor
Serial.println("Motor Berhenti");
analogWrite(RPWM, 0);
analogWrite(LPWM, 0);
delay(1000);
// Menjalankan motor ke arah mundur
Serial.println("Motor Mundur");
analogWrite(RPWM, 0);
analogWrite(LPWM, 255); // Kecepatan maksimum
delay(2000);
// Menghentikan motor lagi
Serial.println("Motor Berhenti");
analogWrite(RPWM, 0);
analogWrite(LPWM, 0);
delay(1000);
digitalWrite(LED_A, HIGH);
delay(100);
digitalWrite(LED_A, LOW);
digitalWrite(LED_B, HIGH);
delay(100);
digitalWrite(LED_B, LOW);
digitalWrite(LED_C, HIGH);
delay(100);
digitalWrite(LED_C, LOW);
for (int i = 0; i < 8; i++) {
// Menyalakan relay
Serial.print("Menyalakan relay ");
Serial.println(i + 1);
digitalWrite(relayPins[i], HIGH);
delay(1000); // Durasi relay menyala
// Mematikan relay
Serial.print("Mematikan relay ");
Serial.println(i + 1);
digitalWrite(relayPins[i], LOW);
delay(500); // Durasi relay mati sebelum melanjutkan ke relay berikutnya
// // Menampilkan pesan "LED OFF" di layar OLED
// display.clearDisplay();
// display.setCursor(0,10);
// display.display();
// delay(1000);
// // Menampilkan pesan "ANJAY" di layar OLED
// display.clearDisplay
// display.setCursor(0,10);
// display.println(F("LED ON"));
// display.displadelay(1000);y();
}