porte poulailler

Bonjour ,
Voila pas mal de temps que je planche sur ce projet (ouverture le matin au levé du soleil fermeture le soir )
Je sais que plusieurs topic se sont ouvert a ce sujet mais rien ne ma aider, je débute dans la programmation et j'avoue que je galère
je souhaité crée quelque chose de simple pour débuter
Mais actuellement je suis bloqué avec les fin de courses, il ne me coupe pas les mouvement,
si ils sont enclencher il me les empêche, mais ne me les coupe pas

projetfinal3.ino (723 Bytes)

tu as quelque chose pour les détections fin de courses? bouton? capteur? aimant?

pourquoi 2 moteurs? pourquoi ne pas utiliser un seul moteur, pour ouvrir et fermer?

pourquoi pour faire simple, utiliser le temps pour fermer/ ouvrir la porte

ouvrir/fermer pendant 30 secondes

Tu veux faire le matin et soir... OK mais comment détecter le soir et matin?

deja, fait une liste de ce que tu veux faire.

  • Ouvrir/ fermer => comment? avec un moteur

-detecter l'heure du soir et du matin => horloge RTC ? capteur de lumiere?

etant donner que les poules rentre le soir avant le couché du soleil, l'heure change,

Chez moi la semaine dernière allaient se coucher vers les 21H30, et cette semaine elle rentrent a 21H50.
Donc comment faire pour détecter de changement d'heure?

Donc avant tout programme, faire un petit cahier des charges et faire un organigramme, qui va t'aider a programmer ensuite.

Merci de me répondre et aussi vite qui plus est
oui contact standard je les symbolise par des bp pour mes essais
non il n'y a qu'un moteur j'ai appelé mes relais comme sa pour que je mis retrouve plus facilement
J'ai pris une photorésistance car je suis pour l'instant partie sur le plus facile

hello, +1 avec l'établissement du cahier des charges

dans un premier temps, teste ça

//si le passage du seuil de 500 n'est pas franc, prévoir une fourchette
void loop ()
{
int lum = analogRead(cpt);
int etatFdch = digitalRead(fdch);
int etatFdcb = digitalRead(fdcb);

if (lum < 490) //si le capteur de lumière passe au dessous de seuil de 490
{
if (etatFdch == HIGH) //si le fdch n'est pas atteint
{
digitalWrite(mh, HIGH); digitalWrite(mb, LOW);//alors moteur de montée actionné
}
else //sinon ( si le fdch est atteint )
{
digitalWrite(mh, LOW); digitalWrite(mb, LOW); //alors moteur de montée stoppé
}
}

if (lum > 510) //si le capteur de lumière passe au dessus de seuil de 510
{
if (etatFdcb == HIGH) //si le fdcb n'est pas atteint
{
digitalWrite(mh, LOW); digitalWrite(mb, HIGH); //alors moteur de descente actionné
}
else //sinon ( si le fdcb est atteint )
{
digitalWrite(mh, LOW); digitalWrite(mb, LOW); //alors moteur de descente stoppé
}
}
}

J'ai recement réaliser une trappe de poulailler en recupérant un mécanisme de porte de garage.
J'ai utilisé un vieux transfo 12v auquel j'ai ajouté un redresseur de tension pour passer de l'alternatif au continu accepté par mon moteur.
il y a un contacteur fin course haut et bas. Le changement de sens du moteur est géré par un module L298n.

voici mon code qui pourrait t'aider

//************************************************//
//  GESTION D'UNE TRAPPE DE POULAILLER EN FONCTION DE LA LUMIERE
//  zimmermann frédéric
//  18 01 2015
//************************************************

unsigned long tempsdebutouv  = 0;
unsigned long tempsdebutferme = 0 ;


int PinLumiere=0;        //Broche Analogique de mesure d'éclairement
int PinSeuilLumiere=3;   //Broche Numérique mesure d'éclairement
int tension=0;     //Mesure de tension (valeur élevée si sombre)
int eclaire =0;    //0 ou 1 (0=éclairé>seuil, 1=ombre<seuil)
int ENB = 11; //  Reglage vitesse moteur
int IN3 = 8; // pont en H moteur A
int IN4 = 9; // pont en H moteur A
int fin_coursebas = 2; // bouton pin 2
int fin_coursehaut = 4; // bouton pin 2
int ledbas = 6;
int ledhaut= 5;
int etatcapteurbas= HIGH;  // etat du capteur bas
int etatcapteurhaut = LOW; // etat du capteur haut
int bouton = 12;
int iphone = 13;
int etatiphone = 0;
int etatbouton = 0;
int buzzer = 7;
int etatmoteur = 0;  // 0 = moteurarret , 1 = moteur fermeture, 2= moteur ouverture

boolean trappe_ferme ;
boolean trappe_ouverte;
boolean trappe_milieu_course;



void setup() { 
    
    Serial.begin(9600);  //Connection série à 9600 baud
    pinMode(PinLumiere,INPUT);       //pin A0 en entrée analogique
    pinMode(PinSeuilLumiere,INPUT);  //pin 3 en entrée numérique
    pinMode(ENB,OUTPUT);
    pinMode(IN3,OUTPUT);
    pinMode(IN4,OUTPUT);
    pinMode(fin_coursebas,INPUT);
    pinMode(fin_coursehaut,INPUT);  
    pinMode(ledbas, OUTPUT);
    pinMode(ledhaut, OUTPUT);
    pinMode(bouton, INPUT);
    pinMode(buzzer,OUTPUT);
    pinMode(iphone, INPUT);
}

void loop() { //boucle principale

    etatbouton = digitalRead(bouton);
    etatiphone = digitalRead(iphone);
    etatcapteurbas = digitalRead(fin_coursebas);
    etatcapteurhaut = digitalRead(fin_coursehaut);
   tension = analogRead(PinLumiere); // Lit la tension analogique
    eclaire = digitalRead(PinSeuilLumiere); 
    Serial.begin(9600);  //Connection série à 9600 baud
    Serial.println(etatiphone); 
    
    Serial.println( tension);
    
    
    
 delay (400);
   //---------------------------------------------------//  VERIF DE L'ETAT DE LA TRAPE
   // verif si trappe fermé 
   
   if (etatcapteurbas == LOW && etatcapteurhaut == HIGH)
         { trappe_ferme = true;
           
           digitalWrite(ledbas, HIGH);
           
          }  // la trappe est fermé
             else { digitalWrite(ledbas, LOW);
                    trappe_ferme = false;}
     
         
   // Vérif si trappe ouverte  
    
    if (etatcapteurhaut == LOW && etatcapteurbas == HIGH)
         {trappe_ouverte = true;
          
          
           digitalWrite(ledhaut, HIGH); 
           
          }  // la trappe est ouverte                        
      
              else { digitalWrite(ledhaut, LOW);
                     trappe_ouverte = false; }
     
          
     // si la trappe se trouve à mi-course
        
    if (etatcapteurhaut == HIGH  && etatcapteurbas == HIGH)
         {trappe_milieu_course = true;
                    
              digitalWrite (buzzer, HIGH);  // buzzer en route
                   delay (300);
              digitalWrite (buzzer, LOW);
                   delay (300);                  }
   

    
    //____________________________________________________//   ACTIONNEMENT DU MOTEUR DANS LES 2 SENS
       
       // si il fait nuit et la trappe est ouverte 
       
         if (analogRead(PinLumiere) > 1015  &&  trappe_ouverte == true)
       
         {   
             moteurfermeture();  // on ferme
             etatmoteur = 1;  // le moteur est actionné en fermeture
                          }
            
         
        // si il fait jour et trappe fermé
        
        if (analogRead(PinLumiere) < 610  &&  trappe_ferme == true)
         { 
           moteurouverture(); // on ouvre
           etatmoteur = 2;
            
                                             }
     
         
        
     //_______________________________________________________//   ARRET DU MOTEUR
       // si moteur fermeture en route et si trappe fermé
          
           if (  etatmoteur == 1 && trappe_ferme == true)
             { moteurarret();
                  etatmoteur = 0;
                     } 
       
       // si moteur ouverture en route et si trappe ouverte
          
           if (  etatmoteur == 2 && trappe_ouverte == true )
               
                { moteurarret();
                etatmoteur = 0;
                  }
                  
               // gestion bloquage moteur 
     
          
           // __________________________________________________________GESTION DU BOUTON    
        // bouton appuyé et trappe ouvert
     
        if ( etatbouton == 1 && trappe_ouverte == true)
            {moteurfermeture();
             etatmoteur = 1 ;
              etatbouton = !etatbouton ;
}

         // bouton appuyé et trappe fermé
     
        if ( etatbouton == 1 && trappe_ferme == true)
            {moteurouverture();
             etatmoteur = 2 ;
              etatbouton = !etatbouton ;
              
            }
        
        // trappe mi-course et bouton appuyé
        
        if (trappe_milieu_course == true) 
           { while( etatbouton == HIGH)
              {moteurouverture();
             etatmoteur=2 ;
              etatbouton = !etatbouton ;
        
      }}
// __________________________________________________________GESTION DE L'IPHONE    
        // iphone appuyé et trappe ouvert
        if ( etatiphone == 1 && trappe_ouverte == true)
            {moteurfermeture();
             etatmoteur = 1 ;
              etatiphone = !etatiphone ;
}

         // iphone appuyé et trappe fermé
     
        if ( etatiphone == 1 && trappe_ferme == true)
            {moteurouverture();
             etatmoteur = 2 ;
              etatiphone = !etatiphone ;
              
            }
        
        // trappe mi-course et iphone appuyé
        
        if (trappe_milieu_course == true) 
           { while( etatiphone == HIGH)
              {moteurouverture();
             etatmoteur=2 ;
              etatiphone = !etatiphone ;
        
      }}
      
      //____________________________________________________ GESTION PROBLEME MOTEUR 
    
    // blocage pendant la fermeture
    
     if ((etatmoteur == 1) && (trappe_milieu_course == true) && (( millis()-tempsdebutferme)>= 20000))
     { moteurarret();
        etatmoteur = 4;}
        
         // blocage pendant l'ouverture
    
     if ((etatmoteur == 2) && (trappe_milieu_course == true) && (( millis()-tempsdebutouv)>= 28000))
     { moteurarret();
        etatmoteur = 4;}
        
} 
       
       
       
void moteurouverture(){
    
    tempsdebutouv = millis();
     digitalWrite(ENB, HIGH);
     digitalWrite(IN3, LOW);
     digitalWrite(IN4, HIGH);   
     }
       
       
void moteurfermeture() 
      
       { tempsdebutferme = millis();
     
     digitalWrite(ENB, HIGH);
     digitalWrite(IN3, HIGH);
     digitalWrite(IN4, LOW);
     }


void moteurarret()
     {digitalWrite(ENB, LOW);
              }
     
/code]

dans mon cas, c'est une cellule phitoresistive qui gère l'ouverture et la fermeture : si il fait pratiquement totalement nuit, on ferme. Si il fait complètement jour, on ouvre. Entre les , on ne fait rien . Je peux également contrôler la trappe grâce a un bouton et à distance avec mon iPhone .
J'ai également installé une caméra ip pour vérifier la présence de toutes les poules et éventuellement fermer ou ouvrir .

Merci beaucoup pour vos réponses elle m'on beaucoup servie

Merci dfgh je suis partie de ton projet et j'ai reussi