Aller au contenu

GO Print

[Aide débutant] Piloter pont en H


Cwazy-Cookie

Messages recommandés

Hello,

 

Bon, c’est sympa l’impression de gadget/deco en 3D mais ce n’est pas ça qui va s’occuper de mon petit jardinet. Du coup, je suis parti à la découverte du monde merveilleux qu’est l’arduino.

J’ai pu rapidement crée des petits montages et découvrir les joies du code sur Thinkercad et l’option circuit. Cependant, je bloque depuis jeudi sur un souci que je ne comprends pas du tout…

Pour crée une fonction, aucun souci. Mais dès qu’il s’agit d’en placé plusieurs à la suite, ça part en cacahuète.

 

Objectif : Faire avancé un chariot jusqu’à la fin de course A, repartir jusqu’à la fin de course B et recommencé.

Petit photo du code  (oui j’utilise les bloc comme un petit n’enfant )

835205606_Capturedu2020-02-1712-08-55.thumb.png.58694fc09df169bebe5c23cddd1e5bd3.png

Lorsque je lance la simulation, le moteur démarre, se coupe une fois la fin de course A détecter et repart dans l’autre sens. Ensuite plus rien ne réponds et la rotation du moteur reste bloqué dans le sens inverse. Peu importe ce que je place après le bloc ''définir la broche 5 sur élevé''. C'est comme si le programme n'avancé plus et rester bloqué sur cette fonction...

 

Si quelqu'un pourrait m'expliqué le pourquoi du comment, ça me serait d'une grande aide. Car là, je sèche vraiment... et ça commence à me courir sur le n'haricot.

 

Merci d'avance. 🙂

 

 

 

 

Modifié (le) par Cwazy-Cookie
Lien vers le commentaire
Partager sur d’autres sites

*Quelques cheveux arraché plus tard*

Petit test avec ce code

 

Si j'appuie un coup sur Ba, le moteur s'inverse, et lorsque j'appuie sur Bb, il repart sans le sens inverse. PARFAIT! But.... impossible de faire quoi que ce soit avant sans que ça prennent le dessus sur ça...

1644232264_Capturedu2020-02-1714-08-37.thumb.png.ec01224198079c44a5c52f489926a7e4.png

 

Si je rajoute la boucle qui fonctionné avant ici, ça ne fonctionne pas...

703583850_Capturedu2020-02-1714-29-01.thumb.png.894be0d21f15c6c80b2da1ac9e56d1e3.png

 

project coding GIF

Modifié (le) par Cwazy-Cookie
Lien vers le commentaire
Partager sur d’autres sites

Salut

La programmation arduino est formée sur le principe d'une boucle et ton script ne sait pas dans quelle phase du mouvement tu es.

Dans ton cas il te faut une boucle au sein de la boucle, pour définir si tu es en mode avance ou en mode recul, et ainsi tester le capteur de fin de course qui correspond.
 

void loop() {

  if (etat==0){

    if (Ba != HIGH ) {
      // instruction pour faire avanceer dans un sens
    } else {
      // arret moteur
   etat = 1 ;
    }
    
  }
  if (etat==1){

    if (Bb != HIGH ) {
      // instruction pour faire avancer dans l'autre sens
    } else {
      // arret moteur
   etat = 0 ;
    }
  }
}

avec un truc comme ça, tu devrais pouvoir arriver à ce que tu souhaites

A+  Fred

Modifié (le) par Invité
Lien vers le commentaire
Partager sur d’autres sites

Mille merci @Vectoriz. J'avais fait un test de modification d'état vendredi, mais il avait foiré. Et là, ça fonctionne! :youpi:

int Ba = 0;

int Bb = 0;

int Etat = 0;

void setup()
{
  pinMode(6, INPUT);
  pinMode(7, INPUT);
  pinMode(3, OUTPUT);
  pinMode(2, OUTPUT);
  pinMode(5, OUTPUT);
}

void loop()
{
  Ba = digitalRead(6);
  Bb = digitalRead(7);
  if (Ba == HIGH) {
    Etat = 1;
  }
  if (Bb == HIGH) {
    Etat = 0;
  }
  if (Etat == 1) {
    digitalWrite(3, LOW);
    delay(1000); // Wait for 1000 millisecond(s)
    digitalWrite(2, HIGH);
    digitalWrite(5, HIGH);
  }
  if (Etat == 0) {
    digitalWrite(5, LOW);
    delay(1000); // Wait for 1000 millisecond(s)
    digitalWrite(2, HIGH);
    digitalWrite(3, HIGH);
  }
}

Me reste plus qu'a essayé tout ça dans le monde réel et modéliser mon prototype pour l'impression. 😄

Encore merci, car j'étais à deux doigt de mettre tout ça dans un tiroir pour plus tard!

Lien vers le commentaire
Partager sur d’autres sites

C'est le problème de la programmation, des fois il est possible de tourner en rond pendant des heures voir des jours, alors que la solution est toute simple.

Si tu as besoin d'autre chose, je me ferai un plaisir de t'apporter mon aide, si mes connaissances me le permettent bien entendu 😉

A+ Fred

Lien vers le commentaire
Partager sur d’autres sites

  • 3 years later...
Le 17/02/2020 at 16:11, Cwazy-Cookie a dit :
int Ba = 0;

int Bb = 0;

Des const int serait plus pratique,ils prennent moins de place dans le code.

En fait,"int" défini une variable,dans ton cas "etat" et const int une constante,une valeur qui ne va pas etre amene a changé.

voila voila...

 

 

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
  • Sur cette page :   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
  • YouTube / Les Imprimantes 3D .fr

×
×
  • Créer...