Bonjour Tout le monde.
Je suis debutant en arduino et j'ai à devoir realiser un moteur qui doit fonctionner de la façon suivante: Lorsqu'on appui sur un bouton, le moteur tourne dans un sens et lorsqu'on appui sur l'autre, ca tourne dans le sens inverse. Lorsqu'aucun bouton est pressé, rien ne se passe.
Il y'a deux boutons poussoirs chacune ayant deux broches. La premier est connecte sur D2 et sur le ground. Le second est connecte sur le D3 et le ground. J'utilise un motoshield qui est au dessus de l'Arduino. Je dispose d'une batte de 9v connecte sur le Vin et le ground. Le moteur est sur le M2 du motorshield. Je ne souhaite pas utiliser les résistances externes
Le dispositif fonctionne correctement pour le bouton D2 mais pas pour l'autre. Le moniteur série montre plutôt clairement que les boutons envoient les instructions souhaités. J'Ai tout éssayé mais rien. Pour le deuxième bouton, on vient que ca éssaye de partir mais on dirait que quelque chose bloque. Aidez moi s'il vous plait j'en peux plus tout seul
ci dessous le code
#include <AFMotor.h>
AF_DCMotor motor(2);
// Définition des broches pour les boutons
const int button1 = 3;
const int button2 = 2;
// Variables pour la gestion du rebond
bool etatButton1Precedent = HIGH;
bool etatButton2Precedent = HIGH;
unsigned long dernierTempsButton1 = 0;
unsigned long dernierTempsButton2 = 0;
const unsigned long debounceDelay = 50;
void setup() {
Serial.begin(9600);
Serial.println("Contrôle du moteur avec deux boutons");
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
Bonjour Tout le monde.
Je suis debutant en arduino et j'ai à devoir realiser un moteur qui doit fonctionner de la façon suivante: Lorsqu'on appui sur un bouton, le moteur tourne dans un sens et lorsqu'on appui sur l'autre, ca tourne dans le sens inverse. Lorsqu'aucun bouton est pressé, rien ne se passe.
Il y'a deux boutons poussoirs chacune ayant deux broches. La premier est connecte sur D2 et sur le ground. Le second est connecte sur le D3 et le ground. J'utilise un motoshield qui est au dessus de l'Arduino. Je dispose d'une batte de 9v connecte sur le Vin et le ground. Le moteur est sur le M2 du motorshield. Je ne souhaite pas utiliser les résistances externes
Le dispositif fonctionne correctement pour le bouton D2 mais pas pour l'autre. Le moniteur série montre plutôt clairement que les boutons envoient les instructions souhaités. J'Ai tout éssayé mais rien. Pour le deuxième bouton, on vient que ca éssaye de partir mais on dirait que quelque chose bloque. Aidez moi s'il vous plait j'en peux plus tout seul
ci dessous le code
#include <AFMotor.h>
AF_DCMotor motor(2);
// Définition des broches pour les boutons
const int button1 = 3;
const int button2 = 2;
// Variables pour la gestion du rebond
bool etatButton1Precedent = HIGH;
bool etatButton2Precedent = HIGH;
unsigned long dernierTempsButton1 = 0;
unsigned long dernierTempsButton2 = 0;
const unsigned long debounceDelay = 50;
void setup() {
Serial.begin(9600);
Serial.println("Contrôle du moteur avec deux boutons");
pinMode(button1, INPUT_PULLUP);
pinMode(button2, INPUT_PULLUP);
motor.setSpeed(200); // Vitesse initiale du moteur
motor.run(RELEASE);
}
void loop() {
bool etatButton1Actuel = digitalRead(button1);
bool etatButton2Actuel = digitalRead(button2);
if (etatButton1Actuel == LOW && etatButton1Precedent == HIGH && (millis() - dernierTempsButton1) > debounceDelay) {
dernierTempsButton1 = millis();
Serial.println("Bouton 1 (D3) pressé - Rotation dans le sens horaire");
motor.run(FORWARD);
motor.setSpeed(200);
}
else if (etatButton2Actuel == LOW && etatButton2Precedent == HIGH && (millis() - dernierTempsButton2) > debounceDelay) {
dernierTempsButton2 = millis();
Serial.println("Bouton 2 (D2) pressé - Rotation dans le sens antihoraire");
motor.run(BACKWARD);
motor.setSpeed(200);
}
else if (etatButton1Actuel == HIGH && etatButton2Actuel == HIGH) {
Serial.println("Aucun bouton pressé - Moteur arrêté");
motor.run(RELEASE); // Arrête le moteur
}
etatButton1Precedent = etatButton1Actuel;
etatButton2Precedent = etatButton2Actuel;
delay(100);
}
Donc il y a réaction.
Essaies de croiser les fils du moteur pour voir si le défaut change de bouton.
Essaies, également, de croiser les boutons pour voir si le défaut se déplace.
Fais aussi une photo en gros plan de ton montage.
En complément, regardes ce tuto et essaies le programme, le moteur doit changer de sens toutes les 2 secondes.
Peux tu nous en dire plus sur ta batterie 9V (piles, accu, quelle puissance ?)
Et sur le moteur? (moto réducteur ? quelle puissance, quelle tension d'alim...?)
Ces 2 paramétres, moteur/batterie, sont'ils compatibles?
Tu peux aussi à titre d'essai réduire la vitesse pour voir ce qu'il se passe, ce n'est que du soft.
motor.setSpeed(200);
Baisse 200 à 50 ou 100 pour voir si le moteur démarre.
Vos deux sujets sur le même sujet ou un sujet similaire ont été fusionnés.
Le cross-posting est contraire aux règles du forum Arduino, car les doublons peuvent faire perdre du temps aux personnes qui essaient d’aider. Quelqu’un pourrait passer beaucoup de temps à enquêter et rédiger une réponse détaillée sur un sujet, sans savoir que quelqu’un d’autre l’a déjà fait dans l’autre sujet.
Merci de créer un seul sujet pour votre question et de choisir soigneusement la catégorie du forum. Si vous avez plusieurs questions sur le même projet, posez-les dans un seul sujet, car les réponses à une question apportent un contexte utile pour les autres, et vous n’aurez pas à expliquer votre projet plusieurs fois.
La répétition de doublons pourrait entraîner une interdiction temporaire ou permanente du forum.
Merci de prendre quelques instants pour apprendre à utiliser le forum. Cela vous aidera à en tirer le meilleur parti à l’avenir.
Cela vient du fait que la pin utilisée pour l'autre, D3: const int button1 = 3;
est utilisée par le shield, c'est le signal PWM A, regardes le documentation
et choisi une autre pin pour ton bouton.
Je l'ai fait en utilisant D4 ca marche mais ca souleve un autre probleme.
Je dois maintenir le doigt appuyé sur D4 pour declencher l'action de D2 et des que je lache D4, tout s'arrete.
oui dans le serial monitor il n'ya aucun problemem. C'est au niveau du circuit reel.
En fait lorsque j'appuie sur D4 disons pour la rotation dans le sens horaire, tout se passe comme indique et lorsque je lache D4 tout s'arrete. Donc c'est okay pour D4.
Par contre, lorsque j'appuie sur D2, rien ne se passe. Il faut que j'appuie sur D4 et que je maintienne appuyé et appuyé ensuite sur D2 pour que le moteur tourne dans le sens antihoraire.
Ce que je veux c'est que , lorsque j'appuie sur D4 disons pour la rotation dans le sens horaire,