Sunteți pe pagina 1din 5

Tutorial - Cruce de semáforos LED

Objetivo: Montar un cruce de semáforos con un tiempo de espera de 6 segundos


antes del cambio. La secuencia hará una espera de 4 segundos en verde, 2 segundos
parpadeando, luego Amarillo y luego Rojo (6 segundos de nuevo). El botón lo
programaremos para que reinicie el contador cambiando de semáforo (similar a
cuando pulsamos el botón para cruzar en uno de estos).

Componentes a usar en este tutorial:


2 x Diodo LED Red
2 x Diodo LED Yellow
2 x Diodo LED Green
6 x Resistencia 220 ohmios
1 x Resistencia 10 Kohmios
1 x Arduino UNO
Cables
1 x Pulsador
En la imagen superior tenemos el diagrama del montaje. Podemos identificar los
LEDs, las resistencias y el botón pulsador.

Vamos a pasar a comentar las conexiones:

Para conectar nuestro Arduino UNO a la protoboard o BreadBoard sacaremos un


cable (cable rojo) del PIN 5V hasta nuestra fila positiva de la protoboard (+) y un cable
(cable azul) desde el PIN GND hasta nuestra fila (-) de la protoboard.

Para evitarnos problemas de conexión haremos ya el puente a mitad de la protoboard.


El cable azul de la imagen conecta la fila negativa para que todos los pines estén
unidos. Nota: esto no es obligado hacerlo pero suele ser útil para evitarnos problemas
de montaje.

Ahora que ya tenemos la protoboard preparada para seguir, procederemos a conectar


nuestro botón pulsador. Este componente está dotado de 4 terminales o "patas".
Podemos conectarlo como en la imagen haciendo de puente entre las bandas
verticales de la protoboard. A la pata de la izquierda le conectaremos la resistencia
de 10 Kohmios y la resistencia irá conectada a la fila negativa (GND) de la protoboard
mediante un cable.
De la pata de la derecha del pulsador saldrá un cable que conectara éste a la fila
positiva de la protoboard (5V).

Seguidamente procederemos a colocar los LEDs en la protoboard. Usando el polo


negativo del LED en la zona vertical de la protoboard y el positivo en la fila negativa de
la protoboard (GND) como indica la imagen. Del polo negativo del LED deberá ir
conectado la resistencia de 220 ohmios como muestra la imagen. Es recomendable
que su disposición también haga de puente entre las columnas verticales de la
protoboard.

Una vez tenemos montados y conectados los componentes, tan sólo nos
faltará conectar los LEDs y el botón a nuestro Arduino UNO. Estas conexiones las
haremos de la siguiente manera:

Los LEDs los conectaremos desde la salida de la resistencia hacia el controlador. (ver
imagen)

- LED Verde (derecha): PIN 2 del Arduino.


- LED Amarillo: PIN 3 (PWM)
- LED Rojo: PIN 4
- LED Verde: PIN 5
- LED Amarillo: PIN 6
- LED Rojo: PIN 7

Por último nos faltará conectar el botón a nuestro controlador. La pata superior
izquierda la conectaremos al PIN 8 del Arduino UNO. Cable negro de la imagen.
Ahora vayamos al programa:
/*
Programa para un par de semaforos que cambian de uno
a otro, y la implementacion de un boton para terminar
el tiempo de la luz verde y pasar al otro.
*/
// Declaramos la variable para el pin del boton
const int button = 8;

void setup() {
// Con un ciclo activamos los pines del 2 al 7 como salidas
for (int pin = 2; pin <= 7; pin++) {
pinMode(pin, OUTPUT);
}
// El pin del boton lo ponemos como entrada
pinMode(button, INPUT);
}

// Funcion para el primer semaforo y sus cambios de estado


void semaphoreOne() {
digitalWrite(2, HIGH);
int count = 0;
while (count < 30) {
// El ciclo esta en espera mientras el boton no es presionado
if (digitalRead(button) == true) {
break;
}
count++;
delay(200);
}
// Programamos el cambio entre semaforos. Cuando el LED tiene la posicion LOW estara
apagado, mientras que si esta en posicion HIGH estada encendido.
digitalWrite(2, LOW);
delay(500);
digitalWrite(2, HIGH);
delay(500);
digitalWrite(2, LOW);
delay(500);
digitalWrite(2, HIGH);
delay(500);
digitalWrite(2, LOW);
delay(500);
digitalWrite(2, HIGH);
delay(500);
digitalWrite(2, LOW);
delay(500);
digitalWrite(2, HIGH);
delay(500);
digitalWrite(2, LOW);
digitalWrite(3, HIGH);
delay(2500);
digitalWrite(3, LOW);
digitalWrite(4, HIGH);
digitalWrite(7, LOW);
// Mandamos a llamar al otro semaforo
semaphoreTwo();
}

// Funcion para el segundo semaforo y sus cambios de estado


void semaphoreTwo() {
digitalWrite(5, HIGH);
int count = 0;
while (count < 30) {
if (digitalRead(button) == true) {
break;
}
count++;
delay(200);
}
digitalWrite(5, LOW);
delay(500);
digitalWrite(5, HIGH);
delay(500);
digitalWrite(5, LOW);
delay(500);
digitalWrite(5, HIGH);
delay(500);
digitalWrite(5, LOW);
delay(500);
digitalWrite(5, HIGH);
delay(500);
digitalWrite(5, LOW);
delay(500);
digitalWrite(5, HIGH);
delay(500);
digitalWrite(5, LOW);
digitalWrite(6, HIGH);
delay(2500);
digitalWrite(6, LOW);
digitalWrite(7, HIGH);
digitalWrite(4, LOW);
// Mandamos a llamar al otro semaforo
semaphoreOne();
}

// Iniciamos nuestro semaforo


void loop() {
// Cambiamos el estado de todos los leds para
// que esten apagados todos al inicio
for (int pin = 2; pin <= 7; pin++) {
digitalWrite(pin, LOW);
}
// Prendemos el verde de un semaforo y el
// rojo del otro semaforo
digitalWrite(2, HIGH);
digitalWrite(7, HIGH);
// Iniciamos el primer semaforo
semaphoreOne();
}

/*Fuente: http://ramon-gzz.blogspot.mx/2012/04/semaforo-con-arduino-uno.html