Control de Servomotor con ESP32
0:48
Cpp
#include #include // Definición de etiquetas para pines si no vienen predefinidas #ifndef D18 #define D18 18 #endif #ifndef D5 #define D5 5 #endif #ifndef D19 #define D19 19 #endif #ifndef D17 #define D17 17 #endif #ifndef D16 #define D16 16 #endif #ifndef D4 #define D4 4 #endif #ifndef D2 #define D2 2 #endif // Definición de pines utilizando las etiquetas de la placa const int servoPin = D18; // Sensor 1 (Izquierda) const int trig1 = D5; const int echo1 = D19; // Sensor 2 (Centro) const int trig2 = D17; const int echo2 = D16; // Sensor 3 (Derecha) const int trig3 = D4; const int echo3 = D2; Servo myservo; long readDistance(int trigPin, int echoPin) { digitalWrite(trigPin, LOW); delayMicroseconds(2); digitalWrite(trigPin, HIGH); delayMicroseconds(10); digitalWrite(trigPin, LOW); // Timeout para evitar bloqueos en caso de no recibir señal long duration = pulseIn(echoPin, HIGH, 30000); // Conversión de duración (en µs) a distancia en cm: long distance = duration * 0.034 / 2; return distance; } void setup() { Serial.begin(9600); // Inicialización del servo en el pin asignado y se centra myservo.attach(servoPin); myservo.write(90); // Posición inicial central // Configuración de pines para los sensores pinMode(trig1, OUTPUT); pinMode(echo1, INPUT); pinMode(trig2, OUTPUT); pinMode(echo2, INPUT); pinMode(trig3, OUTPUT); pinMode(echo3, INPUT); } void loop() { // Obtención de lectura de cada sensor long dist1 = readDistance(trig1, echo1); long dist2 = readDistance(trig2, echo2); long dist3 = readDistance(trig3, echo3); Serial.print("Sensor 1 (Izquierda): "); Serial.print(dist1); Serial.println(" cm"); Serial.print("Sensor 2 (Centro): "); Serial.print(dist2); Serial.println(" cm"); Serial.print("Sensor 3 (Derecha): "); Serial.print(dist3); Serial.println(" cm"); // Umbral de distancia para detección (en cm) const long threshold = 20; if (dist1 > 0 && dist1 < threshold) { // Si el Sensor 1 detecta un objeto cerca: Giro a la izquierda (0°) myservo.write(0); Serial.println("Giro a la izquierda"); } else if (dist2 > 0 && dist2 < threshold) { // Si el Sensor 2 detecta la presencia: Giro al centro (90°) myservo.write(90); Serial.println("Giro al centro"); } else if (dist3 > 0 && dist3 < threshold) { // Si el Sensor 3 detecta un objeto cerca: Giro a la derecha (180°) myservo.write(180); Serial.println("Giro a la derecha"); } delay(100); // Pausa corta para estabilizar las lecturas }
D18, D5, etc.) en caso de que no estén predefinidas en tu entorno.Ready.
Reviews
Inspect
Scared Tan Robot Maid
Controls
Properties
Availability & Pricing
| Distributor | Qty 1 | |
|---|---|---|
Assets
Welcome 👋
Flux helps you build PCBs faster with an AI teammate!
Create your account to collaborate, stay updated, fork your own version, and get instant answers from our AI agent.