Lab 6 - Semaforo Inteligente
Lab 6 - Semaforo Inteligente
1. MATERIALES
Arduino MEGA
Protoboard donde conectamos los componentes
6 resistencias 220 Ω
2 resistencias 10 kΩ
3 LEDs verdes
3 LEDs amarillos
3 LEDs rojos
2 pulsadores
Ya tenemos todo, solo hace falta sustituir los valores y calcular el valor
de la resistencia.
Otro componente que vamos a utilizar y que debemos conocer son los
pulsadores. Gracias a estos componentes podemos dejar pasar o no la
corriente. Al utilizar un pulsador con Arduino tenemos que tener ciertas
precauciones, sobre todo cuando la salida la conectamos a un pin digital,
como es el caso. Lo primero es ver un esquema general de un pulsador.
El típico tiene cuatro patillas. Están conectadas entre ellas dos a dos y
entre ellas forman el interruptor. Un pulsador no es más que un interruptor,
deja pasar la corriente o no.
4. RESISTENCIA PULL DOWN, EVITA INDETERMINACIONES EN LOS
PULSADORES
Seguramente hayas oído hablar de las resistencias pull down y pull up. Se
trata de dos configuraciones que nos permiten tener un estado bajo (0
Voltios) o estado alto (5 Voltios) cuando un cable está al aíre.
// Variables
bool activo1 = true; // Indica si el semáforo 1 está activo, de lo contrario será el semáforo
2
int tiempoCambio = 1500; // Tiempo de espera entre transición de LEDs
int tiempoEspera = 5000; // Tiempo de espera hasta comenzar transición
FUNCIÓN SETUP
void setup() {
// Iniciamos el monitor serie
Serial.begin(9600);
void loop() {
// Dependiendo del semáforo que tengamos activo
if (activo1)
{
// Está encendido el semáforo 1, comprobamos el pulsador 2
int valor2 = digitalRead(PULSADOR2);
// Semáforo 2 activo
activo1 = false;
}
}
else
{
// Está encendido el semáforo 1, comprobamos el pulsador 1
int valor1 = digitalRead(PULSADOR1);
// Semáforo 1 activo
activo1 = true;
}
}
}
void encenderSemaforo2()
{
// Apagamos semáforo 1
// Esperamos
delay(tiempoEspera);
// Encendemos semáforo 2
// Esperamos
delay(tiempoCambio);
void encenderSemaforo1()
{
// Apagamos semáforo 2
// Esperamos
delay(tiempoEspera);
// Esperamos
delay(tiempoCambio);
// Encendemos semáforo 1
// Esperamos
delay(tiempoCambio);
// Variables
bool activo1 = true; // Indica si el semáforo 1 está activo, de lo contrario será el
semáforo 2
int tiempoCambio = 1500; // Tiempo de espera entre transición de LEDs
int tiempoEspera = 5000; // Tiempo de espera hasta comenzar transición
void setup() {
// Iniciamos el monitor serie
Serial.begin(9600);
void loop() {
// Dependiendo del semáforo que tengamos activo
if (activo1)
{
// Está encendido el semáforo 1, comprobamos el pulsador 2
int valor2 = digitalRead(PULSADOR2);
// Semáforo 2 activo
activo1 = false;
}
}
else
{
// Está encendido el semáforo 1, comprobamos el pulsador 1
int valor1 = digitalRead(PULSADOR1);
// Semáforo 1 activo
activo1 = true;
}
}
}
void encenderSemaforo2()
{
// Apagamos semáforo 1
// Esperamos
delay(tiempoEspera);
// Esperamos
delay(tiempoCambio);
void encenderSemaforo1()
{
// Apagamos semáforo 2
// Esperamos
delay(tiempoEspera);
// Esperamos
delay(tiempoCambio);
// Encendemos semáforo 1
// Esperamos
delay(tiempoCambio);