Bonjour à tous,
Je débute en Arduino,
J'ai créé un code pour contrôler 2 moteur à distance avec une télécommande IR
Un bouton pullup pour le marche et arrêt avec une LED verte comme témoin
bouton 2 de la télécommande IR pour faire tourner les moteur dans le sens des aiguilles avec une LED bleue comme témoin
bouton 8 de la télécommande IR pour faire tourner les moteur dans le sens inverse avec une LED orange comme témoin
le bouton marche/arrêt fonctionne, ensuite plus rien, est ce que vous pouvez m'aider SVP
voici le code
#include <IRremote.h>
int ledPin = 5;
int buttonPin = 9;
int ledState = LOW; // État de la LED (LOW au départ)
int buttonState = HIGH; // État du bouton (HIGH au départ)
int lastButtonState = HIGH; // État précédent du bouton (HIGH au départ)
unsigned long lastDebounceTime = 0; // Temps du dernier changement d'état du bouton
unsigned long debounceDelay = 50; // Délai anti-rebond (50 millisecondes)
int motorPin1 = 3; // Broche pour le moteur 1
int motorPin2 = 4; // Broche pour le moteur 2
int ledBluePin = 6; // Broche pour la LED bleue
int ledOrangePin = 7; // Broche pour la LED orange
int receiverPin = 2; // Broche de réception infrarouge
IRrecv irrecv(receiverPin); // Créer un objet IRrecv pour la réception infrarouge
decode_results results;
void setup()
{
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT_PULLUP);
pinMode(motorPin1, OUTPUT);
pinMode(motorPin2, OUTPUT);
pinMode(ledBluePin, OUTPUT);
pinMode(ledOrangePin, OUTPUT);
// Activer la réception infrarouge
irrecv.enableIRIn();
}
void loop()
{
int reading = digitalRead(buttonPin);
// Gestion du bouton pour allumer/éteindre la LED verte
if (reading != lastButtonState) {
lastDebounceTime = millis();
}
if ((millis() - lastDebounceTime) > debounceDelay) {
if (reading != buttonState) {
buttonState = reading;
if (buttonState == LOW) {
ledState = !ledState;
digitalWrite(ledPin, ledState);
}
}
}
lastButtonState = reading;
// Gestion de la télécommande infrarouge si la LED verte est allumée
if (ledState == HIGH) {
if (irrecv.decode()) {
switch (results.value) {
case 0xFF18E7: // Code de la commande 2 (avancer)
digitalWrite(motorPin1, HIGH);
digitalWrite(motorPin2, HIGH);
digitalWrite(ledBluePin, HIGH); // Allumer la LED bleue
digitalWrite(ledOrangePin, LOW); // Éteindre la LED orange
break;
case 0xFF4AB5: // Code de la commande 8 (reculer)
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(ledBluePin, LOW); // Éteindre la LED bleue
digitalWrite(ledOrangePin, HIGH); // Allumer la LED orange
break;
// Ajoutez d'autres cas pour les commandes de votre télécommande ici
default:
// Rien à faire pour d'autres commandes
break;
}
irrecv.resume(); // Réception suivante
}
} else {
// Si la LED verte est éteinte, assurez-vous que les moteurs sont arrêtés
digitalWrite(motorPin1, LOW);
digitalWrite(motorPin2, LOW);
digitalWrite(ledBluePin, LOW);
digitalWrite(ledOrangePin, LOW);
}
}
Voici le schéma de câblage