ENIB 2025 : LaGrueQuiDub

De Les Fabriques du Ponant
Révision datée du 21 janvier 2025 à 09:59 par CuistotChef (discussion | contributions) (Ajout de la première version du code comme demandé : ))
Aller à : navigation, rechercher

Titre de la fiche expérience :

Description

Faire une grue à partir du petit bot en rajoutant un servomoteur, un capteur ultrason et un haut parleur. La grue sera sur 3 axes comme une grue traditionnelle et fonctionnera avec un système de poulie.


Introduction

éventuelle vidéo

outil et matériel

fichiers à joindre

code, ficher d'impression 3D, de découpe laser ou vinyle, ...

Mettre du code Arduino

 1  
 2 #define PIN 9
 3 #include <Arduino_GFX_Library.h>
 4 
 5 void setup() {
 6   // put your setup code here, to run once:
 7 
 8 }
 9 
10 void loop() {
11   // put your main code here, to run repeatedly:
12 
13 }

étapes de fabrication

indiquer autant d'étape que nécessaire, chacune illustrée par des images (photo, dessins, ...)

étape 1

Connecter la carte au Wifi, trouver son adresse IP et créer un serveur Web dessus.

LaGrueQuiDobe1.jpg

étape 2

étape ...

Troubleshouting

Quelles sont difficultés, les problèmes, quelles sont les solutions, les trucs et astuces pour que ça marche ?

Sources et documentation complémentaire

Elémlent de présentation

je met ici le document de présentation de mon projet

=============Annexe===============

CodeV1 contrôle servo avec graphique 2axes

  1. include <ESP8266WiFi.h>
  2. include <ESP8266WebServer.h>
  3. include <Servo.h>

const int pwmPin = 5; //(D1 sur l'ESP8266) Servo servoG; Servo servoD;

// Crédential réseau const char* ssid = "Formation"; const char* password = "Apdgo29200!";

// Lancer le serverWeb ESP8266WebServer server(80);

// Coordonnées sliders et mémoire de détection de changement float xCoord = 0; float yCoord = 0; float lastXCoord = -1; float lastYCoord = -1;

unsigned long previousMillis = 0; const long interval = 1000; const float deadZone = 50.0;

void setup() {

 Serial.begin(115200);
 initServos();
 connectToWiFi();
 server.on("/", handleRoot);
 server.on("/coords", handleCoords);
 server.begin();
 Serial.println("Serveur démarré");

}

void loop() {

 unsigned long currentMillis = millis();
 if (currentMillis - previousMillis >= interval) {
   previousMillis = currentMillis;
   if (abs(xCoord - lastXCoord) > deadZone || abs(yCoord - lastYCoord) > deadZone) {
     Serial.print("Coordonnées X: ");
     Serial.print(xCoord);
     Serial.print(", Y: ");
     Serial.println(yCoord);
     createServoMovement(xCoord, yCoord);
     lastXCoord = xCoord;
     lastYCoord = yCoord;
   }
 }
 server.handleClient();

}

void initServos() {

 servoG.attach(5); // (D1 sur l'ESP8266)
 servoD.attach(4); // (D2 sur l'ESP8266)

}

void connectToWiFi() {

 Serial.println("Connexion au Wi-Fi...");
 WiFi.begin(ssid, password);
 while (WiFi.status() != WL_CONNECTED) {
   delay(500);
   Serial.print(".");
 }
 Serial.println("\nConnecté !");
 Serial.print("Adresse IP : ");
 Serial.println(WiFi.localIP());

}

void handleRoot() {

 String html = generateHTML();
 server.send(200, "text/html", html);

}

String generateHTML() {

 return R"rawliteral(
   <!DOCTYPE html>
   
    
      ESP8266 Interactive Page
      
    
    
      
      
    
    
 )rawliteral";

}

void handleCoords() {

 xCoord = server.arg("x").toFloat();
 yCoord = server.arg("y").toFloat();
 server.send(200, "text/plain", "Coordonnées reçues et servos mis à jour !");

}

void createServoMovement(float xCoord, float yCoord) {

 // Mapper xCoord de [0, 500] à [0, 180] pour le servo gauche
 int angleG = map(xCoord, 0, 500, 0, 180);
 servoG.write(angleG);
 // Mapper yCoord de [0, 500] à [0, 180] pour le servo droit
 int angleD = map(yCoord, 0, 500, 0, 180);
 servoD.write(angleD);
 Serial.print("Servo gauche : ");
 Serial.print(angleG);
 Serial.print(" degrés, Servo droit : ");
 Serial.print(angleD);
 Serial.println(" degrés");

}

ne pas modifier sous cette ligne