#define RPWM 6
#define LPWM 5
#define R_EN 7
#define L_EN 8

// CALCULATION FORMULA
// TARGET_PWM = (Target_RPM / Max_RPM_of_Motor) * 255
// e.g. for a 600 RPM motor running at 400 RPM: (400 / 600) * 255 = 170
const int TARGET_PWM = 170; 

void setup() {
  pinMode(RPWM, OUTPUT);
  pinMode(LPWM, OUTPUT);
  pinMode(R_EN, OUTPUT);
  pinMode(L_EN, OUTPUT);

  // Enable the motor driver channels
  digitalWrite(R_EN, HIGH);
  digitalWrite(L_EN, HIGH);
}

void loop() {
  // 1. Spin Right at 400 RPM
  analogWrite(RPWM, TARGET_PWM);
  analogWrite(LPWM, 0);
  delay(4000); // Run for 4 seconds

  // 2. safety pause
  analogWrite(RPWM, 0);
  analogWrite(LPWM, 0);
  delay(200); // 0.2 second pause

  // 3. Spin Left at 400 RPM
  analogWrite(RPWM, 0);
  analogWrite(LPWM, TARGET_PWM);
  delay(4000); // Run for 4 seconds

  // 4. pause before the loop restarts :)
  analogWrite(RPWM, 0);
  analogWrite(LPWM, 0);
  delay(200); // 0.2 second pause
}
