Problème pour contrôler 2 moteurs DC avec des temps differents

Bonjour a tous,
Je cherche a faire tourner 2 moteurs DC chaqu'un avec des delay différent, je me suis baser sur le code blink.

J'ai besoin de faire tourner le moteur a droite pour x temps, de le stopper pour y temps et de la faire tourner a droite pour z temps, par la suite de pouvoir changer ces temps par l'utilisateur.

Ce que j'ai fais, j'ai copié le même code 4 fois, pour faire ça.
J'aimerais votre aide pour programmer mon code correctement

Voici mes fonction

void Moteur1()
{
unsigned long dateCourante = millis();
unsigned long intervalle = dateCourante - dateDernierChangement13;
if (state == HIGH && intervalle > 3000) {
state = LOW;
Serial.println("Right");
turn_Right_motor(Motor_Glace_Right, Motor_Glace_Left);
dateDernierChangement13 = dateCourante;
}
else if (state == LOW && intervalle > 3000) {
state = 2;
state1 = HIGH;
Serial.println("Stop");
turn_of_motor(Motor_Glace_Right, Motor_Glace_Left);
dateDernierChangement13 = dateCourante;
}
else if (state1 == HIGH && intervalle > 3000) {
state1 = LOW;
Serial.println("Left");
turn_Left_motor(Motor_Glace_Right, Motor_Glace_Left);
dateDernierChangement13 = dateCourante;
}
else if (state1 == LOW && intervalle > 3000) {
state = HIGH;
Serial.println("Stop");
turn_of_motor(Motor_Glace_Right, Motor_Glace_Left);
dateDernierChangement13 = dateCourante;
}
}

les fonction pour ouvrir fermer et stopper

void turn_of_motor(int MotorR, int MotorL)
{
digitalWrite(MotorR,LOW);
digitalWrite(MotorL,LOW);
}

void turn_Right_motor(int MotorR, int MotorL)
{
digitalWrite(MotorR,LOW);
digitalWrite(MotorL,HIGH); 
}
void turn_Left_motor(int MotorR, int MotorL)
{
digitalWrite(MotorR,HIGH);
digitalWrite(MotorL,LOW);
}

Merci de votre aide