Barrera con sensor de ultrasonido
Este código utiliza un sensor ultrasónico para medir la distancia.
Si la distancia es menor a 15 cm, moverá el servo motor de 0 a 180 grados. Asegúrate de conectar los componentes según las especificaciones y ajusta los pines según tu configuración.
Además, ten en cuenta que este código es un punto de partida y puede necesitar ajustes según tus necesidades específicas. ¡Buena suerte con tu proyecto!
#include <Servo.h>
const int trigPin = 2; // Pin de trigger del sensor ultrasónico
const int echoPin = 3; // Pin de eco del sensor ultrasónico
const int servoPin = 9; // Pin del servo motor
Servo miServo;
void setup() {
Serial.begin(9600);
miServo.attach(servoPin);
}
void loop() {
long duration, distancia;
// Generar pulso ultrasónico
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Medir el tiempo de vuelo del eco
duration = pulseIn(echoPin, HIGH);
// Calcular la distancia en cm
distancia = duration * 0.034 / 2;
// Imprimir la distancia en el monitor serie
Serial.print("Distancia: ");
Serial.println(distancia);
// Verificar si la distancia es menor a 15 cm
if (distancia < 15) {
// Mover el servo motor de 0 a 180 grados
for (int angulo = 0; angulo <= 180; angulo += 1) {
miServo.write(angulo);
delay(15);
}
delay(1000); // Esperar un segundo después de mover el servo
}
}
Este es un segundo ejemplo del codigo mejorado:
#include <Servo.h>
const int trigPin = 2; // Pin de trigger del sensor ultrasónico
const int echoPin = 3; // Pin de eco del sensor ultrasónico
const int servoPin = 9; // Pin del servo motor
const int ledverde = 7; // Pin del led verde
const int ledrojo= 12; // Pin del led rojo
Servo miServo;
void setup() {
Serial.begin(9600);
miServo.attach(servoPin);
pinMode(ledrojo,OUTPUT);
pinMode(ledverde,OUTPUT);
}
void loop() {
long duration, distancia;
// Generar pulso ultrasónico
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
// Medir el tiempo de vuelo del eco
duration = pulseIn(echoPin, HIGH);
// Calcular la distancia en cm
distancia = duration * 0.034 / 2;
// Imprimir la distancia en el monitor serie
Serial.print("Distancia: ");
Serial.println(distancia);
// Verificar si la distancia es menor a 15 cm
if (distancia < 20) {
digitalWrite(ledrojo, LOW);
digitalWrite(ledverde, HIGH);
// Mover el servo motor de 0 a 180 grados
for (int angulo = 0; angulo <= 180; angulo += 1) {
miServo.write(180);
delay(15);
}
delay(100);
}
if (distancia > 30) {
digitalWrite(ledrojo, HIGH);
digitalWrite(ledverde, LOW);
miServo.write(0);
delay(15);
}
delay(100);
}