Semáforo.
Vamos a realizar con diodos la simulación de un semáforo de verdad controlado por arduino, para ello utilizaremos el montaje anterior y algo mas.
Objetivos:
Video del Montaje
Programación por Bloques con TINKERCAD
Solución Clásica
Programa en CC++
// Variables del programa
int pin0 = 0; // Rojo
int pin1 = 1; // Amarillo
int pin2 = 2; // Verde
int pin3 = 3; // Rojo
int pin4 = 4; // Amarillo
int pin5 = 5; // Verde
int timer1 = 2500;// Tiempo 1
int timer2 = 1500; // Tiempo 2
void setup(){
pinMode(pin0, OUTPUT); // Configuración de la placa, pines de salida.
pinMode(pin1, OUTPUT);
pinMode(pin2, OUTPUT);
pinMode(pin3, OUTPUT);
pinMode(pin4, OUTPUT);
pinMode(pin5, OUTPUT);
}
void loop() {
digitalWrite(pin0, HIGH); // Rojo 1º Semaforo y Verde 2º Semaforo
digitalWrite(pin5, HIGH);
delay(timer1);
digitalWrite(pin5, LOW); // 2º Semaforo Amarillo encendido y Verde apagado
digitalWrite(pin4, HIGH);
delay(timer2);
digitalWrite(pin4, LOW); // 2º Semaforo Amarillo apagado y Rojo
digitalWrite(pin3, HIGH);
digitalWrite(pin0, LOW); // 1º semaforo Rojo apagado y Verde encendido
digitalWrite(pin2, HIGH);
delay(timer1);
digitalWrite(pin2, LOW); // 1º semaforo Verde apagado y Amarillo encendido
digitalWrite(pin1, HIGH);
delay(timer2);
digitalWrite(pin1, LOW); // 1º semaforo Amarillo apagado y 2º Semaforo Rojo apagado
digitalWrite(pin3, LOW);
}
Otra solución
Programa:
int leds[]={0,1,2,3,4,5);
int tiempo1=2000;
int tiempo2=400;
int n;
void setup() {
for (n=0;n<5;n++) {
pinMode (leds[n],OUTPUT);
}
}
void loop () {
digitalWrite(pin0, HIGH); // Rojo 1º Semaforo y Verde 2º Semaforo
digitalWrite(pin5, HIGH);
delay(timer1);
digitalWrite(pin5, LOW); // 2º Semaforo Amarillo encendido y Verde apagado
digitalWrite(pin4, HIGH);
delay(timer2);
digitalWrite(pin4, LOW); // 2º Semaforo Amarillo apagado y Rojo
digitalWrite(pin3, HIGH);
digitalWrite(pin0, LOW); // 1º semaforo Rojo apagado y Verde encendido
digitalWrite(pin2, HIGH);
delay(timer1);
digitalWrite(pin2, LOW); // 1º semaforo Verde apagado y Amarillo encendido
digitalWrite(pin1, HIGH);
delay(timer2);
digitalWrite(pin1, LOW); // 1º semaforo Amarillo apagado y 2º Semaforo Rojo apagado
digitalWrite(pin3, LOW);
}