Bonjour à tous,
j'aurais besoin de votre aide pour améliorer un code mais je ne sais pas quoi et comment faire.
Le principe :
J'ai une trappe qui est fixé par une corde à un moteur avec une poulie, et il y à 2 capteur de fin de course, 1 en haut et 1 en bas. J'ai également un capteur de luminosité et si il fait jour la trappe s'ouvre jusque au capteur haut et quand il fait nuit elle ce ferme jusqu'en bas.
Le problème :
Il arrive que lors de la descente de la trappe elle ce bloque ce qui ne fait pas contact sur le fin de course bas et provoque un enroulement de la corde dans l'autre sens, ce qui a pour effet de remonter la trappe et ma poulie en impression 3d casse.
Les solutions proposées :
1- Soit il faut mettre un timer et quand les temps est dépasser il arrête le moteur pour empêcher la casse.
2- Soit il faut que quand la trappe remonte le capteur du haut arrête la trappe même s'il fait nuit.
3- Soit vous avez d'autre idée je suis preneur.
Le code :
const int in1 = 2; // moteur tourne dans le sens des aiguilles
const int in2 = 3; // moteur tourne dans le sens inverse des aiguilles
const int fdch = 5; // Fin de course Haut
const int fdcb = 6; // Fin de course Bas
const int soleil = 7; // Capteur de luminosité
void setup()
{
pinMode(in1, OUTPUT); // Tension de sortie pour moteur sens 1
pinMode(in2, OUTPUT); // Tension de sortie pour moteur sens 2
pinMode(fdch, INPUT); // Tension d'entrée pour fin de course Haut
pinMode(fdcb, INPUT); // Tension d'entrée pour fin de course Bas
pinMode(soleil, INPUT); // Tension d'entrée pour capteur de luminosité
}
void loop()
{
int capteurh = digitalRead(fdch); // Lecture de la valeur du fin de course haut et intégrer à capteurh
int capteurb = digitalRead(fdcb); // Lecture de la valeur du fin de course bas et intégrer à capteurb
int luminosite = digitalRead(soleil); // Lecture de la valeur du capteur de luminosité et intégrer à luminosite
if(capteurh==LOW && luminosite==HIGH) //Si capteurh = 0 et luminosité = 1 alors
{
digitalWrite(in1, HIGH); // La tension de sortie de in1 = 1
digitalWrite(in2, LOW); // La tension de sortie de in2 = 0
}
else if (luminosite==LOW && capteurb==LOW) //Sinon Si capteurb = 0 et luminosité = 0 alors
{
digitalWrite(in1, LOW); // La tension de sortie de in1 = 0
digitalWrite(in2, HIGH); // La tension de sortie de in2 = 1
}
else //Sinon
{
digitalWrite(in1, LOW); // La tension de sortie de in1 = 0
digitalWrite(in2, LOW); // La tension de sortie de in2 = 0
}
}
image :