// Motor driver pins (connected to L298N / L293D)
#define IN1 25 // Motor A direction pin 1
#define IN2 26 // Motor A direction pin 2
#define ENA 32 // Motor A enable (PWM)
#define IN3 27 // Motor B direction pin 1
#define IN4 14 // Motor B direction pin 2
#define ENB 33 // Motor B enable (PWM)
#define SKIMMER_MOTOR 12 // Skimmer belt motor pin (ON/OFF)
// Motor speed (0–255)
int motorSpeed = 200;
void setup() {
// Direction control pins
pinMode(IN1, OUTPUT);
pinMode(IN2, OUTPUT);
pinMode(IN3, OUTPUT);
pinMode(IN4, OUTPUT);
// Speed control pins
pinMode(ENA, OUTPUT);
pinMode(ENB, OUTPUT);
// Skimmer motor
pinMode(SKIMMER_MOTOR, OUTPUT);
Serial.begin(115200);
Serial.println("Oil Skimmer Simulation Started!");
}
// ==========================
// Movement functions
// ==========================
void moveForward() {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENA, motorSpeed);
analogWrite(ENB, motorSpeed);
Serial.println("Moving Forward");
}
void moveLeft() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
digitalWrite(IN3, HIGH);
digitalWrite(IN4, LOW);
analogWrite(ENA, motorSpeed);
analogWrite(ENB, motorSpeed);
Serial.println("Turning Left");
}
void moveRight() {
digitalWrite(IN1, HIGH);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, HIGH);
analogWrite(ENA, motorSpeed);
analogWrite(ENB, motorSpeed);
Serial.println("Turning Right");
}
void stopMoving() {
digitalWrite(IN1, LOW);
digitalWrite(IN2, LOW);
digitalWrite(IN3, LOW);
digitalWrite(IN4, LOW);
analogWrite(ENA, 0);
analogWrite(ENB, 0);
Serial.println("Stopped");
}
// ==========================
// Skimmer control
// ==========================
void skimmerOn() {
digitalWrite(SKIMMER_MOTOR, HIGH);
Serial.println("Skimmer ON");
}
void skimmerOff() {
digitalWrite(SKIMMER_MOTOR, LOW);
Serial.println("Skimmer OFF");
}
// ==========================
// Demo loop (replace with RF input later)
// ==========================
void loop() {
moveForward();
delay(2000);
moveLeft();
delay(1500);
moveRight();
delay(1500);
stopMoving();
delay(1000);
skimmerOn();
delay(2000);
skimmerOff();
delay(2000);
}