conclusionesvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del...

68
63 CONCLUSIONES Una vez realizado el estudio, análisis, diseño, y desarrollo del sistema de control para la gestión vehicular a través de semáforos en línea mediante captación de señales ultrasonido, se detallan las conclusiones de las 6 fases aplicadas en el desarrollo de esta investigación, soportado por una metodología diseñada por Fitzgerald y Savant. En primer lugar, con el objetivo de cumplir con los requerimientos y especificaciones necesarias se analizó la situación actual siendo utilizada la observación directa como tecnica de recolección de datos, con motivo de juntar la información necesaria para elaborar un plan detallado para aliviar el congestionamiento de las vías terrestres, capacitando los semáforos de manera que sean capaces de generar respuestas automáticas a irregularidades que se puedan presentar en dichas vías. Además, se investigó sobre la situación actual de los semáforos en la ciudad de Maracaibo, dicha investigación arrojó como resultado un déficit en el mantenimiento de los semaforos, asi como tambiénuna tecnología insuficientemente capacitada para la implementación de sistema de control como el planteado en el presente estudio. Para cumplir con el segundo objetivo, se definieron los dispositivos e instrumentos que fueron utilizados en este proyecto,como los Arduinos UNO R3, resistencias, entre otros, luego de conocer los instrumentos se procedió al diseño de este sistema de control y la programación adecuada de cada dispositivo. De acuerdo al 3er objetivo, se generaron los diagramas, tanto de flujos como de circuitos,para dar a conocer el funcionamiento de los arduinos programados a los semáforos en línea.

Upload: others

Post on 10-Aug-2021

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

63

CONCLUSIONES

Una vez realizado el estudio, análisis, diseño, y desarrollo del sistema

de control para la gestión vehicular a través de semáforos en línea

mediante captación de señales ultrasonido, se detallan las conclusiones

de las 6 fases aplicadas en el desarrollo de esta investigación, soportado

por una metodología diseñada por Fitzgerald y Savant.

En primer lugar, con el objetivo de cumplir con los requerimientos y

especificaciones necesarias se analizó la situación actual siendo utilizada

la observación directa como tecnica de recolección de datos, con motivo

de juntar la información necesaria para elaborar un plan detallado para

aliviar el congestionamiento de las vías terrestres, capacitando los

semáforos de manera que sean capaces de generar respuestas

automáticas a irregularidades que se puedan presentar en dichas vías.

Además, se investigó sobre la situación actual de los semáforos en la

ciudad de Maracaibo, dicha investigación arrojó como resultado un déficit

en el mantenimiento de los semaforos, asi como tambiénuna tecnología

insuficientemente capacitada para la implementación de sistema de

control como el planteado en el presente estudio.

Para cumplir con el segundo objetivo, se definieron los dispositivos e

instrumentos que fueron utilizados en este proyecto,como los Arduinos

UNO R3, resistencias, entre otros, luego de conocer los instrumentos se

procedió al diseño de este sistema de control y la programación adecuada

de cada dispositivo.

De acuerdo al 3er objetivo, se generaron los diagramas, tanto de

flujos como de circuitos,para dar a conocer el funcionamiento de los

arduinos programados a los semáforos en línea.

Page 2: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

64

No obstante, se comenzó la instalación y montaje del prototipo

representado en maqueta de acuerdo al cuarto objetivo, ya ajustado para

dicho prototipo se comenzó a hacer el seguimiento y las pruebas para

este sistema de control, el cual fue sometido a diversas pruebas en

diferentes escenarios (4), siguiendo con estas observaciones hasta que

el sistema funcionó de la manera esperada.

Finalmente se determinó con el desarrollo de un sistema de control

para gestión vehicular a través de semáforos en línea mediante

captación de señales ultrasonido, mejorara el tiempo de respuesta de los

semáforos evitando el congestionamiento vehicular de las vías

beneficiando a los conductores y pasajeros en el tiempo de llegada a sus

destinos. Además, gracias a que estos semáforos están en constante

comunicación enviando y recibiendo información de datos, esto permitirá

negar la participación de autoridades competentes ya que este sistema

de control de forma automatizada realizara las respuestas en tiempo real

según el escenario ocurrido.

Page 3: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

65

RECOMENDACIONES

Luego de haber realizado el desarrollo del sistema de control para

gestión vehicular a través de semáforos en línea mediante captación de

señales ultrasonido, se recomienda que este sistema deba estar en

constante observación, puesto que, requiere de un mantenimiento

constante y actualización tanto del software como de los dispositivos

electrónicos, para asegurar el cumplimiento de su función con un

excelente desempeño.

Tambien se recomienda la creación de una interfaz integrada o HMI

(Human Machine Interface) que permita visualizar de forma remota en un

lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de

la red que muestre el estado de cada semáforo o si existe alguna falla o

averia en algún semáforo y en que localidad.

Por otro lado se recomienda, contar con un personal calificado y

capacitado en las áreas de electrónica y computación, para garantizar el

manejo y mantenimiento del sistema de control optimizando su

funcionamiento. Se sugiere realizar cursos de capacitación en cuanto a

los instrumentos utilizados en este sistema y también el manejo

apropiado para monitorear y manipular el software implementado.

Por último se propone con fines de incrementar el valor de esta

investigación, contactar al gobierno estatal para la implementación de

este sistema a nivel regional y/o nacional para el beneficio de los

integrantes de cada ciudad o estado del país.

Page 4: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

66

REFERENCIAS BIBLIOGRAFICAS

LIBROS Angulo U., José (2003), Microcontroladores PIC, Diseño practico de

aplicaciones. McGraw-Hill. Madrid, España. Bavaresco, A. (2006),Proceso Metodológico en la Investigación.

Universidad del Zulia, Maracaibo, Venezuela. Bonsiepe, Gui (1999),Del Objeto a la Interfase.Editorial Infinitos, Buenos

Aires, Argentina. Cal, R. y Reyes, M. (2007),Ingeniería de tránsito. 8va Edición. Editorial

Alfaomega. Mexico FitzGerald (2009).Business Data Communications & Networking.10ma Edicion. Wikey & Sons, Inc. Floyd, Thomas (2000),Fundamentos de Sistemas Digitales. Prentice Hall 7ma Edición Hurtado (2010), Metodología de la Investigación Holística. Editorial

SYPAL, Caracas, Venezuela. Ogata, K. (2005),Ingeniería de Control Moderna.4ta. Edición Pearson

Educación. Madrid, España. Ordinas, José María (2008), Protocolos y Aplicaciones de Internet.

Pearson Educación, Madrid, España. Sampieri(2010), Metodología de la Investigación.MacGraw-

Hill/Interamericana. Savant, C. (2000), Diseño Electrónico, Circuitos y Sistemas. 4ta Edición. Silva, J. (1996), Diccionario de multimedia.MacGraw– Hill Tamayo y Tamayo (1996),El Proceso de Investigación Científica. 4ta.

Edición. Limusa Noriega Editories. Tanenbaum S. Andrew (2003), Redes de Computadoras. 4ta. Edición.

Pearson Educación. Ciudad de México, México.

Page 5: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

67

Vásquez Gil, P. (2010), Redes y Transmisión de Datos. Publicaciones Universidad de Alicante.

TESIS DE GRADO Arévalo y Pírela (2009).Sistema de control de distancia para vehículos

automotrices. Trabajo Especial de Grado (Ingeniería en Electrónica, Mención: Automatización y Control). Universidad Dr. Rafael Belloso Chacín.

Antequera y García (2013). Estudio de viabilidad para la generación de

energía eléctrica en semáforos inteligentes por medio de sistema de paneles de energía solar como alternativa para el ahorro energético. Trabajo Especial de Grado (Ingeniería Industrial). Universidad Dr. Rafael Belloso Chacín.

Deternoz y Fernández (2006). Sistema de gestión y monitoreo del tránsito

a través de semáforos inteligentes. Trabajo Especial de Grado (Ingeniería en Informática). Universidad Católica Andrés Bello.

FUENTES ELECTRONICAS ArduinoTeam (2015) Herramientas y Usos del Arduino Extraído de http://www.arduino.cc (Consulta: 2016, Noviembre)

Page 6: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

Anexos

Page 7: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

PROGRAMACION DEL

SEMAFORO SERVIDOR

Page 8: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

70

#include<SoftwareSerial.h> #include <SPI.h> #include <Ethernet.h> #include<NewPing.h> /*CONFIGURACION DE LOS PARAMETROS ETHERNET SERVIDOR*/ bytemac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // byteip[] = { 192, 168, 1, 123 }; OTRA FORMA DE ESCRIBIR LA DIRECCIÓN IP IPAddressip(192, 168, 0, 125); // DIRECCIÓN IP ASIGNADA AL SERVIDOR bytegateway[] = { 192, 168, 0, 1 }; // LA DIRECCIÓN DE PUERTA DE ENLACE AL ROUTER bytesubnet[] = { 255, 255, 255, 0 }; // LA MÁSCARA SUBNET DEL ROUTER EthernetServer server = EthernetServer(12535); // CREA UN SERVIDOR QUE ESTA ATENTO A CONEXIONES ENTRANTES POR UN PUERTO DADO /*Aqui se configuran los pines donde debemos conectar el sensor*/ #define TRIGGER_PIN 6 #define ECHO_PIN 5 #define MAX_DISTANCE 35 // CENTIMETROS MAXIMOS A MEDIR #define TRIGGER_PIN2 9 #define ECHO_PIN2 8 #define MAX_DISTANCE2 35 // CENTIMETROS MAXIMOS A MEDIR /*Crear el objeto de la clase NewPing*/ NewPingsonar(TRIGGER_PIN, ECHO_PIN, MAX_DISTANCE); NewPingsonar2(TRIGGER_PIN2, ECHO_PIN2, MAX_DISTANCE2); SoftwareSerialmySerial(2,3); // PINES QUE SERVIRAN DE COMUNICACION SERIAL ENTRE DOS ARDUINOS voidsetup() { mySerial.begin(9600); // ACTIVA LA COMUNICACION ENTRE LOS DOS ARDUINOS Serial.begin(9600); // ACTVIA LA COMUNICACION ENTRE ARDUINO Y PC Ethernet.begin(mac,ip,gateway,subnet); // ACTIVA EL MODULO ETHERNET pinMode(17, OUTPUT); // ROJO pinMode(18, OUTPUT); // AMARILLO pinMode(19, OUTPUT); // VERDE

Page 9: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

71

pinMode(7, OUTPUT); // LED ALERTA } void loop() { digitalWrite(19, HIGH); Serial.println("VERDE ENCENDIO"); int time1 = millis(); int time2 = millis(); while (time2 - time1 <= 10000){ //TIEMPO DE VERDE NORMALMENTE EN MILISEGUNDOS intuS = sonar.ping_median(); Serial.print("Distancia 1.1: "); Serial.print(uS / US_ROUNDTRIP_CM); Serial.println("cm"); int distances11 = uS / US_ROUNDTRIP_CM; int uS2 = sonar2.ping_median(); Serial.print("Distancia 2.1: "); Serial.print(uS2 / US_ROUNDTRIP_CM); Serial.println("cm"); int distances21 = uS2 / US_ROUNDTRIP_CM; delay(1000); uS = sonar.ping_median(); Serial.print("Distancia 1.2: "); Serial.print(uS / US_ROUNDTRIP_CM); Serial.println("cm"); int distances12 = uS / US_ROUNDTRIP_CM; uS2 = sonar2.ping_median(); Serial.print("Distancia 2.2: "); Serial.print(uS2 / US_ROUNDTRIP_CM); Serial.println("cm"); int distances22 = uS2 / US_ROUNDTRIP_CM; delay(1000); uS = sonar.ping_median(); Serial.print("Distancia 1.3: "); Serial.print(uS / US_ROUNDTRIP_CM);

Page 10: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

72

Serial.println("cm"); int distances13 = uS / US_ROUNDTRIP_CM; uS2 = sonar2.ping_median(); Serial.print("Distancia 2.3: "); Serial.print(uS2 / US_ROUNDTRIP_CM); Serial.println("cm"); int distances23 = uS2 / US_ROUNDTRIP_CM; if (distances11 || distances12 || distances13 || distances21 || distances22 || distances23 >= 6) { if ((distances11 && distances12 && distances13 && distances21 && distances22 && distances23 >= 6) && (distances11 == distances12) && (distances12 == distances13) && (distances21 == distances22) && (distances22 == distances23)) { time2 = millis(); while (time2 - time1 <=10000) { time2 = millis(); } Serial.println("10 Segundos mas al Verde"); mySerial.write('H'); int time3 = millis(); int time4 = millis(); while (time4 - time3 <= 10000){ // TIEMPO A DAR SI AMBOS CARRILES ESTAN QUEDADOS EN MILISEGUNDOS time4 = millis(); digitalWrite(7,HIGH); } digitalWrite(7,LOW); goto final; } else { if ((distances11 && distances12 && distances13 >= 6) && (distances11 == distances12) && (distances12 == distances13)) { time2 = millis(); while (time2 - time1 <=10000) { time2 = millis(); } Serial.println("5 Segundos mas al Verde"); mySerial.write('L'); int time3 = millis(); int time4 = millis();

Page 11: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

73

while (time4 - time3 <= 5000){ // TIEMPO A DAR SI UN CARRIL ESTA QUEDADO time4 = millis(); digitalWrite(7,HIGH); } digitalWrite(7,LOW); goto final; } if ((distances21 && distances22 && distances23 >= 6) && (distances21 == distances22) && (distances22 == distances23)){ time2 = millis(); while (time2 - time1 <=10000) { time2 = millis(); } Serial.println("5 Segundos mas al Verde"); mySerial.write('L'); int time3 = millis(); int time4 = millis(); while (time4 - time3 <= 5000){ // TIEMPO A DAR SI UN CARRIL ESTA QUEDADO time4 = millis(); digitalWrite(7,HIGH); } digitalWrite(7,LOW); goto final; } else { intuS = sonar.ping_median(); Serial.print("Distancia 1.4: "); Serial.print(uS / US_ROUNDTRIP_CM); Serial.println("cm"); int distances14 = uS / US_ROUNDTRIP_CM; int uS2 = sonar2.ping_median(); Serial.print("Distancia 2.4: "); Serial.print(uS2 / US_ROUNDTRIP_CM); Serial.println("cm"); int distances24 = uS2 / US_ROUNDTRIP_CM; delay(1000); uS = sonar.ping_median(); Serial.print("Distancia 1.5: "); Serial.print(uS / US_ROUNDTRIP_CM);

Page 12: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

74

Serial.println("cm"); int distances15 = uS / US_ROUNDTRIP_CM; uS2 = sonar2.ping_median(); Serial.print("Distancia 2.5: "); Serial.print(uS2 / US_ROUNDTRIP_CM); Serial.println("cm"); int distances25 = uS2 / US_ROUNDTRIP_CM; delay(1000); uS = sonar.ping_median(); Serial.print("Distancia 1.6: "); Serial.print(uS / US_ROUNDTRIP_CM); Serial.println("cm"); int distances16 = uS / US_ROUNDTRIP_CM; uS2 = sonar2.ping_median(); Serial.print("Distancia 2.6: "); Serial.print(uS2 / US_ROUNDTRIP_CM); Serial.println("cm"); int distances26 = uS2 / US_ROUNDTRIP_CM; if (distances14 || distances15 || distances16 || distances24 || distances25 || distances26 >= 6) { if ((distances14 && distances15 && distances16 && distances24 && distances25 && distances26 >= 6) && (distances14 == distances15) && (distances15 == distances16) && (distances24 == distances25) && (distances25 == distances26)) { time2 = millis(); while (time2 - time1 <=10000) { time2 = millis(); } Serial.println("10 Segundos mas al Verde"); mySerial.write('H'); int time3 = millis(); int time4 = millis(); while (time4 - time3 <= 10000){ // TIEMPO A DAR SI AMBOS CARRILES ESTAN QUEDADOS time4 = millis(); digitalWrite(7,HIGH); } digitalWrite(7,LOW); goto final;

Page 13: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

75

} else { if((distances14 && distances15 && distances16>= 6) && (distances14 == distances15) && (distances15 == distances16)) { time2 = millis(); while (time2 - time1 <=10000) { time2 = millis(); } Serial.println("5 Segundos mas al Verde"); mySerial.write('L'); int time3 = millis(); int time4 = millis(); while (time4 - time3 <= 5000){ // TIEMPO A DAR SI UN CARRIL ESTA QUEDADO time4 = millis(); digitalWrite(7,HIGH); } digitalWrite(7,LOW); goto final; } if((distances24 && distances25 && distances26 >= 6) && (distances24 == distances25) && (distances25 == distances26)) { time2 = millis(); while (time2 - time1 <=10000) { time2 = millis(); } Serial.println("5 Segundos mas al Verde"); mySerial.write('L'); int time3 = millis(); int time4 = millis(); while (time4 - time3 <= 5000){ // TIEMPO A DAR SI UN CARRIL ESTA QUEDADO time4 = millis(); digitalWrite(7,HIGH); } digitalWrite(7,LOW); goto final; } else { intuS = sonar.ping_median();

Page 14: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

76

Serial.print("Distancia 1.7: "); Serial.print(uS / US_ROUNDTRIP_CM); Serial.println("cm"); int distances17 = uS / US_ROUNDTRIP_CM; int uS2 = sonar2.ping_median(); Serial.print("Distancia 2.7: "); Serial.print(uS2 / US_ROUNDTRIP_CM); Serial.println("cm"); int distances27 = uS2 / US_ROUNDTRIP_CM; delay(1000); uS = sonar.ping_median(); Serial.print("Distancia 1.8: "); Serial.print(uS / US_ROUNDTRIP_CM); Serial.println("cm"); int distances18 = uS / US_ROUNDTRIP_CM; uS2 = sonar2.ping_median(); Serial.print("Distancia 2.8: "); Serial.print(uS2 / US_ROUNDTRIP_CM); Serial.println("cm"); int distances28 = uS2 / US_ROUNDTRIP_CM; delay(1000); uS = sonar.ping_median(); Serial.print("Distancia 1.9: "); Serial.print(uS / US_ROUNDTRIP_CM); Serial.println("cm"); int distances19 = uS / US_ROUNDTRIP_CM; uS2 = sonar2.ping_median(); Serial.print("Distancia 2.9: "); Serial.print(uS2 / US_ROUNDTRIP_CM); Serial.println("cm"); int distances29 = uS2 / US_ROUNDTRIP_CM; if (distances17 || distances18 || distances19 || distances27 || distances28 || distances29 >= 6) { if ((distances17 && distances18 && distances19 && distances27 && distances28 && distances29 >= 6) && (distances17 == distances18)

Page 15: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

77

&&(distances18 == distances19) && (distances27 == distances28) && (distances28 == distances29)) { time2 = millis(); while (time2 - time1 <=10000) { time2 = millis(); } Serial.println("10 Segundos mas al Verde"); mySerial.write('H'); int time3 = millis(); int time4 = millis(); while (time4 - time3 <= 10000){ // TIEMPO A DAR SI AMBOS CARRILES ESTAN QUEDADOS time4 = millis(); digitalWrite(7,HIGH); } digitalWrite(7,LOW); goto final; } else { if ((distances17 && distances18 && distances19 >= 6) && (distances17 == distances18) && (distances18 == distances19)) { time2 = millis(); while (time2 - time1 <=10000) { time2 = millis(); } Serial.println("5 Segundos mas al Verde"); mySerial.write('L'); int time3 = millis(); int time4 = millis(); while (time4 - time3 <= 5000){ // TIEMPO A DAR SI UN CARRIL ESTA QUEDADO time4 = millis(); digitalWrite(7,HIGH); } digitalWrite(7,LOW); goto final; } if ((distances27 && distances28 && distances29 >= 6) && (distances27 == distances28) && (distances28 == distances29)) { time2 = millis();

Page 16: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

78

while (time2 - time1 <=10000) { time2 = millis(); } Serial.println("5 Segundos mas al Verde"); mySerial.write('L'); int time3 = millis(); int time4 = millis(); while (time4 - time3 <= 5000){ // TIEMPO A DAR SI UN CARRIL ESTA QUEDADO time4 = millis(); digitalWrite(7,HIGH); } digitalWrite(7,LOW); goto final; } } } } } } } } } time2 = millis(); } final: digitalWrite(19,LOW); delay(20); Serial.println("VERDE APAGADO"); digitalWrite(18,HIGH); Serial.println("AMARILLO PRENDIDO"); delay(3000); digitalWrite(18,LOW); delay(20);

Page 17: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

79

Serial.println("AMARILLO APAGADO"); digitalWrite(17,HIGH); Serial.println("ROJO ENCENDIDO"); delay(10000); digitalWrite(17,LOW); delay(20); Serial.println("ROJO APAGADO

Page 18: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

PROGRAMACION DEL SEMAFORO ESCLAVO

Page 19: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

81

#include<SPI.h> #include <SoftwareSerial.h> #include <Ethernet.h> #include<NewPing.h> /*CONFIGURACION DE LOS PARAMETROS ETHERNET SERVIDOR*/ bytemac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xEF }; // byteip[] = { 192, 168, 1, 123 }; OTRA FORMA DE ESCRIBIR LA DIRECCIÓN IP IPAddressip(192, 168, 0, 126); // DIRECCIÓN IP ASIGNADA AL SERVIDOR bytegateway[] = { 192, 168, 0, 1 }; // LA DIRECCIÓN DE PUERTA DE ENLACE AL ROUTER bytesubnet[] = { 255, 255, 255, 0 }; // LA MÁSCARA SUBNET DEL ROUTER EthernetServer server = EthernetServer(12535); // CREA UN SERVIDOR QUE ESTA ATENTO A CONEXIONES ENTRANTES POR UN PUERTO DADO SoftwareSerialmySerial(2,3); voidsetup() { Serial.begin(9600); // ACTIVA LA COMUNICACION ENTRE ARDUINO Y PC mySerial.begin(9600); // ACTVIVA LA COMUNICACION ENTRE LOS DOS ARDUINOS pinMode(6, OUTPUT); // ROJO pinMode(4, OUTPUT); // AMARILLO pinMode(5, OUTPUT); // VERDE delay(5000); // DIFERENCIA DE TIEMPOS DE ENCENDIDO ENTRE ARDUINOS } void loop() { char incoming; digitalWrite(5, HIGH); Serial.println("VERDE ENCENDIDO"); int time1 = millis(); int time2 = millis();

Page 20: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

82

while (time2 - time1 <= 10000) // TIEMPO NORMAL DE ENCENDIDO VERDE { if (mySerial.available()) { incoming = mySerial.read(); Serial.print(incoming); Serial.println(); if (incoming == 'L') { time2 = millis(); while(time2 - time1 <= 10000) { time2 = millis(); } Serial.println("10 Segundos mas al Verde"); int time3 = millis(); int time4 = millis(); while(time4 - time3 <= 10000) // SI RECIBE "L" (UN CARRIL) TIEMPO QUE DARA { time4 = millis(); } gotoamarillo; } if (incoming == 'H') { time2 = millis(); while(time2 - time1 <= 10000) { time2 = millis(); } Serial.println("10 Segundos mas al Verde"); int time3 = millis(); int time4 = millis(); while(time4 - time3 <= 10000) // SI RECIBE "H" (DOS CARRILES) TIEMPO QUE DARA { time4 = millis(); } gotoamarillo; } } time2 = millis();

Page 21: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

83

} amarillo: digitalWrite(5,LOW); Serial.println("VERDE APAGADO"); delay(20); digitalWrite(4,HIGH); Serial.println("AMARILLO ENCENDIDO"); time1 = millis(); time2 = millis(); while (time2 - time1 <= 3000) { time2 = millis(); } digitalWrite(4,LOW); Serial.println("AMARILLO APAGADO"); delay(20); digitalWrite(6,HIGH); Serial.println("ROJO ENCENDIDO"); time1 = millis(); time2 = millis(); while (time2 - time1 <= 10000) { time2 = millis(); } digitalWrite(6,LOW); Serial.println("ROJO APAGADO"); }

Page 22: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

DIAGRAMA DE FLUJO DEL

SEMAFORO SERVIDOR

Page 23: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

85

Page 24: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

DIAGRAMA DE FLUJO DEL

SEMAFORO ESCLAVO

Page 25: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

87

Page 26: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

PROGRAMACION DE LA

INTERFAZ GRAFICA

Page 27: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

89

Principal.java

package semaforo;

import about.About;

import java.applet.*;

import java.awt.*;

import java.awt.event.*;

import static java.lang.Thread.sleep;

public class Principal extends javax.swing.JDialog implements Runnable{

//declaracion de variable hilo y ciclo

Thread h1;

Thread h2;

Thread otroT;

int i=0;

int xcase =1;

int xcase2 =1;

boolean sema1 = false;

boolean sema2 = false;

boolean yaclickeo = false;

short opc1 = 0;

short opc2 =0;

public Principal(java.awt.Frame parent, boolean modal) {

super(parent, modal);

initComponents();

setLocationRelativeTo(null);

h1 = new Thread(this);

Page 28: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

90

h2 = new Thread(this);

}

public void run() {

Thread ct = Thread.currentThread();

if (ct==h1) {

System.out.println("si es h1");

}

System.out.println("OPC1 -->" + opc1);

System.out.println("SEMA1 -->" + sema1 +"SEMA2 -->" + sema2);

if (sema1) {

switch(opc1){

case 1:

System.out.println("OPC1");

xcase = 1;

i = 0;

while (ct == h1) {

System.out.println("ENTRO A OPC: 1 i: " + i + " xcase: " + xcase);

i = i + 1;

tiempo1.setText(String.valueOf(i));

switch (xcase) {

case 1:

if (i == 10) {

i = 0;

xcase = 1 + xcase;

}

break;

Page 29: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

91

case 2:

if (i == 4) {

i = 0;

xcase = 1 + xcase;

}

break;

case 3:

if (i == 10) {

i = 0;

xcase = 1 + xcase;

}

break;

default:

break;

}

if (xcase >= 4) {

xcase = 1;

}

switch (xcase) {

case 3:

semaforo1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/red.png")));

jTextField1.setText("ALTO");

break;

case 2:

semaforo1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/yellow.png")));

Page 30: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

92

jTextField1.setText("PRECAUCION");

break;

case 1:

jTextField1.setText("SIGA");

semaforo1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/green.png")));

break;

default:

System.out.println("error");

break;

}

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

}

// if (i==9&&xcase==3) {

// break;

// }

}

break;

case 2:

xcase=1;

i=0;

while (ct == h1) {

System.out.println("ENTRO A OPC: 2 i: " + i + " xcase: "+ xcase );

i = i + 1;

Page 31: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

93

tiempo1.setText(String.valueOf(i));

if (xcase==3) {

if (i == 10) {

i = 0;

xcase = 1 + xcase;

}

}else if(xcase==2){

if (i == 4) {

i = 0;

xcase = 1 + xcase;

}

}else if(xcase==1){

if (i == 15) {

i = 0;

xcase = 1 + xcase;

}

}

if(xcase>=4){

xcase=1;

}

switch (xcase) {

Page 32: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

94

case 3:

semaforo1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/red.png")));

jTextField1.setText("ALTO");

break;

case 2:

semaforo1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/yellow.png")));

jTextField1.setText("PRECAUCION");

break;

case 1:

jTextField1.setText("SIGA");

semaforo1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/green.png")));

break;

default:

System.out.println("error");

break;

}

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

}

}

break;

case 3:

xcase=1;

i=0;

Page 33: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

95

while (ct == h1) {

System.out.println("ENTRO A OPC: 3 i: " + i + " xcase: "+ xcase );

i = i + 1;

tiempo1.setText(String.valueOf(i));

if (xcase==3) {

if (i == 10) {

i = 0;

xcase = 1 + xcase;

}

}else if(xcase==2){

if (i == 4) {

i = 0;

xcase = 1 + xcase;

}

}else if(xcase==1){

if (i == 15) {

i = 0;

xcase = 1 + xcase;

}

}

if(xcase>=4){

Page 34: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

96

xcase=1;

}

switch (xcase) {

case 3:

semaforo1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/red.png")));

jTextField1.setText("ALTO");

break;

case 2:

semaforo1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/yellow.png")));

jTextField1.setText("PRECAUCION");

break;

case 1:

jTextField1.setText("SIGA");

semaforo1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/green.png")));

break;

default:

System.out.println("error");

break;

}

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

}

}

break;

Page 35: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

97

case 4:

xcase=1;

i=0;

while (ct == h1) {

System.out.println("ENTRO A OPC: 4 i: " + i + " xcase: "+ xcase );

i = i + 1;

tiempo1.setText(String.valueOf(i));

if (xcase==3) {

if (i == 10) {

i = 0;

xcase = 1 + xcase;

}

}else if(xcase==2){

if (i == 4) {

i = 0;

xcase = 1 + xcase;

}

}else if(xcase==1){

if (i == 20) {

i = 0;

xcase = 1 + xcase;

Page 36: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

98

}

}

if(xcase>=4){

xcase=1;

}

switch (xcase) {

case 3:

semaforo1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/red.png")));

jTextField1.setText("ALTO");

break;

case 2:

semaforo1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/yellow.png")));

jTextField1.setText("PRECAUCION");

break;

case 1:

jTextField1.setText("SIGA");

semaforo1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/green.png")));

break;

default:

System.out.println("error");

break;

}

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

Page 37: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

99

}

}

break;

}

}else if(sema2){

switch(opc1){

case 1:

xcase=1;

i=0;

while (ct == h2) {

i = i + 1;

tiempo2.setText(String.valueOf(i));

if (xcase==3) {

if (i == 10) {

i = 0;

xcase = 1 + xcase;

}

}else if(xcase==2){

if (i == 4) {

i = 0;

xcase = 1 + xcase;

Page 38: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

100

}

}else if(xcase==1){

if (i == 10) {

i = 0;

xcase = 1 + xcase;

}

}

if(xcase>=4){

xcase=1;

}

switch (xcase) {

case 3:

semaforo2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/red.png")));

jTextField1.setText("ALTO");

break;

case 2:

semaforo2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/yellow.png")));

jTextField1.setText("PRECAUCION");

break;

case 1:

jTextField1.setText("SIGA");

semaforo2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/green.png")));

break;

Page 39: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

101

default:

System.out.println("error");

break;

}

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

}

}

break;

case 2:

xcase=1;

i=0;

while (ct == h2) {

i = i + 1;

tiempo2.setText(String.valueOf(i));

if (xcase==3) {

if (i == 10) {

i = 0;

xcase = 1 + xcase;

}

}else if(xcase==2){

if (i == 4) {

i = 0;

xcase = 1 + xcase;

Page 40: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

102

}

}else if(xcase==1){

if (i == 20) {

i = 0;

xcase = 1 + xcase;

}

}

if(xcase>=4){

xcase=1;

}

switch (xcase) {

case 3:

semaforo2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/red.png")));

jTextField1.setText("ALTO");

break;

case 2:

semaforo2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/yellow.png")));

jTextField1.setText("PRECAUCION");

break;

case 1:

jTextField1.setText("SIGA");

semaforo2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/green.png")));

Page 41: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

103

break;

default:

System.out.println("error");

break;

}

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

}

}

break;

case 3:

xcase=1;

i=0;

while (ct == h2) {

i = i + 1;

tiempo2.setText(String.valueOf(i));

if (xcase==3) {

if (i == 10) {

i = 0;

xcase = 1 + xcase;

}

}else if(xcase==2){

if (i == 4) {

i = 0;

Page 42: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

104

xcase = 1 + xcase;

}

}else if(xcase==1){

if (i == 20) {

i = 0;

xcase = 1 + xcase;

}

}

if(xcase>=4){

xcase=1;

}

switch (xcase) {

case 3:

semaforo2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/red.png")));

jTextField1.setText("ALTO");

break;

case 2:

semaforo2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/yellow.png")));

jTextField1.setText("PRECAUCION");

break;

case 1:

jTextField1.setText("SIGA");

Page 43: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

105

semaforo2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/green.png")));

break;

default:

System.out.println("error");

break;

}

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

}

}

break;

case 4:

xcase=1;

i=0;

while (ct == h2) {

i = i + 1;

tiempo2.setText(String.valueOf(i));

if (xcase==3) {

if (i == 10) {

i = 0;

xcase = 1 + xcase;

}

}else if(xcase==2){

Page 44: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

106

if (i == 4) {

i = 0;

xcase = 1 + xcase;

}

}else if(xcase==1){

if (i == 20) {

i = 0;

xcase = 1 + xcase;

}

}

if(xcase>=4){

xcase=1;

}

switch (xcase) {

case 3:

semaforo2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/red.png")));

jTextField1.setText("ALTO");

break;

case 2:

semaforo2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/yellow.png")));

jTextField1.setText("PRECAUCION");

break;

case 1:

Page 45: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

107

jTextField1.setText("SIGA");

semaforo2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/green.png")));

break;

default:

System.out.println("error");

break;

}

try {

Thread.sleep(1000);

} catch (InterruptedException e) {

}

}

break;

}

}

}

private void initComponents() {

jLabel2 = new javax.swing.JLabel();

jSeparator1 = new javax.swing.JSeparator();

iniciar1 = new javax.swing.JButton();

detener1 = new javax.swing.JButton();

jPanel1 = new javax.swing.JPanel();

caso4 = new javax.swing.JButton();

caso2 = new javax.swing.JButton();

caso1 = new javax.swing.JButton();

caso3 = new javax.swing.JButton();

Page 46: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

108

jTextField1 = new javax.swing.JTextField();

jLabel4 = new javax.swing.JLabel();

semaforo2 = new javax.swing.JLabel();

jPanel2 = new javax.swing.JPanel();

jLabel5 = new javax.swing.JLabel();

tiempo1 = new javax.swing.JLabel();

detener2 = new javax.swing.JButton();

iniciar2 = new javax.swing.JButton();

jPanel3 = new javax.swing.JPanel();

jLabel6 = new javax.swing.JLabel();

tiempo2 = new javax.swing.JLabel();

semaforo1 = new javax.swing.JLabel();

volver = new javax.swing.JButton();

instruccion = new javax.swing.JLabel();

jLabel1 = new javax.swing.JLabel();

jLabel3 = new javax.swing.JLabel();

jMenuBar1 = new javax.swing.JMenuBar();

jMenu1 = new javax.swing.JMenu();

jMenuItem2 = new javax.swing.JMenuItem();

jMenuItem3 = new javax.swing.JMenuItem();

setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);

setTitle("SIMULACION DE SEMAFORO EN JAVA");

getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

jLabel2.setFont(new java.awt.Font("Tahoma", 0, 36)); // NOI18N

jLabel2.setText("Control de Semaforo");

getContentPane().add(jLabel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(330, 30, -1, -1));

Page 47: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

109

getContentPane().add(jSeparator1, new org.netbeans.lib.awtextra.AbsoluteConstraints(229, 87, 510, 10));

iniciar1.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N

iniciar1.setText("Iniciar");

iniciar1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

iniciar1ActionPerformed(evt);

}

});

getContentPane().add(iniciar1, new org.netbeans.lib.awtextra.AbsoluteConstraints(60, 380, 93, -1));

detener1.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N

detener1.setText("Detener");

detener1.setEnabled(false);

detener1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

detener1ActionPerformed(evt);

}

});

getContentPane().add(detener1, new org.netbeans.lib.awtextra.AbsoluteConstraints(60, 420, -1, -1));

jPanel1.setBorder(javax.swing.BorderFactory.createEtchedBorder());

jPanel1.setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());

caso4.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N

caso4.setText("Escenario 4");

caso4.setEnabled(false);

Page 48: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

110

caso4.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

caso4ActionPerformed(evt);

}

});

jPanel1.add(caso4, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 150, 350, -1));

caso2.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N

caso2.setText("Escenario 2");

caso2.setEnabled(false);

caso2.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

caso2ActionPerformed(evt);

}

});

jPanel1.add(caso2, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 70, 350, -1));

caso1.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N

caso1.setText("Escenario 1");

caso1.setEnabled(false);

caso1.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

caso1ActionPerformed(evt);

}

});

jPanel1.add(caso1, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 30, 350, -1));

caso3.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N

Page 49: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

111

caso3.setText("Escenario 3");

caso3.setEnabled(false);

caso3.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

caso3ActionPerformed(evt);

}

});

jPanel1.add(caso3, new org.netbeans.lib.awtextra.AbsoluteConstraints(50, 110, 350, -1));

getContentPane().add(jPanel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(260, 170, 450, 209));

jTextField1.setEditable(false);

jTextField1.setBackground(new java.awt.Color(255, 255, 255));

jTextField1.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N

jTextField1.setHorizontalAlignment(javax.swing.JTextField.CENTER);

jTextField1.setText("APAGADO");

getContentPane().add(jTextField1, new org.netbeans.lib.awtextra.AbsoluteConstraints(390, 130, 200, -1));

jLabel4.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N

jLabel4.setText("SEÑALIZACION");

getContentPane().add(jLabel4, new org.netbeans.lib.awtextra.AbsoluteConstraints(430, 100, -1, -1));

semaforo2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/off.png"))); // NOI18N

getContentPane().add(semaforo2, new org.netbeans.lib.awtextra.AbsoluteConstraints(820, 40, -1, -1));

jPanel2.setBorder(javax.swing.BorderFactory.createEtchedBorder());

Page 50: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

112

jLabel5.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N

jLabel5.setText("Tiempo");

tiempo1.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N

tiempo1.setText("0");

javax.swing.GroupLayout jPanel2Layout = new javax.swing.GroupLayout(jPanel2);

jPanel2.setLayout(jPanel2Layout);

jPanel2Layout.setHorizontalGroup(

jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(jPanel2Layout.createSequentialGroup()

.addGroup(jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(jPanel2Layout.createSequentialGroup()

.addGap(25, 25, 25)

.addComponent(jLabel5))

.addGroup(jPanel2Layout.createSequentialGroup()

.addGap(64, 64, 64)

.addComponent(tiempo1)))

.addContainerGap(43, Short.MAX_VALUE))

);

jPanel2Layout.setVerticalGroup(

jPanel2Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(jPanel2Layout.createSequentialGroup()

.addContainerGap()

.addComponent(jLabel5)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

Page 51: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

113

.addComponent(tiempo1)

.addGap(25, 25, 25))

);

getContentPane().add(jPanel2, new org.netbeans.lib.awtextra.AbsoluteConstraints(40, 460, 150, 80));

detener2.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N

detener2.setText("Detener");

detener2.setEnabled(false);

detener2.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

detener2ActionPerformed(evt);

}

});

getContentPane().add(detener2, new org.netbeans.lib.awtextra.AbsoluteConstraints(900, 420, -1, -1));

iniciar2.setFont(new java.awt.Font("Tahoma", 0, 18)); // NOI18N

iniciar2.setText("Iniciar");

iniciar2.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

iniciar2ActionPerformed(evt);

}

});

getContentPane().add(iniciar2, new org.netbeans.lib.awtextra.AbsoluteConstraints(900, 380, 93, -1));

jPanel3.setBorder(javax.swing.BorderFactory.createEtchedBorder());

Page 52: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

114

jLabel6.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N

jLabel6.setText("Tiempo");

tiempo2.setFont(new java.awt.Font("Tahoma", 0, 24)); // NOI18N

tiempo2.setText("0");

javax.swing.GroupLayout jPanel3Layout = new javax.swing.GroupLayout(jPanel3);

jPanel3.setLayout(jPanel3Layout);

jPanel3Layout.setHorizontalGroup(

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(jPanel3Layout.createSequentialGroup()

.addGroup(jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(jPanel3Layout.createSequentialGroup()

.addGap(25, 25, 25)

.addComponent(jLabel6))

.addGroup(jPanel3Layout.createSequentialGroup()

.addGap(64, 64, 64)

.addComponent(tiempo2)))

.addContainerGap(33, Short.MAX_VALUE))

);

jPanel3Layout.setVerticalGroup(

jPanel3Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)

.addGroup(jPanel3Layout.createSequentialGroup()

.addContainerGap()

.addComponent(jLabel6)

.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)

.addComponent(tiempo2)

Page 53: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

115

.addGap(25, 25, 25))

);

getContentPane().add(jPanel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(870, 460, -1, 80));

semaforo1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/off.png"))); // NOI18N

getContentPane().add(semaforo1, new org.netbeans.lib.awtextra.AbsoluteConstraints(0, 40, -1, -1));

volver.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N

volver.setText("Volver a ingresar un caso");

volver.setEnabled(false);

volver.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

volverActionPerformed(evt);

}

});

getContentPane().add(volver, new org.netbeans.lib.awtextra.AbsoluteConstraints(340, 460, 340, -1));

instruccion.setFont(new java.awt.Font("Tahoma", 1, 24)); // NOI18N

instruccion.setText("Descripcion");

getContentPane().add(instruccion, new org.netbeans.lib.awtextra.AbsoluteConstraints(260, 410, -1, -1));

jLabel1.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N

jLabel1.setText("Servidor");

getContentPane().add(jLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(70, 10, -1, -1));

Page 54: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

116

jLabel3.setFont(new java.awt.Font("Tahoma", 1, 18)); // NOI18N

jLabel3.setText("Esclavo");

getContentPane().add(jLabel3, new org.netbeans.lib.awtextra.AbsoluteConstraints(910, 10, -1, -1));

jMenuItem2.setText("Reiniciar");

jMenuItem2.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jMenuItem2ActionPerformed(evt);

}

});

jMenu1.add(jMenuItem2);

jMenuItem3.setText("Salir");

jMenuItem3.addActionListener(new java.awt.event.ActionListener() {

public void actionPerformed(java.awt.event.ActionEvent evt) {

jMenuItem3ActionPerformed(evt);

}

});

jMenu1.add(jMenuItem3);

jMenuBar1.add(jMenu1);

setJMenuBar(jMenuBar1);

pack();

}// </editor-fold>

private void iniciar1ActionPerformed(java.awt.event.ActionEvent evt) {

Page 55: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

117

sema1=true;

sema2=false;

// if (h1.isAlive()) {

//// h1.destroy();

//// h1.stop();

// h1.suspend();

// h2.resume();

// iniciar1.setEnabled(true);

// iniciar1.setText("Reanudar");

// }else{

// h2.start();

// }

// if (h2.isAlive()) {

// h2.suspend();

// }

// h1.start();

iniciar1.setEnabled(false);

iniciar2.setEnabled(false);

detener2.setEnabled(false);

detener1.setEnabled(true);

caso1.setEnabled(true);

caso2.setEnabled(true);

caso3.setEnabled(true);

caso4.setEnabled(true);

// run();

Page 56: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

118

}

private void caso3ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

// semaforo2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/green.png")));

// h1.stop();h2.stop();

opc1 =3;

if (sema1&&!h1.isAlive()) {

h1.start();

System.out.println("SEMAN 1 CASO 3 ");

iniciar2.setEnabled(false);

}

if (sema2&&!h2.isAlive()) {

h2.start();

System.out.println("SEMAN 2 CASO 3 ");

iniciar1.setEnabled(false);

}

caso2.setEnabled(false);

caso1.setEnabled(false);

caso3.setEnabled(false);

caso4.setEnabled(false);

// otroc.setEnabled(true);

volver.setEnabled(true);

instruccion.setText("OBSTRUCCION VIAL EN EL CANAL 2");

run();

}

Page 57: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

119

private void caso1ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

// semaforo2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/red.png")));

// h1.stop();h2.stop();

opc1 =1;

if (sema1&&!h1.isAlive()) {

h1.start();

System.out.println("SEMAN 1 CASO 1 ");

iniciar2.setEnabled(false);

}

if (sema2&&!h2.isAlive()) {

h2.start();

System.out.println("SEMAN 2 CASO 1 ");

iniciar1.setEnabled(false);

}

caso2.setEnabled(false);

caso1.setEnabled(false);

caso3.setEnabled(false);

caso4.setEnabled(false);

// otroc.setEnabled(true);

volver.setEnabled(true);

instruccion.setText("CALLE SIN CONGESTIÓN VEHÍCULAR");

run();

}

Page 58: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

120

private void caso2ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

// semaforo2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/red.png")));

// h1.stop();h2.stop();

opc1 =2;

if (sema1&&!h1.isAlive()) {

h1.start();

System.out.println("SEMAN 1 CASO 2 ");

iniciar2.setEnabled(false);

}

if (sema2&&!h2.isAlive()) {

h2.start();

System.out.println("SEMAN 2 CASO 2 ");

iniciar1.setEnabled(false);

}

caso2.setEnabled(false);

caso1.setEnabled(false);

caso3.setEnabled(false);

volver.setEnabled(true);

caso4.setEnabled(false);

instruccion.setText("OBSTRUCCION EN EL CANAL 1");

// otroc.setEnabled(true);

run();

Page 59: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

121

}

private void caso4ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

// semaforo2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/red.png")));

// h1.stop();h2.stop();

opc1 =4;

if (sema1&&!h1.isAlive()) {

h1.start();

System.out.println("SEMAN 1 CASO 4 ");

iniciar2.setEnabled(false);

}

if (sema2&&!h2.isAlive()) {

h2.start();

System.out.println("SEMAN 2 CASO 4 ");

iniciar1.setEnabled(false);

}

caso2.setEnabled(false);

caso1.setEnabled(false);

caso3.setEnabled(false);

caso4.setEnabled(false);

volver.setEnabled(true);

// otroc.setEnabled(true)

instruccion.setText("OBSTRUCCION EN AMBOS CANALES");

run();

Page 60: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

122

}

private void detener1ActionPerformed(java.awt.event.ActionEvent evt) {

if (yaclickeo==false&&sema1) {

h1.suspend();

// tiempo1.setText("0");

// i=0;

// xcase=1;

// semaforo1.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/off.png")));

// jTextField1.setText("APAGADO");

detener1.setText("Reanudar");

yaclickeo= true;

}else if (yaclickeo&&sema1){

h1.resume();

detener1.setText("Detener");

yaclickeo=false;

}

}

private void jMenuItem2ActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:

Principal.main(null);

}

private void jMenuItem3ActionPerformed(java.awt.event.ActionEvent evt) {

Page 61: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

123

// TODO add your handling code here:

System.exit(0);

}

private void detener2ActionPerformed(java.awt.event.ActionEvent evt) {

if (yaclickeo==false&&sema2) {

h2.suspend();

// tiempo2.setText("0");

// i=0;

// xcase=1;

// semaforo2.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Images/off.png")));

// jTextField1.setText("APAGADO");

detener2.setText("Reanudar");

yaclickeo= true;

}else if (yaclickeo&&sema2){

h2.resume();

detener2.setText("Detener");

yaclickeo=false;

}

}

private void iniciar2ActionPerformed(java.awt.event.ActionEvent evt) {

sema2=true;

sema1=false;

// if (h1.isAlive()) {

//// h1.destroy();

//// h1.stop();

Page 62: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

124

// h1.suspend();

// h2.resume();

// iniciar1.setEnabled(true);

// iniciar1.setText("Reanudar");

// }else{

// h2.start();

// }

// if (h1.isAlive()) {

// h1.suspend();

// }

// h2.start();

iniciar2.setEnabled(false);

iniciar1.setEnabled(false);

detener2.setEnabled(true);

detener1.setEnabled(false);

caso1.setEnabled(true);

caso2.setEnabled(true);

caso3.setEnabled(true);

caso4.setEnabled(true);

// run();

}

private void volverActionPerformed(java.awt.event.ActionEvent evt) {

this.setVisible(false);

// this.dispose();

Principal dialog1 = new Principal(new javax.swing.JFrame(), true);

dialog1.show();

//

Page 63: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

125

}

public static void main(String args[]) {

try {

for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {

if ("Nimbus".equals(info.getName())) {

javax.swing.UIManager.setLookAndFeel(info.getClassName());

break;

}

}

} catch (ClassNotFoundException ex) {

java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (InstantiationException ex) {

java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (IllegalAccessException ex) {

java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

} catch (javax.swing.UnsupportedLookAndFeelException ex) {

java.util.logging.Logger.getLogger(Principal.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);

}

//</editor-fold>

/* Create and display the dialog */

java.awt.EventQueue.invokeLater(new Runnable() {

public void run() {

Principal dialog = new Principal(new javax.swing.JFrame(), true);

Page 64: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

126

dialog.addWindowListener(new java.awt.event.WindowAdapter() {

@Override

public void windowClosing(java.awt.event.WindowEvent e) {

System.exit(0);

}

});

dialog.setVisible(true);

}

});

}

// Variables declaration - do not modify

private javax.swing.JButton caso1;

private javax.swing.JButton caso2;

private javax.swing.JButton caso3;

private javax.swing.JButton caso4;

public static javax.swing.JButton detener1;

private javax.swing.JButton detener2;

private javax.swing.JButton iniciar1;

private javax.swing.JButton iniciar2;

public static javax.swing.JLabel instruccion;

private javax.swing.JLabel jLabel1;

private javax.swing.JLabel jLabel2;

private javax.swing.JLabel jLabel3;

private javax.swing.JLabel jLabel4;

private javax.swing.JLabel jLabel5;

private javax.swing.JLabel jLabel6;

private javax.swing.JMenu jMenu1;

private javax.swing.JMenuBar jMenuBar1;

Page 65: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

127

private javax.swing.JMenuItem jMenuItem2;

private javax.swing.JMenuItem jMenuItem3;

private javax.swing.JPanel jPanel1;

private javax.swing.JPanel jPanel2;

private javax.swing.JPanel jPanel3;

private javax.swing.JSeparator jSeparator1;

private javax.swing.JTextField jTextField1;

private javax.swing.JLabel semaforo1;

private javax.swing.JLabel semaforo2;

private javax.swing.JLabel tiempo1;

private javax.swing.JLabel tiempo2;

private javax.swing.JButton volver;

// End of variables declaration

}

Semaforo.java:

package semaforo;

public class Semaforo {

public static void main(String[] args) {

}

}

Semaforos.java:

package semaforo;

import java.awt.*;

Page 66: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

128

import java.applet.*;

import java.awt.event.*;

public class semaforos extends Applet implements ActionListener {

Button b1 = new Button("Iniciar");

Button b2 = new Button("Pausar");

TextArea ta = new TextArea("O_0", 10, 20);

Conteo c1;

Conteo c2;

Conteo c3;

public void init() {

setLayout(new GridLayout(2, 3));

add(ta);

add(b1);

add(b2);

b1.addActionListener(this);

b2.addActionListener(this);

}

public void empezar() {

c1 = new Conteo(5000, ta);

}

public void actionPerformed(ActionEvent e) {

if (e.getSource().equals(b1)) {

empezar();

c1.start();

Page 67: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

129

c2.start();

}

if (e.getSource().equals(b2)) {

c1.stop();

c2.stop();

}

}

class Conteo extends Thread {

long tiempo;

TextArea Area;

boolean contando = true;

public Conteo(long tiempo, TextArea Area) {

this.tiempo = tiempo;

this.Area = Area;

}

public void run() {

while (contando) {

Area.setBackground(Color.green);

try {

sleep(tiempo);

} catch (InterruptedException e) {

}

{

Page 68: CONCLUSIONESvirtual.urbe.edu/tesispub/0104250/conclu.pdf · lugar seguro la funcionalidad del sistema, el monitoreo en tiempo real de la red que muestre el estado de cada semáforo

130

Area.setBackground(Color.yellow);

}

try {

sleep(tiempo);

} catch (InterruptedException e) {

}

Area.setBackground(Color.red);

try {

sleep(tiempo);

} catch (InterruptedException e) {

}

}

}

}

}