Stacker pour feuille

Oui exact dbrion :sweat_smile:

J'ai profité de la pause déj pour essayer d'appliquer les conseils de fdufnews.

Voici le code retapé, je peux malheureusement pas le téléverser tout de suite, la compilation se fait correctement, voilà si des yeux avertis veulent bien me dire si ça a une chance de tourner ou si je suis à l'ouest...

#include <Stepper.h>
#include <Servo.h>

// On introduit le temps comme évènement supplémentaire
unsigned long chrono; // attention, type unsigned long comme millis()
const unsigned long TimeOut = 1000ul; // 1 seconde (le ul à la fin pour unsigned long)

const int stepsPerRevolution = 200;

Servo myservo_1;           // création de l'objet myservo 1 
Servo myservo_2;           // création de l'objet myservo 2 

Stepper myStepper(stepsPerRevolution, 8, 9, 10, 11);

int pinCapteurObstacle;    // Pin sur lequel est branché le capteur d'obstacle
int pin_servo_1 = 4;       // Pin sur lequel est branché le servo 1
int pin_servo_2 = 5;       // Pin sur lequel est branché le servo 2
int position = 90;         // Position souhaitée
int pinCapteurFdC_1 = 6;   // Pin de lecture du contact de fin de course 1
int pinCapteurFdC_2 = 7;   // Pin de lecture du contact de fin de course 2

void setup() {

  Serial.begin(9600);
  pinCapteurObstacle=3;              // Pin sur lequel est branché le capteur d'obstacle
  pinMode(pinCapteurObstacle,INPUT);
  
  myservo_1.attach(pin_servo_1);    // attache le servo 1 au pin spécifié sur l'objet myservo
  myservo_1.write(position);        // Place le servo 1 moteur dans la position initiale(45)

  myservo_2.attach(pin_servo_2);   // attache le servo 2 au pin spécifié sur l'objet myservo
  myservo_2.write(position);       // Place le servo 2 moteur dans la position initiale(45)

  myStepper.setSpeed(60);          // Fixe la vitesse du moteur à 60 rpm

  pinMode (pinCapteurFdC_1, INPUT); // indique que le capteur de fin de course est une donnée entrante sur le pin 4
  pinMode (pinCapteurFdC_2, INPUT); // indique que le capteur de fin de course est une donnée entrante sur le pin 5
}

void loop() { 

  if (millis() - chrono >= TimeOut) {
    timeOut();
    chrono = millis(); // on ré-arme notre chronomètre
  }

}

void timeOut() {

  boolean etatCapteurObstacle=digitalRead(pinCapteurObstacle);
  Serial.println(etatCapteurObstacle);
  
  if (etatCapteurObstacle) convoyage();   //si le capteur d'obstacle est égal à 1 appelle la fonction convoyage
}

void convoyage() {

    // Fait bouger le servo 1 de 90° à 180°
    for (int position = 90; position <= 180; position++) {
      myservo_1.write(position);
      delay(15);
    }
  
       // Fait bouger le servo 2 de 90° à 0°
    for (int position = 90; position <= 0; position++) {
      myservo_2.write(position);
      delay(15);
    }
  

    // boolean etatCapteurFdC=digitalRead(pinCapteurFdC);
    
    // Boucle tant que le capteur de fin de course n'est pas touché
    while(digitalRead(pinCapteurFdC_1)!= 1){ 
      myStepper.step(-stepsPerRevolution);  // Déclenche le moteur pas à pas jusqu'à ce qu'il touche le capteur

      }

    // Fait bouger le servo 1 de 180° à 135°
    for (int position = 180; position >= 135; position--) {
      myservo_1.write(position);
      delay(15);
    }

    // Fait bouger le servo 2 de 0° à 180°
    for (int position = 0; position >= 180; position--) {
      myservo_2.write(position);
      delay(15);
    }
      delay(2000); // Patiente le temps que la feuille tombe

    // Fait bouger le servo 1 de 135° à 180°
    for (int position = 135; position >= 180; position--) {
      myservo_1.write(position);
      delay(15);
    }

    // Fait bouger le servo 2 de 180° à 0°
    for (int position = 180; position >= 0; position--) {
      myservo_2.write(position);
      delay(15);
    }
      
    // Boucle tant que le capteur de fin de course n'est pas touché
    while(digitalRead(pinCapteurFdC_2)!= 1){ 
      myStepper.step(stepsPerRevolution);  // Fait le chemin inverse jusqu'à ce qu'il touche le capteur fdc 2
    }
}

Je trouve pas ça pertinent de déclarer 'etatCapteurObstacle' dans la fonction 'Void timeOut()', dois je le déplacer, où et comment ?

Merci