Bon revenons au sujet du post, j'avais trouvé un code qui utilisait une commande d'un pont H par joystick analogique filaire pour piloter 2 moteurs DC;
Voici le code avec les commentaires (en rouge) pour le modifier et obtenir une commande par une radio RC :
#define motorPin1a 1 // Marche avant du premier moteur #define motorPin1b 2 // Marche arrière du premier moteur #define speedPin1 3 // L293D enable pin pour le premier moteur #define motorPin2a 4 // Marche avant du deuxième moteur #define motorPin2b 7 // Marche arrière du deuxième moteur #define speedPin2 5 // L293D enable pin pour le deuxième moteur #define JoyStickPin1 1 // #define JoyStickPin1 11 #define JoyStickPin2 2 // #define JoyStickPin2 12 int Mspeed= 0; int Mspeed1 = 0; int Mspeed2 = 0; unsigned long time; void setup() { // réglage des broches à output pinMode(motorPin1a, OUTPUT); pinMode(motorPin1b, OUTPUT); pinMode(speedPin1, OUTPUT); pinMode(motorPin2a, OUTPUT); pinMode(motorPin2b, OUTPUT); pinMode(speedPin2, OUTPUT); } void loop() { Mspeed1 = (analogRead(JoyStickPin1)-511)/2; // Mspeed1 = (pulseIn(11,HIGH,25000)-1432)/2; 1432 est la valeur du neutre Mspeed1 = Mspeed1 - (analogRead(JoyStickPin2)-511)/2; // Mspeed1 = Mspeed1 - (pulseIn(12,HIGH,25000)-1432)/2; if (Mspeed1 > 255) { Mspeed1 = 255; } if (Mspeed1 < -255) { Mspeed1 = -255; } Mspeed2 = (analogRead(JoyStickPin1)-511)/2; // Mspeed2 = (pulseIn(11,HIGH,25000)-1432)/2; Mspeed2 = Mspeed2 + (analogRead(JoyStickPin2)-511)/2; Mspeed2 = Mspeed2 + (pulseIn(12,HIGH,25000)-1432)/2; if (Mspeed2 > 255) { Mspeed2 = 255; } if (Mspeed2 < -255) { Mspeed2 = -255; } if (Mspeed1 > 0) // donc marche arrière { analogWrite(speedPin1, abs(Mspeed1)); digitalWrite(motorPin1a, LOW); digitalWrite(motorPin1b, HIGH); } else { // donc marche avant (ou repos) analogWrite(speedPin1, abs(Mspeed1)); digitalWrite(motorPin1a, HIGH); digitalWrite(motorPin1b, LOW); } if (Mspeed2 > 0) // donc marche arrière { analogWrite(speedPin2, abs(Mspeed2)); digitalWrite(motorPin2a, LOW); digitalWrite(motorPin2b, HIGH); } else // donc marche avant (ou repos) { analogWrite(speedPin2, abs(Mspeed2)); digitalWrite(motorPin2a, HIGH); digitalWrite(motorPin2b, LOW); } }
voilà !!