|
|
Ligne 14 : |
Ligne 14 : |
| ==outil et matériel== | | ==outil et matériel== |
| | | |
− | ==fichiers à joindre==
| + | [[Fichier:Ptitbolide_code.odt]] |
− | """
| |
− | code, ficher d'impression 3D, de découpe laser ou vinyle, ...
| |
− | #include <ESP8266WiFi.h>
| |
− | #include <ESP8266WebServer.h>
| |
− | #include <Servo.h> // Inclusion de la bibliothèque Servo
| |
− | | |
− | | |
− | // Informations réseau (réseau Wi-Fi existant)
| |
− | const char* mySSID = "Formation"; // SSID de votre réseau Wi-Fi
| |
− | const char* mySecKey = "Apdgo29200!"; // Clé Wi-Fi de votre réseau
| |
− | | |
− | | |
− | // Déclaration du serveur Web
| |
− | ESP8266WebServer myWeb(80);
| |
− | | |
− | | |
− | // Pin pour contrôler les servos
| |
− | const int servoPin1 = D4; // Pin pour le premier servo-moteur
| |
− | const int servoPin2 = D1; // Pin pour le deuxième servo-moteur
| |
− | | |
− | | |
− | // Déclaration des objets Servo
| |
− | Servo myServo1; // Objet Servo pour contrôler le premier servo
| |
− | Servo myServo2; // Objet Servo pour contrôler le deuxième servo
| |
− | | |
− | | |
− | // Variables pour stocker la position des servos
| |
− | int servoPosition1 = 90; // Position par défaut du premier servo
| |
− | int servoPosition2 = 90; // Position par défaut du deuxième servo
| |
− | | |
− | | |
− | // Fonction pour générer la page HTML
| |
− | String webPage01() {
| |
− | String p = "<html lang=fr-FR><head>\n";
| |
− | p += "<title>Commande des Servos</title>\n";
| |
− | p += "<meta charset='UTF-8'>\n";
| |
− | p += "<style>\n";
| |
− | p += "body { background-color: #000088; color: white; font-size: 25px; }\n";
| |
− | p += "input { width:25%; margin:10px; font-size:20px; border-radius: 5px; }\n";
| |
− | p += "</style>\n";
| |
− | p += "<script>\n";
| |
− | p += "function updateServoPosition1(val) {\n";
| |
− | p += " document.getElementById('servoValue1').innerText = val + '°';\n";
| |
− | p += " window.location = window.location.pathname + '?servo1=' + val;\n";
| |
− | p += "}\n";
| |
− | p += "function updateServoPosition2(val) {\n";
| |
− | p += " document.getElementById('servoValue2').innerText = val + '°';\n";
| |
− | p += " window.location = window.location.pathname + '?servo2=' + val;\n";
| |
− | p += "}\n";
| |
− | p += "</script>\n";
| |
− | | |
− | | |
− | p += "<body><center>\n";
| |
− | p += "<h3>Commandes Servo 1 (Pin D4)</h3>\n";
| |
− | | |
− | | |
− | // Affichage de la position actuelle du premier servo
| |
− | p += "<p>Position actuelle du servo 1 : <span id='servoValue1'>" + String(servoPosition1) + "°</span></p>\n";
| |
− | | |
− | | |
− | // Curseur pour ajuster l'angle du premier servo
| |
− | p += "<input type='range' min='0' max='180' value='" + String(servoPosition1) + "' onchange='updateServoPosition1(this.value)'>\n";
| |
− | | |
− | | |
− | p += "<h3>Commandes Servo 2 (Pin D1)</h3>\n";
| |
− | | |
− | | |
− | // Affichage de la position actuelle du deuxième servo
| |
− | p += "<p>Position actuelle du servo 2 : <span id='servoValue2'>" + String(servoPosition2) + "°</span></p>\n";
| |
− | | |
− | | |
− | // Curseur pour ajuster l'angle du deuxième servo
| |
− | p += "<input type='range' min='0' max='180' value='" + String(servoPosition2) + "' onchange='updateServoPosition2(this.value)'>\n";
| |
− | | |
− | | |
− | p += "</center></body></html>";
| |
− | return p;
| |
− | }
| |
− | | |
− | | |
− | // Fonction pour gérer les commandes et envoyer la page web
| |
− | void runPage01() {
| |
− | // Commandes pour contrôler le premier servo-moteur
| |
− | if (myWeb.hasArg("servo1")) {
| |
− | servoPosition1 = myWeb.arg("servo1").toInt(); // Récupère l'angle du premier servo
| |
− | myServo1.write(servoPosition1); // Déplace le premier servo à l'angle spécifié
| |
− | }
| |
− | | |
− | | |
− | // Commandes pour contrôler le deuxième servo-moteur
| |
− | if (myWeb.hasArg("servo2")) {
| |
− | servoPosition2 = myWeb.arg("servo2").toInt(); // Récupère l'angle du deuxième servo
| |
− | myServo2.write(servoPosition2); // Déplace le deuxième servo à l'angle spécifié
| |
− | }
| |
− | | |
− | | |
− | // Envoi de la page web
| |
− | myWeb.send(200, "text/html", webPage01());
| |
− | }
| |
− | | |
− | | |
− | // Fonction d'initialisation
| |
− | void setup() {
| |
− | // Initialisation de la liaison série
| |
− | Serial.begin(115200);
| |
− | delay(100);
| |
− | Serial.println("----------------------");
| |
− | Serial.println("Exemple de serveur WEB");
| |
− | Serial.println("----------------------");
| |
− | | |
− | | |
− | // Connexion au réseau Wi-Fi existant
| |
− | Serial.print("Connexion au réseau Wi-Fi : ");
| |
− | WiFi.begin(mySSID, mySecKey);
| |
− | | |
− | | |
− | // Attendre que l'ESP8266 se connecte au réseau Wi-Fi
| |
− | int attempts = 0;
| |
− | while (WiFi.status() != WL_CONNECTED && attempts < 30) { // Attendre 30 secondes max
| |
− | delay(500);
| |
− | Serial.print(".");
| |
− | attempts++;
| |
− | }
| |
− | | |
− | | |
− | if (WiFi.status() == WL_CONNECTED) {
| |
− | Serial.println("\nConnexion Wi-Fi réussie!");
| |
− | Serial.print("Adresse IP du serveur Web : ");
| |
− | Serial.println(WiFi.localIP());
| |
− | } else {
| |
− | Serial.println("\nErreur de connexion Wi-Fi !");
| |
− | }
| |
− | | |
− | | |
− | // Initialisation des servos
| |
− | myServo1.attach(servoPin1); // Attache le premier servo à la broche D4
| |
− | myServo2.attach(servoPin2); // Attache le deuxième servo à la broche D1
| |
− | | |
− | | |
− | // Définir la page d'accueil du serveur web
| |
− | myWeb.on("/", runPage01);
| |
− | myWeb.begin();
| |
− | }
| |
− | | |
− | | |
− | // Fonction appelée en boucle
| |
− | void loop() {
| |
− | // Traitement des requêtes web
| |
− | myWeb.handleClient();
| |
− | }
| |
− | """
| |
− | | |
− | =#include <ESP8266WiFi.h>
| |
− | #include <ESP8266WebServer.h>
| |
− | #include <Servo.h> // Inclusion de la bibliothèque Servo
| |
− | | |
− | | |
− | // Informations réseau (réseau Wi-Fi existant)
| |
− | const char* mySSID = "Formation"; // SSID de votre réseau Wi-Fi
| |
− | const char* mySecKey = "Apdgo29200!"; // Clé Wi-Fi de votre réseau
| |
− | | |
− | | |
− | // Déclaration du serveur Web
| |
− | ESP8266WebServer myWeb(80);
| |
− | | |
− | | |
− | // Pin pour contrôler les servos
| |
− | const int servoPin1 = D4; // Pin pour le premier servo-moteur
| |
− | const int servoPin2 = D1; // Pin pour le deuxième servo-moteur
| |
− | | |
− | | |
− | // Déclaration des objets Servo
| |
− | Servo myServo1; // Objet Servo pour contrôler le premier servo
| |
− | Servo myServo2; // Objet Servo pour contrôler le deuxième servo
| |
− | | |
− | | |
− | // Variables pour stocker la position des servos
| |
− | int servoPosition1 = 90; // Position par défaut du premier servo
| |
− | int servoPosition2 = 90; // Position par défaut du deuxième servo
| |
− | | |
− | | |
− | // Fonction pour générer la page HTML
| |
− | String webPage01() {
| |
− | String p = "<html lang=fr-FR><head>\n";
| |
− | p += "<title>Commande des Servos</title>\n";
| |
− | p += "<meta charset='UTF-8'>\n";
| |
− | p += "<style>\n";
| |
− | p += "body { background-color: #000088; color: white; font-size: 25px; }\n";
| |
− | p += "input { width:25%; margin:10px; font-size:20px; border-radius: 5px; }\n";
| |
− | p += "</style>\n";
| |
− | p += "<script>\n";
| |
− | p += "function updateServoPosition1(val) {\n";
| |
− | p += " document.getElementById('servoValue1').innerText = val + '°';\n";
| |
− | p += " window.location = window.location.pathname + '?servo1=' + val;\n";
| |
− | p += "}\n";
| |
− | p += "function updateServoPosition2(val) {\n";
| |
− | p += " document.getElementById('servoValue2').innerText = val + '°';\n";
| |
− | p += " window.location = window.location.pathname + '?servo2=' + val;\n";
| |
− | p += "}\n";
| |
− | p += "</script>\n";
| |
− | | |
− | | |
− | p += "<body><center>\n";
| |
− | p += "<h3>Commandes Servo 1 (Pin D4)</h3>\n";
| |
− | | |
− | | |
− | // Affichage de la position actuelle du premier servo
| |
− | p += "<p>Position actuelle du servo 1 : <span id='servoValue1'>" + String(servoPosition1) + "°</span></p>\n";
| |
− | | |
− | | |
− | // Curseur pour ajuster l'angle du premier servo
| |
− | p += "<input type='range' min='0' max='180' value='" + String(servoPosition1) + "' onchange='updateServoPosition1(this.value)'>\n";
| |
− | | |
− | | |
− | p += "<h3>Commandes Servo 2 (Pin D1)</h3>\n";
| |
− | | |
− | | |
− | // Affichage de la position actuelle du deuxième servo
| |
− | p += "<p>Position actuelle du servo 2 : <span id='servoValue2'>" + String(servoPosition2) + "°</span></p>\n";
| |
− | | |
− | | |
− | // Curseur pour ajuster l'angle du deuxième servo
| |
− | p += "<input type='range' min='0' max='180' value='" + String(servoPosition2) + "' onchange='updateServoPosition2(this.value)'>\n";
| |
− | | |
− | | |
− | p += "</center></body></html>";
| |
− | return p;
| |
− | }
| |
− | | |
− | | |
− | // Fonction pour gérer les commandes et envoyer la page web
| |
− | void runPage01() {
| |
− | // Commandes pour contrôler le premier servo-moteur
| |
− | if (myWeb.hasArg("servo1")) {
| |
− | servoPosition1 = myWeb.arg("servo1").toInt(); // Récupère l'angle du premier servo
| |
− | myServo1.write(servoPosition1); // Déplace le premier servo à l'angle spécifié
| |
− | }
| |
− | | |
− | | |
− | // Commandes pour contrôler le deuxième servo-moteur
| |
− | if (myWeb.hasArg("servo2")) {
| |
− | servoPosition2 = myWeb.arg("servo2").toInt(); // Récupère l'angle du deuxième servo
| |
− | myServo2.write(servoPosition2); // Déplace le deuxième servo à l'angle spécifié
| |
− | }
| |
− | | |
− | | |
− | // Envoi de la page web
| |
− | myWeb.send(200, "text/html", webPage01());
| |
− | }
| |
− | | |
− | | |
− | // Fonction d'initialisation
| |
− | void setup() {
| |
− | // Initialisation de la liaison série
| |
− | Serial.begin(115200);
| |
− | delay(100);
| |
− | Serial.println("----------------------");
| |
− | Serial.println("Exemple de serveur WEB");
| |
− | Serial.println("----------------------");
| |
− | | |
− | | |
− | // Connexion au réseau Wi-Fi existant
| |
− | Serial.print("Connexion au réseau Wi-Fi : ");
| |
− | WiFi.begin(mySSID, mySecKey);
| |
− | | |
− | | |
− | // Attendre que l'ESP8266 se connecte au réseau Wi-Fi
| |
− | int attempts = 0;
| |
− | while (WiFi.status() != WL_CONNECTED && attempts < 30) { // Attendre 30 secondes max
| |
− | delay(500);
| |
− | Serial.print(".");
| |
− | attempts++;
| |
− | }
| |
− | | |
− | | |
− | if (WiFi.status() == WL_CONNECTED) {
| |
− | Serial.println("\nConnexion Wi-Fi réussie!");
| |
− | Serial.print("Adresse IP du serveur Web : ");
| |
− | Serial.println(WiFi.localIP());
| |
− | } else {
| |
− | Serial.println("\nErreur de connexion Wi-Fi !");
| |
− | }
| |
− | | |
− | | |
− | // Initialisation des servos
| |
− | myServo1.attach(servoPin1); // Attache le premier servo à la broche D4
| |
− | myServo2.attach(servoPin2); // Attache le deuxième servo à la broche D1
| |
− | | |
− | | |
− | // Définir la page d'accueil du serveur web
| |
− | myWeb.on("/", runPage01);
| |
− | myWeb.begin();
| |
− | }
| |
− | | |
− | | |
− | // Fonction appelée en boucle
| |
− | void loop() {
| |
− | // Traitement des requêtes web
| |
− | myWeb.handleClient();
| |
− | }
| |
| | | |
| ==Sources et documentation complémentaire== | | ==Sources et documentation complémentaire== |