Commande de porte avec 2 boutons poussoir sur arduino nano

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 
         } 
      }
 }
1 Like

:warning: 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”

➜ usage des balises de code SVP

legrandjulio

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
image
Qu'entends tu par "a de la peine à fonctionner"?

A+
Cordialement
jpbbricole

il ne fonctionne pas

Bonjour legrandjulio

Ah, c'est plus claire :wink:

A+
Cordialement
jpbbricole

oui . ça ne fonctionne pas.

merci. c'est fait

1 Like

Bonjour,

Tu ne précises pas la carte que tu utilises. Si c'est une nano, A7 est uniquement une pin analogique.
digitalRead(A7) ne fonctionne pas.

Vite vu comme cela:

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
...

oui c'est un arduino nano.
vous voulez dire que les Pin Analogique ne peuvent pas etre utilisé comme entrée de bouton poussoir?

Juste les 2 dernières (A6 et A7)

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

daccord merci

= réalise une affectation
pour faire une comparaison c'est == qu'il faut employer !
Il faut lire le code attentivement !

daccord je modifie

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.