PRACTICA I Semaforos
PRACTICA I Semaforos
PRACTICA I Semaforos
PARCIAL
PRACTICA I: SEMAFOROS
OBJETIVOS:
Utilizar el programa Proteus para desarrollar, disear y simular proyectos
avanzados que incluye el uso de microcontroladores y dispositivos programables
as como aprender a realizar el diseo PCB de los mismos.
DESARROLLO:
En esta prctica se trata de crear una secuencia de LEDs de colores rojo amarillo y
verde, simulando el funcionamiento de cuatro semforos para controlar un cruce
como el de la figura 1.
Figura 1 Figura 2
Los semforos sern armados en pequeas tarjetas con su conector para enviar las
seales desde nuestro Arduino, tal como se observa en la figura 2
Debido a que la tarjeta de Arduino no tiene suficientes conexiones de tierra hay que
hacer una tarjeta extra que simplemente nos sirva para unir todas las conexiones
de tierra y conectar slo una al Arduino. A continuacin ms imgenes que ilustran
como debe realizarse los semforos y tambin como deben conectarse al arduino.
Al final se escribe el cdigo que bien podra tener algunos errores pero el alumno
debe corregirlo de tal manera que la simulacin funcione correctamente.
1
PROF. GALILEO VELAZQUEZ CANSECO
PRACTICAS DE DISEO AVANZADO 3er. PARCIAL
2
PROF. GALILEO VELAZQUEZ CANSECO
PRACTICAS DE DISEO AVANZADO 3er. PARCIAL
3
PROF. GALILEO VELAZQUEZ CANSECO
PRACTICAS DE DISEO AVANZADO 3er. PARCIAL
SKETCH
(Este cdigo se puede mejorar usando funciones, para quien lo modifique
usando menos instrucciones se tomara en cuenta con puntos extras)
// Constantes digitalWrite(amarillo_semaforo1,LOW);
const int RETARDO_VERDE = 4000; digitalWrite(verde_semaforo2,LOW);
const int RETARDO_PARPADEO_VERDE = digitalWrite(rojo_semaforo2,HIGH);
500;
digitalWrite(amarillo_semaforo2,LOW);
const int RETARDO_AMARILLO = 2000;
digitalWrite(verde_semaforo3,LOW);
digitalWrite(rojo_semaforo3,HIGH);
// Conexiones
digitalWrite(amarillo_semaforo3,LOW);
int verde_semaforo1 = 2;
digitalWrite(verde_semaforo4,LOW);
int amarillo_semaforo1 = 3;
digitalWrite(rojo_semaforo4,HIGH);
int rojo_semaforo1 = 4;
digitalWrite(amarillo_semaforo4,LOW);
int verde_semaforo2 = 5;
int amarillo_semaforo2 = 6;
pinMode(verde_semaforo1,OUTPUT);
int rojo_semaforo2 = 7;
pinMode(amarillo_semaforo1,OUTPUT);
int verde_semaforo3 = 8;
pinMode(rojo_semaforo1,OUTPUT);
int amarillo_semaforo3 = 9;
pinMode(verde_semaforo2,OUTPUT);
int rojo_semaforo3 = 10;
pinMode(amarillo_semaforo2,OUTPUT);
int verde_semaforo4 = 11;
pinMode(rojo_semaforo2,OUTPUT);
int amarillo_semaforo4 = 12;
pinMode(verde_semaforo3,OUTPUT);
int rojo_semaforo4 = 13;
pinMode(amarillo_semaforo3,OUTPUT);
pinMode(rojo_semaforo3,OUTPUT);
void setup() {
pinMode(verde_semaforo4,OUTPUT);
// Inicializacin
pinMode(amarillo_semaforo4,OUTPUT);
digitalWrite(verde_semaforo1,LOW);
pinMode(rojo_semaforo4,OUTPUT);
digitalWrite(rojo_semaforo1,HIGH);
}
4
PROF. GALILEO VELAZQUEZ CANSECO
PRACTICAS DE DISEO AVANZADO 3er. PARCIAL
digitalWrite(amarillo_semaforo2,LOW);
void loop() { digitalWrite(rojo_semaforo2,LOW);
// Secuencia para semaforo 1 delay(RETARDO_VERDE);
digitalWrite(verde_semaforo1,HIGH); digitalWrite(verde_semaforo2,LOW);
digitalWrite(amarillo_semaforo1,LOW); delay(RETARDO_PARPADEO_VERDE);
digitalWrite(rojo_semaforo1,LOW); digitalWrite(verde_semaforo2,HIGH);
delay(RETARDO_VERDE); delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo1,LOW); digitalWrite(verde_semaforo2,LOW);
delay(RETARDO_PARPADEO_VERDE); delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo1,HIGH); digitalWrite(verde_semaforo2,HIGH);
delay(RETARDO_PARPADEO_VERDE); delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo1,LOW); digitalWrite(verde_semaforo2,LOW);
delay(RETARDO_PARPADEO_VERDE); delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo1,HIGH); digitalWrite(verde_semaforo2,HIGH);
delay(RETARDO_PARPADEO_VERDE); delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo1,LOW); digitalWrite(verde_semaforo2,LOW);
delay(RETARDO_PARPADEO_VERDE); digitalWrite(amarillo_semaforo2,HIGH);
digitalWrite(verde_semaforo1,HIGH); delay(RETARDO_AMARILLO);
delay(RETARDO_PARPADEO_VERDE); digitalWrite(amarillo_semaforo2,LOW);
digitalWrite(verde_semaforo1,LOW); digitalWrite(rojo_semaforo2,HIGH);
digitalWrite(amarillo_semaforo1,HIGH);
delay(RETARDO_AMARILLO);
digitalWrite(amarillo_semaforo1,LOW); // Secuencia semaforo 3
digitalWrite(rojo_semaforo1,HIGH); digitalWrite(verde_semaforo3,HIGH);
digitalWrite(amarillo_semaforo3,LOW);
// Secuencia semaforo 2 digitalWrite(rojo_semaforo3,LOW);
digitalWrite(verde_semaforo2,HIGH); delay(RETARDO_VERDE);
5
PROF. GALILEO VELAZQUEZ CANSECO
PRACTICAS DE DISEO AVANZADO 3er. PARCIAL
digitalWrite(verde_semaforo3,LOW); delay(RETARDO_PARPADEO_VERDE);
delay(RETARDO_PARPADEO_VERDE); digitalWrite(verde_semaforo4,LOW);
digitalWrite(verde_semaforo3,HIGH); delay(RETARDO_PARPADEO_VERDE);
delay(RETARDO_PARPADEO_VERDE); digitalWrite(verde_semaforo4,HIGH);
digitalWrite(verde_semaforo3,LOW); delay(RETARDO_PARPADEO_VERDE);
delay(RETARDO_PARPADEO_VERDE); digitalWrite(verde_semaforo4,LOW);
digitalWrite(verde_semaforo3,HIGH); delay(RETARDO_PARPADEO_VERDE);
delay(RETARDO_PARPADEO_VERDE); digitalWrite(verde_semaforo4,HIGH);
digitalWrite(verde_semaforo3,LOW); delay(RETARDO_PARPADEO_VERDE);
delay(RETARDO_PARPADEO_VERDE); digitalWrite(verde_semaforo4,LOW);
digitalWrite(verde_semaforo3,HIGH); digitalWrite(amarillo_semaforo4,HIGH);
delay(RETARDO_PARPADEO_VERDE); delay(RETARDO_AMARILLO);
digitalWrite(verde_semaforo3,LOW); digitalWrite(amarillo_semaforo4,LOW);
digitalWrite(amarillo_semaforo3,HIGH); digitalWrite(rojo_semaforo4,HIGH);
delay(RETARDO_AMARILLO); }
digitalWrite(amarillo_semaforo3,LOW);
digitalWrite(rojo_semaforo3,HIGH);
// Secuencia semaforo 4
digitalWrite(verde_semaforo4,HIGH);
digitalWrite(amarillo_semaforo4,LOW);
digitalWrite(rojo_semaforo4,LOW);
delay(RETARDO_VERDE);
digitalWrite(verde_semaforo4,LOW);
delay(RETARDO_PARPADEO_VERDE);
digitalWrite(verde_semaforo4,HIGH);
6
PROF. GALILEO VELAZQUEZ CANSECO