Mostrando entradas con la etiqueta Barrera de Parking. Mostrar todas las entradas
Mostrando entradas con la etiqueta Barrera de Parking. Mostrar todas las entradas

miércoles, 12 de noviembre de 2014

Barrera de Parking con Arduino Leonardo

El presente proyecto simula la barrera de un parking con Arduino Leonardo.  

  montaje_real_jddmontaje_jdd   





 El programa es el siguiente:

 // Barrera de entrada a Parking
// Ejemplo elaborado por Jesús Díaz Díaz
// El sistema simula la barrera de entrada a un parking
// Al comienzo del programa la barrera está baja y el led ROJO encendido
// Cuando un sujeto aprieta el pulsador, la barrera comienza a subir y en la parte alta se enciende el led VERDE
// Al mismo tiempo se oye un sonido que cambia de tono cuando está a punto de bajar la barrera
// Se apaga y comienza a bajar la barrera y se enciende el LED rojo
#include <Servo.h> // incluyo la librería servo.h
Servo miservo; // Definimos “miservo” para controlar un servomotor
int ledverde = 12; // utilizo el pin 12 para led verde
int ledrojo = 11; // utilizo el pin 11 para led rojo
int salidaaudio = 6;// utilizo el pin 6 emitir un tono de audio
int pulsador = 2; // utilizo el pin 2 como botón de entrada
int pos = 0; // variable para almacenar la posición del servo
int ESTADOpulsador = 0; // variable para almacenar la lectura del estado del pulsador
void setup()
{
miservo.attach(9); // Convierte el pin 9 en el controlador (driver) del servo denominado “miservo”
// Inicializa los pin digitales como salida
pinMode(ledverde, OUTPUT);
pinMode(ledrojo, OUTPUT);
pinMode(salidaaudio, OUTPUT);
// defino el pulsador como entrada:
pinMode(pulsador, INPUT);
miservo.write(0); // Fija en el servo la posición 0 grados y hace que inicialmente la barrera esté baja
}
void loop()
{
digitalWrite(ledverde, LOW); // inicialmente led verde apagado
digitalWrite(ledrojo, HIGH); // inicialmente led rojo encendido
ESTADOpulsador = digitalRead(pulsador); // leo el estado del botón del pulsador y lo guardo en la variable ESTADOpulsador
if (ESTADOpulsador == HIGH) { // Si ESTADOpulsador está activo (HIGH) comienza a levantar la barrera
for(pos = 0; pos < 90; pos += 1) // La variable “pos” se incrementa desde 0 a 90 grados
{ // en pasos de 1 grado
miservo.write(pos); // indica al servo que vaya la la posición almacenada en la variable “pos”
delay(20); // espera 20ms hasta que el servo alcance la posición
}
digitalWrite(ledrojo, LOW); // con la barrera subida el led rojo se apaga
digitalWrite(ledverde, HIGH); // turn the LED on (HIGH is the voltage level)
//Emite sonido que cambia su frecuencia unos segundos antes de comenzar a bajar como aviso
// sintaxis de tone: tone(pin, frequency)
tone(salidaaudio, 440);
delay(4000);
noTone(salidaaudio);
tone(salidaaudio, 840);
delay(500);
noTone(salidaaudio);
tone(salidaaudio, 440);
delay(500);
noTone(salidaaudio);
tone(salidaaudio, 840);
delay(500);
noTone(salidaaudio);
tone(salidaaudio, 440);
delay(500);
noTone(salidaaudio);
tone(salidaaudio, 840);
delay(500);
noTone(salidaaudio);
tone(salidaaudio, 440);
delay(500);
noTone(salidaaudio);
// Se termina el sonido de aviso
digitalWrite(ledverde, LOW); // se apaga el led verde
digitalWrite(ledrojo, HIGH); // se enciendo el led rojo
for(pos = 90; pos>=1; pos-=1) // comienza a bajar la barrera desde la posición 90 hasta 0 grados
{
miservo.write(pos); // indica al servo que vaya a la posición almacenada en la variable
delay(20); // espera 20ms para que el servo alcance la posición
}
}
}

esquema_jdd