Este es un proyecto clásico de Arduino para automatizar una barrera de estacionamiento (parking). Utiliza un sensor ultrasónico (HC-SR04) para detectar la presencia de un coche, un servomotor para mover la barrera, y dos LEDs (verde y rojo) para indicar el estado (libre/abierto o cerrado).
1. Componentes Necesarios
- Tarjeta controladora Arduino Uno (o compatible).
- Sensor Ultrasónico HC-SR04.
- Servomotor SG90 (Micro Servo).
- LED Verde y LED Rojo.
- 2 Resistencias de 220 o 330 ohmios.
- Protoboard y cables de conexión.
2. Conexiones (Esquema)
HC-SR04: VCC a 5V, GND a GND, Trig al Pin 10, Echo al Pin 9.
Servo: Cable marrón/negro a GND, rojo a 5V, naranja/amarillo a Pin 11.
LED Verde: Ánodo (+) al Pin 12, Cátodo (-) a GND (con resistencia).
LED Rojo: Ánodo (+) al Pin 13, Cátodo (-) a GND (con resistencia).
3.1. Código Arduino - Bloques con Tinkercad
opción Aopción B
3.2. Código IDE Arduino
(Copiar, pegar en IDE y completar) >> ver opciones(fotocopia)
***
#include <Servo.h>
// Definición de Pines
const int trigPin = ;
const int echoPin = ;
const int servoPin = ;
const int ledVerde = ;
const int ledRojo = ;
// Variables
Servo myServo;
long duracion;
int distancia;
int distanciaSeguridad = 20; // Distancia en cm para detectar coche
void setup() {
pinMode(trigPin, );
pinMode(echoPin, );
pinMode(ledVerde, );
pinMode(ledRojo, );
myServo.attach(servoPin);
// Barrera cerrada inicialmente (0 grados)
myServo.write(0);
Serial.begin(9600); //*opcional
}
void loop() {
// Medir distancia con sensor ultrasónico
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);
duracion = pulseIn(echoPin, HIGH);
distancia = duracion * 0.034 / 2;
Serial.print("Distancia: "); //*opcional
Serial.println(distancia);
// Lógica de la barrera
if (distancia > 0 && distancia <= distanciaSeguridad) {
// Coche detectado: Abrir barrera
digitalWrite(ledVerde, ); // Luz verde encendida
digitalWrite(ledRojo, ); // Luz roja apagada
myServo.write(); // Mueve servo a 90 grados
delay(3000); // Espera 3 segundos para que pase
}
else {
// No hay coche: Cerrar barrera
digitalWrite(ledVerde, ); // Luz verde apagada
digitalWrite(ledRojo, ); // Luz roja encendida
myServo.write(); // Mueve servo a 0 grados
}
delay(100); // Pequeña pausa para estabilidad
}
***
4. Funcionamiento
Estado Inicial: La barrera está en 0 grados (cerrada) y el LED rojo está encendido.
Detección: El sensor envía una onda de sonido. Si el coche está a menos de distanciaSeguridad (20 cm), el código lo detecta.
Acción: El LED rojo se apaga, el verde se enciende y el servo gira a 90 grados (barrera sube).
Cierre: Tras 3 segundos (delay(3000)), el servo vuelve a 0 grados y se enciende el rojo nuevamente.
5. DISEÑA CON TINKERCAD UNA MAQUETA PARA IMPRIMIR CON LA IMPRESORA 3D Y COMPRUEBA EL FUNCIONAMIENTO.
Enlaces de interés:
Simulación del circuito en Tinkercad: -::- Vídeo del circuito -::- Vídeo del código de bloques
Proyecto master: https://tecnovadores.blogspot.com/2020/02/parking-arduino.html