porte de poulailler

ok merci je vais lire ça !
j'ai modifié le programme en m'inspirant d'un tuto sur l'utilisation du motor shield :
ça donne ça maintenant :

/*

SI PORTE FERMEE & JOUR

    OUVERTURE

SINON SI PORTE OUVERTE & NUIT

    FERMETURE

*/
#define BRAKE 0
#define CW    1
#define CCW   2
#define CS_THRESHOLD 15  // Definition of safety current (Check: "1.3 Monster Shield Example").
short usSpeed = 150;  //default motor speed
unsigned short usMotor_Status = BRAKE;
#define PWM_MOTOR_1 5
#define MOTOR_1 0


// moteur
#define MOTOR_A1_PIN 7
#define MOTOR_B1_PIN 8

// contacts fin de course
#define contactFermee_PIN 9 // broche pour contact fin de course porte fermée
#define contactOuverte_PIN 10 // broche pour contact fin de course porte ouverte

int luminositePin = A0; // pin pour la photo résistance
int luminosite = 0; // variable de luminosite
int seuil = 100; // seuil de luminosité pour déclencher les actions de la porte
int fermee = 0;
int ouverte  = 0;
int jour;
int nuit;


void setup() {
  // put your setup code here, to run once:
  // définition des PINs
    pinMode(MOTOR_A1_PIN, OUTPUT);
    pinMode(MOTOR_B1_PIN, OUTPUT);
    pinMode(luminositePin, INPUT);
    pinMode(contactFermee_PIN, INPUT);
    pinMode(contactOuverte_PIN, INPUT);

}

void loop() {
  // put your main code here, to run repeatedly:

  luminosite = analogRead(luminositePin); // lecture de la valeur de la photo résistance


  // pour ouvrir la porte
  if (luminosite > seuil && digitalRead(contactFermee_PIN)==LOW)
  {
     jour = jour + 1;
     nuit = 0;
     delay(1000);
     if (jour > 15) 
     {
      jour = 0;
      ouverture();
     }
  }
  

  // pour fermer la porte
  if (luminosite < seuil && digitalRead(contactOuverte_PIN)==LOW)
  {
    nuit = nuit + 1;
    jour = 0;
    delay(1000);
    
    if (nuit > 15)
    {
      nuit = 0;
      fermeture();
    }
    
  }
  
}

void ouverture() {
  Reverse();
  while (digitalRead(contactOuverte_PIN)==LOW)
  {
    
  }
  Stop;
  
/* original
  while (digitalRead(contactOuverte_PIN)==LOW)
  {
    digitalWrite(MOTOR_A1_PIN, LOW); 
    digitalWrite(MOTOR_B1_PIN, HIGH);
  }

  digitalWrite(MOTOR_A1_PIN, LOW); 
  digitalWrite(MOTOR_B1_PIN, LOW);
  */
}

void fermeture() {
  Forward();
  while (digitalRead(contactFermee_PIN)==LOW)
  {
    
  }
  Stop;

  /* original :
    while (digitalRead(contactFermee_PIN)==LOW)
  {
    digitalWrite(MOTOR_A1_PIN, HIGH);
    digitalWrite(MOTOR_B1_PIN, LOW);
  }

  digitalWrite(MOTOR_A1_PIN, LOW); 
  digitalWrite(MOTOR_B1_PIN, LOW);
  */
}

void Forward()
{
  Serial.println("Forward");
  usMotor_Status = CW;
  motorGo(MOTOR_1, usMotor_Status, usSpeed);
}

void Reverse()
{
  Serial.println("Reverse");
  usMotor_Status = CCW;
  motorGo(MOTOR_1, usMotor_Status, usSpeed);
}

void Stop()
{
  Serial.println("Stop");
  usMotor_Status = BRAKE;
  motorGo(MOTOR_1, usMotor_Status, 0);
}



void motorGo(uint8_t motor, uint8_t direct, uint8_t pwm)         //Function that controls the variables: motor(0 ou 1), direction (cw ou ccw) e pwm (entra 0 e 255);
{
  if(motor == MOTOR_1)
  {
    if(direct == CW)
    {
      digitalWrite(MOTOR_A1_PIN, LOW); 
      digitalWrite(MOTOR_B1_PIN, HIGH);
    }
    else if(direct == CCW)
    {
      digitalWrite(MOTOR_A1_PIN, HIGH);
      digitalWrite(MOTOR_B1_PIN, LOW);      
    }
    else
    {
      digitalWrite(MOTOR_A1_PIN, LOW);
      digitalWrite(MOTOR_B1_PIN, LOW);            
    }
    
    analogWrite(PWM_MOTOR_1, pwm); 
  }

}

je vais aller voir cette histoire de poule'up :wink: