bonjour. j'aimerai commande une porte disposant d'une fin de course magnétique ( entrée A7 ) à l'aide de 2 bouton poussoir (entrées A0 et A5) ; un pour ouverture et l'autre pour fermeture.
les sorties sont pin 2 et pin 6.
j'ai fais ce programme . mais qui a de la peine a fonctionner.
void setup()
{
pinMode(A0, INPUT); // bouton poussoir ouverture
pinMode(A5, INPUT); // bouton poussoir fermeture
pinMode(A7, INPUT); // capteur magnetique de fin de course ouverture et fermeture
pinMode(6, OUTPUT); // Ouverture
pinMode(2, OUTPUT); // Fermeture
}
int bouton_ouerture = 0;
int bouton_fermeture = 0;
int fin_de_course;
void loop()
{
bouton_ouerture = digitalRead(A5); // lecture et stockage de l'état du boutton d'ouverture
bouton_fermeture = digitalRead(A0); // lecture et stockage de l'état du bouton de fermeture
fin_de_course = digitalRead(A7); //lecture et stockage de l'état du capteur magnetuque fin de course
if ((bouton_ouerture = HIGH) && (bouton_fermeture = LOW)) // si l'etat bouton ouverture est Haut et fermeture bas
{
digitalWrite(6, HIGH); // moteur ouverture
{
if (fin_de_course = HIGH) // si fin de course ouverture atteint
{
digitalWrite(6, LOW); // arrêt moteur ouverture
}
}
}
else
if ((bouton_fermeture = HIGH) && (bouton_ouerture = LOW)) // si l'etat bouton fermeture est Haut et ouverture bas
{
digitalWrite(2, HIGH); //moteur fermeture
if (fin_de_course = HIGH) // si fin de course fermeture atteint
{
digitalWrite(2, LOW); // arrêt moteur fermeture
}
}
}
La rédaction de votre message ne répond pas aux critères attendus. Il n'aura sans doute pas de réponse tant que vous n'aurez pas pris en compte et mis en application les recommandations listées dans "Les bonnes pratiques du Forum Francophone”
Première chose, mets ton programme entre les balises idoines, pour ce faire, réédites ton post, sélectionnes le code et clique sur l'icône
Qu'entends tu par "a de la peine à fonctionner"?
Quand tu appuie sur un bouton tu tournes jusqu'à arriver en fin de course. Mai après un mouvement tu es en fin de course (du mauvais côté, mai avec un sel capteur, il n'y a pas de différence.
Solution, il faut mémoriser la position finale ( haut ou bas, par exemple avec un booléen) et si on appuie sur haut et qu'on est bas:
soit tourner jusqu'à ce que le fin de course donne le bon front
soit tourner jusqu'à ce que le fin de course ne soit plus actif, puis tourner jusqu'à ce qu'il le soit de nouveau
Sans mémorisation il y a problème si on est en bas et qu'on demande de decsendre.
Note: ça ne fonctionne pas n'est pas assez précis pour que l'on puisse bien t'aider, cela comprend:
~ le montage fumé
~ le moteur tourne toujours dans le même sens
~ le moteur vibre mais ne tourne pas
~ quand il est en haut, il veut monter et quand il est en bas il veut descendre
~ il y a tellement peu de couple qu'il veut bien descendre mais pas monter
...
merci. le fin de course est ici un capteur a inductance 12v . il est fixé près du moteur et non aux extrémités droites et gauche du portail. Sur la crémaillère du portail, il y a deux bloque métalliques fixés aux extrémités ... Donc ce sont ces bloques métalliques que le capteur détecte lors de l'ouverture et la fermeture.
Donc en gros nous disposons d'un seul capteur (inductif) faisant office de fin de course. et détectant deux bloques métalliques montés sur les extrémités du portail