Bonjour,
j'ai réalisé une porte poulailler à guillotine, avec 2 fin de courses haut et bas, et le moteur est une foreuse sans fils.
Au niveau mécanique ça fonctionne très bien.
Pour la programmation c'est un Arduino uno.
détection nuit/ jour par une cellule photo-résistance.
le problème est que j'ai voulus ajouter une temporisation à la fermeture (qui fonctionne bien)
mais il y a un problème à l'ouverture: on dirait que il ne tient pas compte de la temporisation.
Pour le moment j'utilise une horloge pour retarder l'ouverture....
et j'ai mis des // dans mon programme, je pense que j'ai un problème de compréhention des if et else, ou des lignes de conditions en général
Voici le progamme
const char ledbleu = 2; // variable broche 2 (vraie), Une LED bleu pour détection crépuscule, s'il fait sombre
const char fermeture = 7; // variable pour broche 7 (vraie), pour fermer porte
const char capteur = 0; // broche A0 sur laquelle va être connecté le pont diviseur de tension
float tension = 0; // variable qui va enregistrer la tension lue en sortie du capteur
float seuilObscurite = 4.2; // valeur en V, seuil qui détermine le niveau auquel l'obscurité est présente
int x=0;
void setup()
{
// définition des broches utilisées
pinMode(ledbleu, OUTPUT);
pinMode(fermeture, OUTPUT);
digitalWrite(ledbleu, HIGH);
digitalWrite(fermeture, HIGH);
Serial.begin(9600); // la voie série pour monitorer
}
void loop()
{
// conversion de cette valeur en tension
tension = (analogRead(capteur) * 5.0) / 1024;
if(tension >= seuilObscurite) //Pour FERMETURE
{
x=x+1;
if (x==1)digitalWrite(ledbleu, LOW); // detection seuil obscurité On allume la LED bleu
if (x==1)delay(240000); // délai pour ne fermer porte que aprés 4 minutes ( 240 000)
x=2;
digitalWrite(fermeture, LOW); // On ferme la porte apres x secondes
digitalWrite(ledbleu, HIGH); // On éteint la LED bleu
}
if(tension < seuilObscurite) //Pour OUVERTURE
{
x=3;
//Serial.print(" x= ");
//if (x==3)delay(240000);//délai pour ouvrir la porte que aprés 4 minutes
if (x==3)digitalWrite(fermeture, HIGH); // on ouvre la porte
x=0;
}
// délai pour ne prendre des mesures que toutes les 60-secondes (60 000)
delay(60000);
//Serial.print(" x= ");
Serial.println(x);
}