Piloter un treuil pour un bateau avec un ESP32
Révision datée du 15 avril 2024 à 21:01 par 192.168.2.1 (discussion)
C'est le petit jeu du jour, il s'agit de simuler le mouvement d'un treuil pour border puis choquer les voiles d'un voilier radiocommandé. Avant d'implanter le treuil dans le bateau pour naviguer.
Avec la vidéo de démonstration, où on voit les 3 fils qui sortent de l'ESP32 pour alimenter le treuil : https://youtu.be/B4BSZA-tNk8
- un pour le +5V
- un pour la masse
- un pour le signal
Le code,
#include <ESP32Servo.h> #define PIN_w5513 12 // Broche de sortie utilisée pour le servo #define LED_PIN 2 // Définir le numéro de broche pour la LED Servo w5513; // on crée un objet servo appelé w5513 void setup() { Serial.begin(115200); pinMode(LED_PIN, OUTPUT); // Configurer la broche de la LED en mode sortie w5513.setPeriodHertz(50); // Fréquence PWM pour le w5513 w5513.attach(PIN_w5513); // on attache la PIN du servo } void loop() { // signal de départ = clignote 3 fois digitalWrite(LED_PIN, HIGH); // Allumer la LED delay(200); digitalWrite(LED_PIN, LOW); // eteindre la LED delay(200); digitalWrite(LED_PIN, HIGH); // Allumer la LED delay(200); digitalWrite(LED_PIN, LOW); // eteindre la LED delay(200); digitalWrite(LED_PIN, HIGH); // Allumer la LED delay(200); digitalWrite(LED_PIN, LOW); // eteindre la LED //remise à zéro w5513.write(0); // on déplace le servo à la position 0º delay(1000); // pause de 1 seconde // tour de 0 à 180º for (int i = 0; i <= 180; i++){ w5513.write(i); // angle demandé au servo Serial.print("Angle: "); Serial.println(i); Serial.print("Angle lu: "); Serial.println(w5513.read()); // angle lu du servo digitalWrite(LED_PIN, HIGH); // Allumer la LED delay(40); digitalWrite(LED_PIN, LOW); // éteindre la LED delay(40); } // tour de 180 a 0º for (int i = 179; i > 0; i--){ w5513.write(i); Serial.print("Angle: "); Serial.println(i); Serial.print("Angle lu: "); Serial.println(w5513.read()); digitalWrite(LED_PIN, HIGH); // Allumer la LED delay(40); digitalWrite(LED_PIN, LOW); // eteindre la LED delay(40); } }