ESP32 commande servo + moteur DC

Bonjour a tous..
un coup de pouce ou un oeil neuf.
je tente de développer une commande avec un ESP32 .. 2 servomoteurs et la .. 1 moteur DC

..
mon code se compil bien ainsi que le téléversement..
mais sur mon code avec la page web sur android, il n'y a que la commande moteur qui fonctionne.
les 2 codes séparément fonctionnent .. je pense qu'il y a un problème sur la "gestion page" ou la commandeservo la commande n'est pas envoyé ou pas reçu ..
si une bonne âme pouvait donner une ligne; une idée
en remerciant par avance
mais je n'ai pas le droit en tant que nouveaux d'envoyer de fichiers ..
donc on verra plus tards
Merci

Post déplacé dans la racine du forum francophone. Le sous-forum "Réalisation et projets finis" comme son nom l'indique est réservé aux projets finis.

Mais tu dois pouvoir coller ton code dans un message en utilisant les balises code

Merci de prendre quelques minutes pour lire les bonnes pratiques du forum francophone et les appliquer.

j'apprends aussi les "règles de ce forum" .. merci de l'information et désolé pour le dérangement

bien a vous
cordialement
Tanguy

hello
.. je commence à comprendre le fonctionnement de ce forum et de ces balises ..
donc si l'un ou l'autre d'entre vous avez la curiosité de regarder le code pour me donner une piste de recherche .. grand merci

saisissez ou collez du code ici

// inclusion des bibliothèques utiles
#if defined ARDUINO_ARCH_ESP8266  // s'il s'agit d'un ESP8266
#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
#elif defined ARDUINO_ARCH_ESP32  // s'il s'agit d'un ESP32
#include "WiFi.h"
#include <WebServer.h>
#endif

#include <Servo.h>  // s'il s'agit d'un ESP32, il faut installer une version spéciale
                    // de la bibliothèque servo: 
                    // https://github.com/RoboticsBrno/ESP32-Arduino-Servo-Library

// modifiez ces deux constantes pour qu'elles contiennent les caractéristiques de
// votre réseau Wifi
#define ssid      "***"       // le nom (SSID) de votre réseau WiFi
#define password  "*****"  // votre mot de passe WiFi

// le servomoteur est contrôlé par les GPIO 4 de l'ESP8266
#define pinServo 4
#define pinServo1 2
//#define pinMoteur1  12
//#define pinMoteur2  14

#if defined ARDUINO_ARCH_ESP8266  // s'il s'agit d'un ESP8266
ESP8266WebServer server(80);
#elif defined ARDUINO_ARCH_ESP32  // s'il s'agit d'un ESP32
WebServer server(80);
#endif

Servo monServo;  //création de l'objet servo

// La variable qui indique la position désirée pour le servomoteur (dépend du bouton coché sur la page web)
String positionSTR = "1";          // peut prendre les valeurs 1, 2, 3, 4, 5, 6 ou 7
//String sensSTR = "1";          // peut prendre les valeurs 0 (horaire) ou 1 (antihoraire)
//String vitesseSTR = "0";       // peut prendre les valeurs 0 (arrêt) , 1 (lent) ou 2 (rapide)


Servo monServo1;  //création de l'objet servo

// La variable qui indique la position désirée pour le servomoteur (dépend du bouton coché sur la page web)
String positionSTR1 = "4";          // peut prendre les valeurs 1, 2 ou 3.




/* La fonction construitPage retourne un string qui contient toute notre page web  */

String construitPage() {

  String bouton1Str, bouton2Str, bouton3Str, bouton4Str, bouton5Str, bouton6Str, bouton7Str;
  String bouton1Str1, bouton2Str1, bouton3Str1, bouton4Str1, bouton5Str1, bouton6Str1, bouton7Str1;
  //String bouton1Str2, bouton2Str2, bouton3Str2, bouton4Str2, bouton5Str2;



  // pour que le bon bouton demeure coché:

  if (positionSTR == "1") {
    bouton1Str = "checked";
  }
  if (positionSTR == "2") {
    bouton2Str = "checked";
  }
  if (positionSTR == "3") {
    bouton3Str = "checked";
  }
  if (positionSTR == "4") {
    bouton4Str = "checked";
  }
  if (positionSTR == "5") {
    bouton5Str = "checked";
  }
  if (positionSTR == "6") {
    bouton6Str = "checked";
  }
  if (positionSTR == "7") {
    bouton7Str = "checked";
  }



  if (positionSTR1 == "1") {
    bouton1Str1 = "checked";
  }
  if (positionSTR1 == "2") {
    bouton2Str1 = "checked";
  }
  if (positionSTR1 == "3") {
    bouton3Str1 = "checked";
  }
  if (positionSTR1 == "4") {
    bouton4Str1 = "checked";
  }
  if (positionSTR1 == "5") {
    bouton5Str1 = "checked";
  }
  if (positionSTR1 == "6") {
    bouton6Str1 = "checked";
  }
  if (positionSTR1 == "7") {
    bouton7Str1 = "checked";
  }
  //if (vitesseSTR == "0") {
   // bouton1Str2 = "checked";
  //}
  //if (vitesseSTR == "1") {
    //bouton2Str2 = "checked";
  //}
  //if (vitesseSTR == "2") {
    //bouton3Str2 = "checked";
  //}
  //if (sensSTR == "1") {
    //bouton4Str2 = "checked";
  //}
  //if (sensSTR == "2") {
    //bouton5Str2 = "checked";
  //}

  String page = "<html lang=fr-FR><head>";
  page += "<title>Commande ENDEAVOUR</title>";
  page += "<style> body { background-color: #fffff; font-family: Arial, Helvetica, Sans-Serif; Color: #000088; }</style>";
  page += "</head><body><h1>COMMANDE ENDEAVOUR</h1>";
  page += "<form action='/' method='POST'>";

  page += "<h3>Position Derive:</h3>";
  page += "<p><INPUT type='radio' name='position' value='1' " + bouton1Str + ">0";
  page += "<INPUT type='radio' name='position' value='2' " + bouton2Str + ">30";
  page += "<INPUT type='radio' name='position' value='3' " + bouton3Str + ">60";
  page += "<INPUT type='radio' name='position' value='4' " + bouton4Str + ">90";
  page += "<INPUT type='radio' name='position' value='5' " + bouton5Str + ">120";
  page += "<INPUT type='radio' name='position' value='6' " + bouton6Str + ">150";
  page += "<INPUT type='radio' name='position' value='7' " + bouton7Str + ">180</p>";

  page += "<INPUT type='submit' value='Appliquer'><br><br>";

  page += "<h3>Position Safran:</h3>";
  page += "<p><INPUT type='radio' name='position1' value='1' " + bouton1Str1 + ">-90";
  page += "<INPUT type='radio' name='position1' value='2' " + bouton2Str1 + ">-60";
  page += "<INPUT type='radio' name='position1' value='3' " + bouton3Str1 + ">-30";
  page += "<INPUT type='radio' name='position1' value='4' " + bouton4Str1 + ">0";
  page += "<INPUT type='radio' name='position1' value='5' " + bouton5Str1 + ">30";
  page += "<INPUT type='radio' name='position1' value='6' " + bouton6Str1 + ">60";
  page += "<INPUT type='radio' name='position1' value='7' " + bouton7Str1 + ">90</p>";
  page += "<INPUT type='submit' value='Appliquer'><br><br>";

  //page += "<h3>Vitesse</h3>";
  //page += "<p><INPUT type='radio' name='vitesse' value='0' " + bouton1Str2 + ">arret";
  //page += "<INPUT type='radio' name='vitesse' value='1' " + bouton2Str2 + ">lent";
  //page += "<INPUT type='radio' name='vitesse' value='2' " + bouton3Str2 + ">rapide</p>";
  //page += "<h3>Sens de rotation</h3>";
  //page += "<p><INPUT type='radio' name='sens' value='1' " + bouton4Str2 + ">horaire";
  //page += "<INPUT type='radio' name='sens' value='2' " + bouton5Str2 + ">antihoraire</p>";
  //page += "<INPUT type='submit' value='Appliquer'><br><br>";
  //page += "</body></html>";
  //return page;
}

/*  La fonction gestionPage modifie les caractéristiques du moteur si le bouton
    Appliquer a été cliqué. */
void gestionPage() {
    if ( server.hasArg("position") )
      positionSTR = server.arg("position");
      Serial.print("Commande recue Servo1 Position: ");
      Serial.println(positionSTR);

    if ( server.hasArg("position1") ) 
      positionSTR1 = server.arg("position1");

      Serial.print("Commande recue Servo2 Position: ");
      Serial.println(positionSTR1);
      gestionServo();


    //if ( server.hasArg("sens") )
      //sensSTR = server.arg("sens");
      //vitesseSTR = server.arg("vitesse");

      //Serial.print("Commande recue.  Sens: ");
      //Serial.print(sensSTR);
      //Serial.print("   Vitesse:  ");
      //Serial.println(vitesseSTR);

      //gestionMoteur();




  

 
  server.send ( 200, "text/html", construitPage() );

}

/* Contrôle du servomoteur */
void gestionServo() {

  int laPosition;
  int laPosition1;

  if (positionSTR == "1") {
    laPosition = 0;
  }
  if (positionSTR == "2") {
    laPosition = 30;
  }
  if (positionSTR == "3") {
    laPosition = 60;
  }
  if (positionSTR == "4") {
    laPosition = 90;
  }
  if (positionSTR == "5") {
    laPosition = 120;
  }
  if (positionSTR == "6") {
    laPosition = 150;
  }
  if (positionSTR == "7") {
    laPosition = 180;
  }
  if (positionSTR1 == "1") {
    laPosition1 = 0;
  }
  if (positionSTR1 == "2") {
    laPosition1 = 30;
  }
  if (positionSTR1 == "3") {
    laPosition1 = 60;
  }
  if (positionSTR1 == "4") {
    laPosition1 = 90;
  }
  if (positionSTR1 == "5") {
    laPosition1 = 120;
  }
  if (positionSTR1 == "6") {
    laPosition1 = 150;
  }
  if (positionSTR1 == "7") {
    laPosition1 = 180;
  }

  monServo.write(laPosition);
  monServo1.write(laPosition1);
}

/* Contrôle du moteur */
//void gestionMoteur() {
  //if (vitesseSTR == "0") { //moteur immobile
    //ledcWrite(0, 0); //le max est 1023
    //ledcWrite(1, 0); //le max est 1023
  //}
  //if (vitesseSTR == "1") {  // vitesse moyenne
    //if (sensSTR == "1") { // sens horaire
      //ledcWrite(0, 0); //le max est 1023
      //ledcWrite(1, 400); //le max est 1023
    //}
    //if (sensSTR == "2") { //sens antihoraire
      //ledcWrite(0, 400); //le max est 1023
      //ledcWrite(1, 0); //le max est 1023
    //}
  //}
  //if (vitesseSTR == "2") {  // pleine vitessse
    //if (sensSTR == "1") {  // sens horaire
      //ledcWrite(0, 0); //le max est 1023
      //ledcWrite(1, 800); //le max est 1023
    //}
    //if (sensSTR == "2") {  // sens antihoraire
      //ledcWrite(0, 800); //le max est 1023
      //ledcWrite(1, 0); //le max est 1023
    //}
  //}
//}



void setup() {

  monServo.attach(pinServo);
  monServo1.attach(pinServo1);
  // broches qui contrôlent le moteur
  //pinMode(pinMoteur1, OUTPUT);
  //pinMode(pinMoteur2, OUTPUT);

 // pour l'ESP32, il faut préparer la broche PWM
//#if defined ARDUINO_ARCH_ESP32  // s'il s'agit d'un ESP32
  //ledcAttachPin(pinMoteur1, 0); //broche GPIO4 associée au canal PWM 0
  //ledcAttachPin(pinMoteur2, 1); //broche GPIO5 associée au canal PWM 1
  //ledcSetup(0, 2000, 10);// canal = 0, frequence = 2000 Hz, resolution = 10 bits
  //ledcSetup(1, 2000, 10);// canal = 1, frequence = 2000 Hz, resolution = 10 bits
//#endif 
  
  // pour affichage dans le moniteur série
  Serial.begin ( 115200 );

  // initialisation de la communication WiFi
  WiFi.begin ( ssid, password );
  while ( WiFi.status() != WL_CONNECTED ) {
    delay ( 500 ); Serial.print ( "." );
  }
  Serial.println ( "" );
  Serial.print ( "Maintenant connecte a " );
  Serial.println ( ssid );
  Serial.print ( "Adresse IP: " );
  Serial.println ( WiFi.localIP() );

  // On indique le nom de la fonction qui gère l'interraction avec la page web
  server.on ( "/",  gestionPage );

  server.begin();
  Serial.println ( "Serveur HTTP en fonction" );
}

void loop() {

  server.handleClient();
}

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.