Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Ingeniería Automotriz
P 53
Grupo: 2º
Nivel: 3
1. INFORME DE PROYECTO
a. Tema
b. Objetivo general
Nuestro objetivo es instalar semáforos de tres colores en cada extremo del carril único del puente.
Las luces permiten que el tráfico fluya sólo en una dirección a la vez. Cuando los sensores situados
en cualquier extremo del puente detectan un coche hará que espere mediante una luz roja. Las
luces cambiarán y permitirán que el tráfico fluya en la dirección opuesta.
EL ALGORITMO
Usaremos dos botones para simular los sensores del vehículo en cada extremo del puente. Cada
juego de luces tendrá LEDs rojos, amarillos y verdes. Inicialmente, el sistema permitirá que el
tráfico fluya de oeste a este, por lo que las luces orientadas a la oeste se pondrán a verde y las
luces de la del este se pondrán en rojo. Cuando un vehículo se acerca al puente y que acabará
pulsando el botón la luz es roja, entonces el sistema encenderá la luz en el lado opuesto de verde
a amarillo y a rojo, y luego tendrá que un período de tiempo establecido para permitir que
cualquier vehículo que se encuentre ya en el puente pueda terminar el cruce. A continuación, la
luz amarilla encendida en ell lado del vehículo en espera parpadeará como un aviso de
“prepararse” para el conductor y finalmente la luz cambiará a verde. La luz permanecerá verde
hasta que el coche se acerque al otro lado, momento en el que se repite el proceso.
LISTA DE COMPONENTES
EL ESQUEMA
Debido a que estamos controlando sólo seis LEDs y recibiendo la entrada de dos botones, el
diseño no será demasiado difícil. La siguiente figura nos muestra el esquema de nuestro proyecto.
Nuestro código comienza usando #define en para asociar los números de pin digital con etiquetas
para todos los LED utilizados, así como los dos botones. Tenemos LEDs rojos, amarillos y verdes
y un botón cada uno para cada lado del puente. La variable booleana trafficWest se utiliza para
hacer un seguimiento y comprobar que la forma en que el tráfico es en realizad de oeste a este, y
falso si es de este a oeste. La variable entera flowTime es el período mínimo de tiempo que los
vehículos tienen para cruzar el puente. Cuando un vehículo hace que se encienda una luz roja, el
sistema retrasa este período para dar el tiempo necesario a los del otro lado para cruzar el puente.
La variable entera variableDelay es el período de tiempo entre que hay para que los semáforos
cambien de verde a amarillo y a rojo. Antes de que el código entre en la sección void loop (), se
establece para el tráfico del flujo de oeste a este en la configuración de void setup() Una vez que
se está ejecutando, el programa no hace nada hasta que uno de los botones esté presionado.
Cuando se presiona el botón del lado este, la línea if (trafficWest == true) asegura que las luces
cambian sólo si el tráfico se dirige en la dirección opuesta. El resto de la sección de código se
compone de una simple secuencia de espera y luego encender y apagar varios LED para simular
el tráfico.
CÓDIGO DE SEMÁFORO
void setup() {
// Semáforo Arduino
// define the pins that the buttons and lights are connected to:
#define westButton 3
#define eastButton 13
#define westRed 2
#define westYellow 1
#define westGreen 0
#define eastRed 12
#define eastYellow 11
#define eastGreen 10
int flowTime = 10000; // amount of time to let traffic flow int changeDelay = 2000; // amount of
time between color changes
void setup() {
pinMode(westButton, INPUT);
pinMode(eastButton, INPUT);
pinMode(westRed, OUTPUT);
pinMode(westYellow, OUTPUT);
pinMode(westGreen, OUTPUT);
pinMode(eastRed, OUTPUT);
pinMode(eastYellow, OUTPUT);
pinMode(eastGreen, OUTPUT);
digitalWrite(westRed, LOW);
digitalWrite(westYellow, LOW);
digitalWrite(westGreen, HIGH);
digitalWrite(eastRed, HIGH);
digitalWrite(eastYellow, LOW);
digitalWrite(eastGreen, LOW);
void loop()
if ( trafficWest != true )
// to yellow to red
digitalWrite(eastYellow, HIGH);
delay(changeDelay);
digitalWrite(eastYellow, LOW);
digitalWrite(eastRed, HIGH);
delay(changeDelay);
traffic flow
if ( trafficWest == true )
digitalWrite(westGreen, LOW);
digitalWrite(westYellow, HIGH);
delay(changeDelay);
digitalWrite(westYellow, LOW);
digitalWrite(westRed, HIGH);
delay(changeDelay);
digitalWrite(eastYellow, LOW);
delay(yellowBlinkTime);
digitalWrite(eastYellow, HIGH);
delay(yellowBlinkTime);
digitalWrite(eastYellow, LOW);
// define the pins that the buttons and lights are connected to:
#define westButton 3
#define eastButton 13
#define westRed 2
#define westYellow 1
#define westGreen 0
#define eastRed 12
#define eastYellow 11
#define eastGreen 10
int flowTime = 10000; // amount of time to let traffic flow int changeDelay = 2000; // amount of
time between color changes
void setup() {
pinMode(westButton, INPUT);
pinMode(eastButton, INPUT);
pinMode(westRed, OUTPUT);
pinMode(westYellow, OUTPUT);
pinMode(westGreen, OUTPUT);
pinMode(eastRed, OUTPUT);
pinMode(eastYellow, OUTPUT);
pinMode(eastGreen, OUTPUT);
digitalWrite(westYellow, LOW);
digitalWrite(westGreen, HIGH);
digitalWrite(eastRed, HIGH);
digitalWrite(eastYellow, LOW);
digitalWrite(eastGreen, LOW);
void loop()
if ( trafficWest != true )
// to yellow to red
digitalWrite(eastYellow, HIGH);
delay(changeDelay);
digitalWrite(eastYellow, LOW);
digitalWrite(eastRed, HIGH);
delay(changeDelay);
traffic flow
{
if ( trafficWest == true )
digitalWrite(westGreen, LOW);
digitalWrite(westYellow, HIGH);
delay(changeDelay);
digitalWrite(westYellow, LOW);
digitalWrite(westRed, HIGH);
delay(changeDelay);
digitalWrite(eastYellow, LOW);
delay(yellowBlinkTime);
digitalWrite(eastYellow, HIGH);
delay(yellowBlinkTime);
digitalWrite(eastYellow, LOW);
digitalWrite(eastGreen, HIGH);
}
FOTOS