Faire monter un chariot et descendre,le deplacer à gauche à droite avec atmega368 grace à deux moteur à courantcontinu

bonjour.je travaille sur un projet arduino.je dois faire deplacer un chariot de gauche à droite,le faire monter et descendre grace à deux moteur à courant continu et 4 boutons poussoir gauche,droit,haut et bas?jai besoin d'aide pour le code svp.un moteur assure le deplacement gauche droite et lautre assure monter descendre.en mode manuelle et automatique.voici ce que jai essayé mails les deux moteurs tournes seulement et aucun controles des boutons poussoir.voici le code:
int commande_gauche=12; //
int commande_droite=08; //
int commande_haut=06; // Bouton Haut
int commande_bas=05; // Bouton Bas
int Moteur1_sens1 = 12; //
int Moteur1_sens2 = 13; //
int Moteur2_sens1 = 14; //
int Moteur2_sens2 = 22; //
boolean etat_bp_g,etat_bp_d; //
boolean mem_g,mem_d; //
boolean etat_bp_h,etat_bp_b; //
boolean mem_h,mem_b; //
void setup()
{
pinMode(commande_gauche, INPUT_PULLUP); //
pinMode(commande_droite, INPUT_PULLUP); //
pinMode(commande_haut, INPUT_PULLUP); //
pinMode(commande_bas, INPUT_PULLUP); //
pinMode(Moteur1_sens1, OUTPUT); //
pinMode(Moteur1_sens2, OUTPUT); //
pinMode(Moteur1_sens1, OUTPUT); //
pinMode(Moteur1_sens2, OUTPUT); //
Serial.begin(9600); //
pinMode(commande_haut, INPUT_PULLUP); //
pinMode(commande_bas, INPUT_PULLUP); //
pinMode(Moteur2_sens1, OUTPUT); //
pinMode(Moteur2_sens2, OUTPUT); //
Serial.begin(9600); //
}
void loop()
{
etat_bp_g=!digitalRead(commande_gauche); //
etat_bp_d=!digitalRead(commande_droite); //
if(etat_bp_g!=mem_g)//
{
if(etat_bp_g && !etat_bp_d) //
{
Moteur1_sens1; //
}else{
Arret1(); //
}
}
mem_g=etat_bp_g; //
if(etat_bp_d!=mem_d) //
{
if(etat_bp_d && !etat_bp_g) //
{
Moteur1_sens2; //
}else{
Arret1(); //
}
}
mem_d=etat_bp_d; // Mémorisation du nouvel état du bouton droit
delay(100); // Attendre 100ms
};
void Rotation_Sens_1() {
digitalWrite(Moteur1_sens1, HIGH); //
digitalWrite(Moteur1_sens2, LOW); //
Serial.println("Moteur1 marche avant");
}
void Arret1()
{
digitalWrite(Moteur1_sens1, LOW); //
digitalWrite(Moteur1_sens2, LOW); // Désactivation de la broche A- du L293D
Serial.println("Moteur arrêt");
}
void Rotation_Sens_2()
{
digitalWrite(Moteur1_sens2, HIGH); //
digitalWrite(Moteur1_sens1, LOW); //
Serial.println("Moteur1 marche arrière");
etat_bp_h=!digitalRead(commande_gauche); //
etat_bp_b=!digitalRead(commande_droite); //
if(etat_bp_h!=mem_h)//
{
if(etat_bp_h && !etat_bp_b) // Appui sur BP Gauche mais pas sur le droit
{
Rotation_Sens2_1(); // Lancer la fonction sens normal
}else{
Arret2(); // Lancer la fonction arrêt du moteur
}
}
mem_h=etat_bp_h; // Mémorisation du nouvel état du bouton gauche
if(etat_bp_b!=mem_b) // Changement d'état du bouton poussoir droit (front montant ou descendant)
{
if(etat_bp_b && !etat_bp_b) // Appui sur BP Droit mais pas sur le gauche
{
Rotation_Sens2_2(); // Lancer la fonction sens inverse
}else{
Arret2(); // Lancer la fonction arrêt du moteur
}
}
mem_b=etat_bp_b; // Mémorisation du nouvel état du bouton droit
delay(100); // Attendre 100ms
};
void Rotation_Sens2_1() {
digitalWrite(Moteur2_sens1, HIGH); // Activation de la broche A+ du L293D
digitalWrite(Moteur2_sens2, LOW); // Désactivation de la broche A- du L293D
Serial.println("Moteur marche avant");
}
void Arret2()
{
digitalWrite(Moteur2_sens1, LOW); // Désactivation de la broche A+ du L293D
digitalWrite(Moteur2_sens2, LOW); // Désactivation de la broche A- du L293D
Serial.println("Moteur2 arrêt");
}
void Rotation_Sens2_2()
{
digitalWrite(Moteur2_sens2, HIGH); // Activation de la broche A+ du L293D
digitalWrite(Moteur2_sens1, LOW); // Désactivation de la broche A- du L293D
Serial.println("Moteur2 marche arrière");
}

bonjour,
Merci de lire les règles du forum et corriger votre demande.
règles du forum
:fr: :warning: QUELQUES RÈGLES SIMPLES À LIRE IMPÉRATIVEMENT AVANT DE POSTER :warning:

Elles faciliteront la vie de tous et contribueront à rendre votre expérience la plus enrichissante possible.

Bonjour,
Tu dois éditer ton post précédent sélectionner le code et cliquer sur la balise code ou Ctrl+E.
Il faudrait aussi le mettre en forme avec Ctrl+T dans l'IDE.

  if (etat_bp_g != mem_g) //
  {
    if (etat_bp_g && !etat_bp_d) //
    {
      Moteur1_sens1; // ???? pas bon :crazy_face:

Bonjour phiton

A cause de cette ligne,

tu ne dois pas pouvoir compiler ton programme, tu dois avoir l'erreur

sketch_....: error: invalid digit "8" in octal constant

 int commande_droite = 08; //

En effet, les chiffres qui débutent par 0 sont considérés comme en base 8, octal.

Tu as une entrée et une sortie sur la même pin

int commande_gauche = 12; //
int Moteur1_sens1 = 12; //

Quel Arduino as-tu (atmega368)? pour avoir les pin

int Moteur2_sens1 = 14; //
int Moteur2_sens2 = 22; //

Cordialement
jpbbricole

avant toute exploration supplémentaire, ce serait bien que @phiton mette en forme proprement son premier message...