APARCAMIENTO ROCKET LEAGUE
Este proyecto consiste en crear un aparcamiento de coches que nos indique si el estacionamiento está ocupado (LED rojo) o libre (LED verde) usando sensores de ultrasonidos HC-SR04
PROGRAMA DE ARDUINO
Programa de Arduino:
Al medir una distancia menor a 10cm enciende el LED
* y se espera 1segundos para apagrse si la distancia medida
*es mayor a 10cm
*/
const int Trigger1 = 13; //Pin digital para el Trigger del sensor
const int Echo1 = 12; //Pin digital para el Echo del sensor
const int ledPINVERDE1 = 3;
const int ledPINROJO1 = 2;
const int Trigger2 = 11; //Pin digital para el Trigger del sensor
const int Echo2 = 10; //Pin digital para el Echo del sensor
const int ledPINVERDE2 = 5;
const int ledPINROJO2 = 4;
const int Trigger3 = 9; //Pin digital para el Trigger del sensor
const int Echo3 = 8; //Pin digital para el Echo del sensor
const int ledPINVERDE3 = 7;
const int ledPINROJO3 = 6;
const int Trigger4 = A0; //Pin digital para el Trigger del sensor
const int Echo4 = A1; //Pin digital para el Echo del sensor
const int ledPINVERDE4 = A2;
const int ledPINROJO4 = A3;
long t1; //tiempo que demora en llegar el eco
long d1; //distancia en centimetros
long t2; //tiempo que demora en llegar el eco
long d2; //distancia en centimetros
long t3; //tiempo que demora en llegar el eco
long d3; //distancia en centimetros
long t4; //tiempo que demora en llegar el eco
long d4; //distancia en centimetros
void setup() {
Serial.begin(9600);//inicializamos la comunicación
pinMode(Trigger1, OUTPUT); //se define pin como salida
pinMode(ledPINVERDE1, OUTPUT); //se define pin como salida
pinMode(ledPINROJO1, OUTPUT); //se define pin como salida
pinMode(Echo1, INPUT); //se define pin como entrada
digitalWrite(Trigger1, LOW);//Inicializamos el pin con 0
digitalWrite(ledPINVERDE1 , HIGH); // poner el Pin en LOW
digitalWrite(ledPINROJO1 , LOW); // poner el Pin en LOW
pinMode(Trigger2, OUTPUT); //se define pin como salida
pinMode(ledPINVERDE2, OUTPUT); //se define pin como salida
pinMode(ledPINROJO2, OUTPUT); //se define pin como salida
pinMode(Echo2, INPUT); //se define pin como entrada
digitalWrite(Trigger2, LOW);//Inicializamos el pin con 0
digitalWrite(ledPINVERDE2 , HIGH); // poner el Pin en LOW
digitalWrite(ledPINROJO2 , LOW); // poner el Pin en LOW
pinMode(Trigger3, OUTPUT); //se define pin como salida
pinMode(ledPINVERDE3, OUTPUT); //se define pin como salida
pinMode(ledPINROJO3, OUTPUT); //se define pin como salida
pinMode(Echo3, INPUT); //se define pin como entrada
digitalWrite(Trigger3, LOW);//Inicializamos el pin con 0
digitalWrite(ledPINVERDE3 , HIGH); // poner el Pin en LOW
digitalWrite(ledPINROJO3 , LOW); // poner el Pin en LOW
pinMode(Trigger4, OUTPUT); //se define pin como salida
pinMode(ledPINVERDE4, OUTPUT); //se define pin como salida
pinMode(ledPINROJO4, OUTPUT); //se define pin como salida
pinMode(Echo4, INPUT); //se define pin como entrada
digitalWrite(Trigger4, LOW);//Inicializamos el pin con 0
digitalWrite(ledPINVERDE4 , HIGH); // poner el Pin en LOW
digitalWrite(ledPINROJO4 , LOW); // poner el Pin en LOW
}
void loop()
{
digitalWrite(Trigger1, HIGH);
delayMicroseconds(10); //Enviamos un pulso de 10us
digitalWrite(Trigger1, LOW); // se completa el pulso del ultrasonido
t1 = pulseIn(Echo1, HIGH); //obtenemos el ancho del pulso
d1 = t1/59; //escalamos el tiempo a una distancia en cm
digitalWrite(Trigger2, HIGH);
delayMicroseconds(10); //Enviamos un pulso de 10us
digitalWrite(Trigger2, LOW); // se completa el pulso del ultrasonido
t2 = pulseIn(Echo2, HIGH); //obtenemos el ancho del pulso
d2 = t2/59; //escalamos el tiempo a una distancia en cm
digitalWrite(Trigger3, HIGH);
delayMicroseconds(10); //Enviamos un pulso de 10us
digitalWrite(Trigger3, LOW); // se completa el pulso del ultrasonido
t3 = pulseIn(Echo3, HIGH); //obtenemos el ancho del pulso
d3 = t3/59; //escalamos el tiempo a una distancia en cm
digitalWrite(Trigger4, HIGH);
delayMicroseconds(10); //Enviamos un pulso de 10us
digitalWrite(Trigger4, LOW); // se completa el pulso del ultrasonido
t4 = pulseIn(Echo4, HIGH); //obtenemos el ancho del pulso
d4 = t4/59; //escalamos el tiempo a una distancia en cm
Serial.print("lectura de distancias ");
Serial.print(d1);
Serial.print(" ");
Serial.print(d2);
Serial.print(" ");
Serial.print(d3);
Serial.print(" ");
Serial.println(d4);
// Serial.println("cuarto cm");
if (d1 < 10 ) //si la distancia es menor a 10 enciende el LED
{
digitalWrite(ledPINVERDE1 , LOW); // poner el Pin en LOW
digitalWrite(ledPINROJO1 , HIGH); // poner el Pin en HIGH
delay (10); // Se espera 1 segundos para apagarse si se supera la distancia de 10
}
else {
digitalWrite(ledPINVERDE1 , HIGH);
digitalWrite(ledPINROJO1 , LOW); // poner el Pin en HIGH
delay(10); //Hacemos una pausa de 100ms
}
if (d2 < 10 ) //si la distancia es menor a 10 enciende el LED
{
digitalWrite(ledPINVERDE2 , LOW); // poner el Pin en LOW
digitalWrite(ledPINROJO2 , HIGH); // poner el Pin en HIGH
delay (10); // Se espera 1 segundos para apagarse si se supera la distancia de 10
}
else {
digitalWrite(ledPINVERDE2 , HIGH);
digitalWrite(ledPINROJO2 , LOW); // poner el Pin en HIGH
delay(10); //Hacemos una pausa de 100ms
}
if (d3 < 10 ) //si la distancia es menor a 10 enciende el LED
{
digitalWrite(ledPINVERDE3 , LOW); // poner el Pin en LOW
digitalWrite(ledPINROJO3 , HIGH); // poner el Pin en HIGH
delay (10); // Se espera 1 segundos para apagarse si se supera la distancia de 10
}
else {
digitalWrite(ledPINVERDE3 , HIGH);
digitalWrite(ledPINROJO3 , LOW); // poner el Pin en HIGH
delay(10); //Hacemos una pausa de 100ms
}
if (d4 < 10 ) //si la distancia es menor a 10 enciende el LED
{
digitalWrite(ledPINVERDE4 , LOW); // poner el Pin en LOW
digitalWrite(ledPINROJO4 , HIGH); // poner el Pin en HIGH
delay (10); // Se espera 1 segundos para apagarse si se supera la distancia de 10
}
else {
digitalWrite(ledPINVERDE4 , HIGH);
digitalWrite(ledPINROJO4 , LOW); // poner el Pin en HIGH
delay(10);
}
}
MONTAJE Y CIRCUITO
Repetir el montaje para cada uno de los boxes (con el diodo verde y el diodo rojo)
BARRERA DE ACCESO AL PARKING
En esta segunda parte del proyecto del aparcamiento controlaremos la apertura y cierre de la barrera del aparcamiento movida por un servo usando como sensor un ultrasonido HC-SR04. Al detectar el vehículo, la barrera se abrirá y permanecerá abierta durante diez segundo, tiempo para pasar en vehículo, tras el cual la barrera se cerrará.
DISEÑO Y MONTAJE DEL CIRCUITO
Programa de Arduino:
#include <Servo.h>
const int Trigger = 2; //Pin 2 para el Trigger del sensor ultrasónico
const int Echo = 3; //Pin 3 para el Eco del sensor ultrasónico
int estado = 0;
Servo servoMotor1; // crear un objeto servo para controlar el servo
void setup() {
Serial.begin(9600);//iniciailzamos la comunicación a 9600 bps
pinMode(Trigger, OUTPUT); //Se configura como salida
pinMode(Echo, INPUT); //Se configura como entrada
digitalWrite(Trigger, LOW);//Inicializamos el pin con estado BAJO o LOW
servoMotor1.attach(4); // Asignamos el pin 4 para el control del servo
servoMotor1.write(0); //Posisción inicial del servo para que quede la tapa cerrada
}
void loop()
{
long tiempo; //tiempo que demora en llegar el eco
long distancia; //distancia en centimetros
digitalWrite(Trigger, HIGH);//Activamos el pin 2
delayMicroseconds(10); //Enviamos un pulso durante 10us
digitalWrite(Trigger, LOW); //Desactivamos el pin 2
tiempo = pulseIn(Echo, HIGH); //obtenemos el ancho del pulso y lo asignamos a la variable tiempo
distancia = tiempo/59; //Convertimos el tiempo a distancia en cm
Serial.print("Distancia: ");//Imprimimos en el terminal serial el valor de la distancia en centímetros
Serial.print(distancia);
Serial.print("cm");
Serial.println();
delay(20);
if(distancia<10 ){//
estado = 1;
}
if(distancia>10 && estado == 1){
servoMotor1.write(0);//Barrera abierta
delay(10000);//La tapa estrá abierta 10 segundos
servoMotor1.write(90);//Barrera cerrada
estado = 0;
}
delay(100); //Esperamos un tiempo breve antes de empezar de nuevo
}