L293d par de marche arriere

Bonjour a tous!

Voila, je viens chercher de l’aide car je programme actuellement un robot a l’aide d’un node mcu et d’un shield L293D via l’application BLYNK.
Le problème c’est que le programme fonctionne parfaitement sauf pour la marche arrière

else if(x==0 && y==-1)

Voici le programme complet

#define BLYNK_PRINT Serial 
#include  <ESP8266WiFi.h>
#include  <BlynkSimpleEsp8266.h>


char auth[] = "...";

char ssid[] = "...";

char pass[] = "...";


int MA=5;//Right side 
int MB=4;//Left side 
int SarriereA=0;// marche arriére
int SarriereB=2;//marche arriere


void setup(){ 

   Serial.begin(9600); 
   Blynk.begin(auth, ssid, pass); 
   pinMode(MA, OUTPUT); 
   pinMode(MB, OUTPUT); 
   pinMode(SarriereA, OUTPUT); 
   pinMode(SarriereB, OUTPUT); 
} 

void loop(){ 

  Blynk.run(); 

} 

 BLYNK_WRITE(V1){ 
  int x = param[0].asInt(); 
  int y = param[1].asInt();

  

//---------------avant-----------------------
if(x==0 && y==1){        //droite
     digitalWrite(MA, HIGH); 
     digitalWrite(SarriereA, LOW); 
    
     digitalWrite(MB, HIGH); 
     digitalWrite(SarriereB, LOW); 

//---------------avant droit-----------------------
}else if(x==1 && y==1){            
     digitalWrite(MA, LOW); 
     digitalWrite(SarriereA, LOW); 
     
     digitalWrite(MB, HIGH); 
     digitalWrite(SarriereB, LOW);

//---------------droite-----------------------
}else if(x==1 && y==0){            
     digitalWrite(MA, HIGH); 
     digitalWrite(SarriereA, LOW); 
     
     digitalWrite(MB, HIGH); 
     digitalWrite(SarriereB, HIGH);
     
//---------------Arret-----------------------
}else if(x==0 && y==0){       
     digitalWrite(MA, LOW); 
     digitalWrite(SarriereA, LOW); 
     
     digitalWrite(MB, LOW); 
     digitalWrite(SarriereB, LOW);

//---------------arriere-----------------------
}else if(x==0 && y==-1){       
     digitalWrite(MA, HIGH); 
     digitalWrite(SarriereA, HIGH); 
    
     digitalWrite(MB, HIGH); 
     digitalWrite(SarriereB, HIGH); }}

Lorsque que je commande le joystick en (x==0 && y==1), la led du node mcu s’éteint, et rien ne se passe. J’ai contrôlé au multimètre et il m’envoie 8v sur chaque phase des moteurs au lieux de 8v et 0v.

J’ai également shunté la commande de blynk avec se programme

int MA=5;//Right side 
int MB=4;//Left side 
int SarriereA=0;// marche arriére
int SarriereB=2;//marche arriere

void setup() {
  
   Serial.begin(9600); 
   pinMode(MA, OUTPUT); 
   pinMode(MB, OUTPUT); 
   pinMode(SarriereA, OUTPUT); 
   pinMode(SarriereB, OUTPUT); 
} 

void loop() {
     digitalWrite(MA, HIGH); 
     digitalWrite(SarriereA, HIGH); 
    
     digitalWrite(MB, HIGH); 
     digitalWrite(SarriereB, HIGH);

}

Le problème et le même
Quelqu’un a t-il déjà eu le problème?
Merci d’avance

problème nodemcu.png

Ce serait bien d'avoir un lien vers le shield en question parce que l'appellation des signaux que tu utilises ne correspond à rien sur un L293D.
Et quelques infos sur l'interconnexion réalisée.

J’ai alimenté les moteurs ainsi que l’arduino via 2 accus 18650 en 8,4V. J’ai testé également 8,4v sur les moteurs et j’ai branché l’arduino en USB mais le résultat et le même Je passe par l’application Blynk pour la commande avec un jostick

C’est un shield esp12e

Je joins la documentation des pins du shield et un screenshot de la configuration du joystick dans Blynk

Personne n'a de petites idées? :slightly_frowning_face:

On ne connait pas nécessairement le matériel que tu utilises.
La seule chose bizarre c’est que d’après le doc que tu donnes le moteur se pilote avec D1, D2, D3, D4

Sur le NodeMCU, les pins du module sont numérotées différemment de celle du chip ESP8266.

Ainsi, D1, D2, D3 et D4 sont en fait les GPIO5, 4, 0 & 2

J'ai parcouru le code et je n'ai rien vu de bizarre. À ta place, je modifierais le code simplifié en testant toutes les combinaisons HIGH / LOW pour les 4 pins jusqu'à voir les roues tourner en marche arrière...

Bonjour,
J'ai essayé d'inverser, de jouer avec les états mais celà ne fonctionne toujours pas.
Lorsque je passe MA MB en LOW et je laisse les SarriereA et B en HIGH, rien ne se passe, j'ai 0v sur mes 4 sorties.
Je pense que je vais me tourner vers un L298n
Merci pour votre aide

As-tu vérifié la continuité entre les pins du NodeMCU (D3 & D4) et les broches correspondantes du shield ? Ça peut venir d'un problème électrique sur le shield.

Peut-être que tu ne te connectes pas sur les bonnes pins du shield...

Le node MCU est dans le bon sens?
Parce que sur l’illustration au-dessus et sur celle du site donné en lien au #2 la sérigraphie du node MCU et celle du shield ne correspondent pas (retourné).

Bonjour,
oui il est dans le bon sens!
Pour la conductivité, elle est bonne, j'ai un deuxième nodemcu qui lui est la version 3, et le problème était identique.
Je ne vois pas du tout d'où celà peut venir, je penche pour le programme.
J'ai quand même commandé un autre shield au cas ou