  #include <Servo.h>
#define pin_onoff 2

int temp_rotation = 420;
int pin_capteur[] = {7, 8, 7};
int valeur_pwm[][3] = {{700, 1480, 2300}, {700, 1485, 2300}, {700, 1475, 2300}};
int pin_moteur[] = {9, 10}; //11 et pin pwm obligatoire
int nbmoteur = (sizeof(pin_moteur)) / 2;
int temp_distribution = 1000;
unsigned long temp;
int distro;
bool onoff = 1;
Servo monservo;

void setup()
{
  Serial.begin(9600);
  for (int i = 0; i < nbmoteur ; i++ )
  {
    pinMode(pin_capteur[i], INPUT);
    pinMode(pin_moteur[i], OUTPUT);
  }

  //définition boutons IHM
  pinMode(pin_onoff, INPUT_PULLUP);
  pinMode(13,OUTPUT);
  attachInterrupt(digitalPinToInterrupt(pin_onoff), etat, FALLING);
  temp = millis(); //enregistre le temps écouler
  Serial.print("Durer de l'initialisation :");
  Serial.println(temp);
  Serial.print("NBMOTEUR :");
  Serial.println(nbmoteur);
}

void loop()
{
  
  if (onoff == 1) {
    if ((temp + temp_distribution) <= millis())
    {
      distro = random(0, nbmoteur);
      /*while (digitalRead(pin_capteur[distro]) == 0)
        {
        distro = random(0, nbmoteur);
        }*/
      lancement_piece(distro);
      temp = millis();
    }
  }
}



//fonction gérant le sens de rotation du servo moteur
void lancement_piece(int numero_moteur)
{
  moteur(numero_moteur, valeur_pwm[numero_moteur][0]);
  unsigned long temp = millis();
  while ((temp + temp_rotation) >= millis()) {}
  /*moteur(numero_moteur, valeur_pwm[numero_moteur][2]);
  temp = millis();
  while ((temp + temp_rotation) >= millis()) {}*/
  monservo.detach();
  //moteur(numero_moteur, valeur_pwm[numero_moteur][1]);
}

//fonction gérant le sens de rotation du servo moteur
void moteur(int numero_moteur, int valPWM)
{
  Serial.print("N° moteur:");
  Serial.print(numero_moteur);
  Serial.print("    Valeur PWM:");
  Serial.print(valPWM);
  Serial.print("    N° Pin Moteur");
  Serial.println(pin_moteur[numero_moteur]);
  monservo.attach(pin_moteur[numero_moteur]);
  monservo.writeMicroseconds(valPWM);

}
void etat() {
  temp = millis();
  if (100 + temp >= millis()) {
    onoff = !onoff;
    digitalWrite(13,onoff);
    //Serial.print("Etat On/Off : ");
    //Serial.println(onoff);
  }
}
