Cwazy-Cookie Posté(e) Février 17, 2020 Posté(e) Février 17, 2020 (modifié) 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 ) 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) Février 17, 2020 par Cwazy-Cookie
Cwazy-Cookie Posté(e) Février 17, 2020 Auteur Posté(e) Février 17, 2020 (modifié) *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... Si je rajoute la boucle qui fonctionné avant ici, ça ne fonctionne pas... Modifié (le) Février 17, 2020 par Cwazy-Cookie
Invité Posté(e) Février 17, 2020 Posté(e) Février 17, 2020 (modifié) 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) Février 17, 2020 par Invité
Cwazy-Cookie Posté(e) Février 17, 2020 Auteur Posté(e) Février 17, 2020 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!
Invité Posté(e) Février 17, 2020 Posté(e) Février 17, 2020 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
flix09 Posté(e) Avril 12, 2023 Posté(e) Avril 12, 2023 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...
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant