Este tutorial trata de un cruce de semáforos controlado por arduino, para ello utilizaremos en el primer semáforo los pines 3 (led rojo), 4 (led amarillo), 5 (led verde), en el segundo semáforo utilizaremos los pines 6 (led rojo), 7 (led amarillo) y 8 (led verde). La secuencia de funcionamiento debe ser : Rojo1+Verde2(3 seg) Rojo1+Amarillo2(500ms) Verde1+Rojo2(3seg) Amarillo1+Rojo2(500ms) Objetivos Familiarizarse con el entorno de programación Aprender a declarar variables tipo lista de valores Materiales Arduino Picaro, Arduino UNO, Arduino Mega, cualquier arduino. Cable USB para Arduino 2 LEDs rojos 2 LEDs amarillos 2 LEDs verdes Jumpers o conectores Protoboards Vídeo actualizado Foto del circuito Como se puede ver en el vídeo, esta implementado el circuito y los dos semáforos funcionando. Circuito en Fritzing Circuito en Fritzing: Lo ideal es que implementen este circuito ya que los led soportan una corriente máxima, siempre se conectan los leds con resistencias de 220 ohm para no quemarlos, si fuera de menos resistencia lo mas probable es que se quemen los led o disminuya su vida útil. si nos ponemos en el caso contrario y le ponemos una resistencia mayor a 220 ohm comenzara a decrecer la luminosidad del led. Código para arduino Programa int leds[]={3,4,5,6,7,8};//semaforo 1 y 2 (rojo, amarillo, verde) int tiempo1=3000; int tiempo2=500; int n; void setup() { for (n=0;n<6;n++) { pinMode (leds[n],OUTPUT); }} void secuencia(){ digitalWrite (leds[1],LOW);//amarillo1 off digitalWrite (leds[0],HIGH);//rojo1 on digitalWrite (leds[3],LOW);//rojo2 off digitalWrite (leds[5],HIGH);//verde2 on delay (tiempo1); digitalWrite (leds[5],LOW);//verde2 off digitalWrite (leds[4],HIGH);//amarillo2 on delay (tiempo2); digitalWrite(leds[0],LOW);//rojo1 off digitalWrite (leds[2],HIGH);//verde1 on digitalWrite (leds[4],LOW);//amarillo2 off digitalWrite (leds[3],HIGH);//rojo2 on delay (tiempo1); digitalWrite (leds[2],LOW);//verde1 off digitalWrite(leds[1],HIGH);//amarillo on delay (tiempo2); } void loop () { secuencia(); } Nota: En el código que se muestra pueden modificar el tiempo, lo pueden modificar cambiando "int tiempo1=5000;" "int tiempo2=1500;" por otros valores que deseen por ejemplo para que sea mas realista lo pueden configurar con un tiempo1=20000 (20 seg) y tiempo2=5000 (5 segundos). La idea principal del programa es que el tiempo de luz verde + amarillo del semáforo 1 sea igual al tiempo de rojo del semáforo 2, y de la misma manera que el tiempo de rojo del semáforo 1 sea igual al tiempo del verde + amarillo del semáforo 2 En resumen Verde1+Amarillo1=Rojo2 Rojo1=Verde2+Amarillo2 Muchas gracias por visitar mi blog y si tienen mas consultas, consejo, acotación pueden hacerlas por medio de este mismo blog o por medio de mi correo electrónico [email protected]