#include <Servo.h>
const byte motorPin1 = 7;
const byte motorPin2 = 8;
Servo servoMotor;
Servo servoMotor2;
const float minPosMotor = 90.0;
const float maxPosMotor = 100.0;
const float minPosMotor2 = 90.0;
const float maxPosMotor2 = 150.0;
const unsigned long forwardTime = 400000; // 400 ms in microseconds
const unsigned long cycleTime = forwardTime * 2; // forward + backward
float mapf(float x, float in_min, float in_max, float out_min, float out_max) {
return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}
void setup() {
servoMotor.attach(motorPin1);
servoMotor2.attach(motorPin2);
}
void loop() {
unsigned long t = micros() % cycleTime;
float fraction = t < forwardTime
? mapf(t, 0, forwardTime, 0.0, 1.0)
: mapf(t, forwardTime, cycleTime, 1.0, 0.0);
float posMotor = mapf(fraction, 0.0, 1.0, minPosMotor, maxPosMotor);
float posMotor2 = mapf(fraction, 0.0, 1.0, minPosMotor2, maxPosMotor2);
servoMotor.write(posMotor);
servoMotor2.write(posMotor2);
}