#include <WiFi.h>
#include <AsyncUDP.h>
#include <ESP32Servo.h>
// Configuración de WiFi
const char* ssid = "CHITIPIK"; // Cambiar por el nombre de tu red WiFi
const char* password = "BALTOPIKAPULmetal2024"; // Reemplaza con la contraseña de tu red WiFi
int servoPin1 = 13;
int servoPin2 = 12;
int servoPin3 = 14;
int servoPin4 = 27;
Servo servo1;
Servo servo2;
Servo servo3;
Servo servo4;
AsyncUDP udp;
void setup() {
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println("Conectando a WiFi...");
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println("\nConectado a WiFi");
Serial.println(WiFi.localIP());
servo1.attach(servoPin1);
servo2.attach(servoPin2);
servo3.attach(servoPin3);
servo4.attach(servoPin4);
if (udp.listen(3333)) {
Serial.println("Escuchando en el puerto UDP: 3333");
udp.onPacket([](AsyncUDPPacket packet) {
String mensajeRecibido = packet.readString();
Serial.print("Paquete recibido: ");
Serial.println(mensajeRecibido);
if (mensajeRecibido.startsWith("ALLS")) {
int valorServo1 = obtenerValorServo(mensajeRecibido, "S1:");
int valorServo2 = obtenerValorServo(mensajeRecibido, "S2:");
int valorServo3 = obtenerValorServo(mensajeRecibido, "S3:");
int valorServo4 = obtenerValorServo(mensajeRecibido, "S4:");
if (valorServo1 != -1 && valorServo2 != -1 && valorServo3 != -1 && valorServo4 != -1)
{
Serial.print("Servo1: ");
Serial.println(valorServo1);
Serial.print("Servo2: ");
Serial.println(valorServo2);
Serial.print("Servo3: ");
Serial.println(valorServo3);
Serial.print("Servo4: ");
Serial.println(valorServo4);
servo1.write(valorServo1);
servo2.write(valorServo2);
servo3.write(valorServo3);
servo4.write(valorServo4);
} else {
Serial.println("Error al parsear el mensaje.");
}
} else {
Serial.println("Formato de mensaje incorrecto.");
}
});
}
}
void loop() {
}
int obtenerValorServo(String mensaje, String servo) {
int startIndex = mensaje.indexOf(servo);
if (startIndex != -1) {
int endIndex = mensaje.indexOf("S", startIndex + 1);
if (endIndex == -1) {
endIndex = mensaje.length();
}
String valorStr = mensaje.substring(startIndex + 3, endIndex);
return valorStr.toInt();
}
return -1;
}