Académique Documents
Professionnel Documents
Culture Documents
sistema de aparcamiento
Componentes necesarios
Ya hemos visto una breve explicacin de lo que vamos a necesitar. La
siguiente lista te muestra todo el material necesario.
Arduino UNO
Protoboard donde conectaremos los componentes
Cables para hacer las conexiones
3 resistencias de 220
1 LED verde
1 LED amarillo
1 LED rojo
1 sensor ultrasnico Arduino (HC-SR04)
1 buzzer
Variables y constantes
A travs del sensor de ultrasonidos vamos a detectar el obstculo.
Comenzamos a programar declarando las variables y constantes.
Siempre que trabajemos con pines digitales o analgicos, es una buena
prctica declarar una constante por cada uno de ellos.
// Pines utilizados
#define LEDVERDE 2
#define LEDAMARILLO 3
#define LEDROJO 4
#define TRIGGER 5
#define ECHO 6
#define BUZZER 9
// Constantes
const float sonido = 34300.0; // Velocidad del sonido en cm/s
const float umbral1 = 30.0;
const float umbral2 = 20.0;
const float umbral3 = 10.0;
Funcin setup
En la funcin setup iniciamos el monitor serie y ponemos los pines en
el modo correspondiente. Los LEDs, el Trigger del sensor de
ultrasonidos y el buzzer son en modo salida (OUTPUT). El pin Echo del
sensor ultrasnico en modo entrada (INPUT).
}
// Apaga todos los LEDs
void apagarLEDs()
{
// Apagamos todos los LEDs
digitalWrite(LEDVERDE, LOW);
digitalWrite(LEDAMARILLO, LOW);
digitalWrite(LEDROJO, LOW);
}
Las funciones son muy tiles por dos razones, nos permiten ordenar
el cdigo para que sea ms legible y tambin reutilizar el cdigo. En
este caso vamos a necesitar apagar todos los LEDs ms de una vez y
es ms fcil escribir una llamada a una funcin con una lnea de
cdigo que hacer las 3 llamadas a la funcin digitalWrite para apagar
cada LED.
Funcin Loop
La funcin loop() contiene el cdigo que se repetir una y otra vez. Aqu
es donde vamos a ir poniendo todo nuestro algoritmo, el que hemos
detallado anteriormente. He dividido esta funcin en varias funciones
para hacer el cdigo ms legible.
void loop() {
// Preparamos el sensor de ultrasonidos
iniciarTrigger();
// Obtenemos la distancia
float distancia = calcularDistancia();
// Obtenemos la distancia en cm, hay que convertir el tiempo en segudos ya que est en microsegundos
// por eso se multiplica por 0.000001
float distancia = tiempo * 0.000001 * sonido / 2.0;
Serial.print(distancia);
Serial.print("cm");
Serial.println();
delay(500);
return distancia;
}
Lanzar alertas
Una vez tenemos la distancia calculada ya podemos decidir si estamos
en la situacin de enviar alerta o no. Siempre que la distancia est por
debajo del primer umbral (umbral del LED verde y el menos restrictivo),
lanzaremos la correspondiente alerta visual y sonora.
// Funcin que comprueba si hay que lanzar alguna alerta visual o sonora
void alertas(float distancia)
{
if (distancia < umbral1 && distancia >= umbral2)
{
// Encendemos el LED verde
digitalWrite(LEDVERDE, HIGH);
tone(BUZZER, 2000, 200);
}
else if (distancia < umbral2 && distancia > umbral3)
{
// Encendemos el LED amarillo
digitalWrite(LEDAMARILLO, HIGH);
tone(BUZZER, 2500, 200);
}
else if (distancia <= umbral3)
{
// Encendemos el LED rojo
digitalWrite(LEDROJO, HIGH);
tone(BUZZER, 3000, 200);
}
}
Cdigo final
Aqu te dejo todo el cdigo de este ejercicio para que lo utilices cmo y
cuando quiera. Recuerda que la mejor manera de aprender es
practicando as que no lo copies entero e intenta escribirlo tu mismo.
// Pines utilizados
#define LEDVERDE 2
#define LEDAMARILLO 3
#define LEDROJO 4
#define TRIGGER 5
#define ECHO 6
#define BUZZER 9
// Constantes
const float sonido = 34300.0; // Velocidad del sonido en cm/s
const float umbral1 = 30.0;
const float umbral2 = 20.0;
const float umbral3 = 10.0;
void setup() {
// Iniciamos el monitor serie
Serial.begin(9600);
void loop() {
// Preparamos el sensor de ultrasonidos
iniciarTrigger();
// Obtenemos la distancia
float distancia = calcularDistancia();
// Funcin que comprueba si hay que lanzar alguna alerta visual o sonora
void alertas(float distancia)
{
if (distancia < umbral1 && distancia >= umbral2)
{
// Encendemos el LED verde
digitalWrite(LEDVERDE, HIGH);
tone(BUZZER, 2000, 200);
}
else if (distancia < umbral2 && distancia > umbral3)
{
// Encendemos el LED amarillo
digitalWrite(LEDAMARILLO, HIGH);
tone(BUZZER, 2500, 200);
}
else if (distancia <= umbral3)
{
// Encendemos el LED rojo
digitalWrite(LEDROJO, HIGH);
tone(BUZZER, 3000, 200);
}
}
// Obtenemos la distancia en cm, hay que convertir el tiempo en segudos ya que est en microsegundos
// por eso se multiplica por 0.000001
float distancia = tiempo * 0.000001 * sonido / 2.0;
Serial.print(distancia);
Serial.print("cm");
Serial.println();
delay(500);
return distancia;
}
Conclusin
En este artculo hemos visto un ejemplo de la vida real, un sensor de
aparcamiento asistido. Gracias a placa como Arduino podemos
descubrir cmo funciona el mundo. Si te ha gustado, te agradecera que
lo compartieras, muchas gracias.
Este post tiene como propsito ayudar un poco a quienes estn empezando a
trabajar arduino y lo estn haciendo con ubuntu asi como tambin servirme de
recordatorio. ltimamente he trabajo en Arduino y al hacerlo me encontr con
algunos problemas en la combinacin Arduino-Ubuntu.
El primero de ellos que el puerto Serial se encontraba deshabilitado, al
momento de ingresar al IDE Arduino no detectaba el puerto a pesar de
encontrarse conectada la placa a la PC.
Para empezar con nuestro Arduino necesitaremos de su IDE con tal de poder
programar y subir el cdigo al dispositivo. A continuacin explicar como
instalarlo en una Ubuntu 14.04 pero seguramente funcionar en otras distros
derivadas de Ubuntu.
Descargando
Ejecutar el IDE
Una vez lo tenemos todo listo, vamos al ataque. Desde el Dash ejecuta el programa
Arduino.
Configurndolo
Primero necesitaremos seleccionar nuestra placa de Arduino con la que
trabajaremosEsto es importante ya que actualmente existe gran diversidad de
placas actualmente para ello con el IDE ejecutado nos dirigimos a: