Your cart is currently empty!

20% DESCUENTO

Crear un robot que use servomotores y un sensor ultrasónico HC-SR04 para evitar obstáculos es un proyecto interesante y educativo. Los servos pueden ser útiles para mover el robot en diferentes direcciones o ajustar la posición de los componentes, mientras que el sensor ultrasónico se encarga de medir las distancias y detectar obstáculos.
En este proyecto, el sensor HC-SR04 medirá la distancia a los objetos cercanos. Si un obstáculo es detectado dentro de un rango determinado (por ejemplo, 20 cm), el robot tomará una acción, como girar o retroceder. Los servomotores controlarán el movimiento del robot y las direcciones de las ruedas.
El código que se muestra a continuación hace que el robot avance hasta que detecte un obstáculo. En caso de que se detecte un obstáculo dentro del rango, el robot girará.
#include <Servo.h>
#define trigPin 7
#define echoPin 8
#define servoPin1 2
#define servoPin2 3
Servo servo1; // Servo para la rueda Derecha
Servo servo2; // Servo para la rueda Izquierda
void setup() {
Serial.begin(9600);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
// Inicializa los servos
servo1.attach(servoPin1);
servo2.attach(servoPin2);
// Poner los servos en la posición inicial
servo1.write(90); // Posición 90 es hacia adelante
servo2.write(90); // Posición 90 es hacia adelante
}
void loop() {
long duration, distance;
// Enviar pulso ultrasónico
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Medir el tiempo que tarda en volver el pulso
duration = pulseIn(echoPin, HIGH);
// Calcular la distancia en cm
distance = (duration / 2) / 29.1;
// Imprimir la distancia
Serial.print("Distancia: ");
Serial.print(distance);
Serial.println(" cm");
// Si detecta un obstáculo a menos de 20 cm
if (distance < 20) {
// Detenerse
stopMovement();
delay(500); // Pausa
// Girar a la derecha (por ejemplo, moviendo el servo del lado derecho)
turnRight();
delay(1000); // Tiempo para girar
// Continuar avanzando después de girar
moveForward();
delay(500); // Pausa
} else {
// Continuar avanzando si no hay obstáculos
moveForward();
}
}
// Función para mover hacia adelante
void moveForward() {
servo1.write(0); // Avanzar con servo 1 (gira en sentido adecuado)
servo2.write(180); // Avanzar con servo 2 (gira en sentido adecuado)
}
// Función para detener los motores
void stopMovement() {
servo1.write(90); // Detener
servo2.write(90); // Detener
}
// Función para girar a la derecha
void turnRight() {
servo1.write(90); // Mantener en posición
servo2.write(180); // Mover la rueda trasera a la izquierda (giro hacia la derecha)
delay(500); // Pausa para completar el giro
servo2.write(90); // Regresar la rueda trasera a la posición neutral
}
servo.write(90)
coloca los servos en una posición neutral (hacia adelante), y al cambiar esa posición, el robot puede girar.Este proyecto te permitirá practicar la integración de sensores y actuadores, además de aprender sobre el control de servomotores con Arduino. ¡Espero que disfrutes el proceso de construcción y programación de tu robot!
You must scan the QR code, click continue to attach the screenshot (it is the only proof of payment) and you will be able to complete the purchase.