0% encontró este documento útil (0 votos)
429 vistas

Cruce de Semaforos Con Arduino

Este documento describe un proyecto para simular cruces de semáforos usando Arduino. Se utilizará Arduino conectado a varios LEDs que se encenderán y apagarán para simular semáforos en diferentes cruces. El software Raptor se usará para simular el programa a través de diagramas de flujo. Esto permitirá entender las instrucciones que se le darán a Arduino para controlar los LEDs.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
429 vistas

Cruce de Semaforos Con Arduino

Este documento describe un proyecto para simular cruces de semáforos usando Arduino. Se utilizará Arduino conectado a varios LEDs que se encenderán y apagarán para simular semáforos en diferentes cruces. El software Raptor se usará para simular el programa a través de diagramas de flujo. Esto permitirá entender las instrucciones que se le darán a Arduino para controlar los LEDs.
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 7

CRUCE DE SEMÁFOROS

Universidad de Cundinamarca Sede Fusasagásuga


Programa De Ingeniería Electrónica
Sebastián Riaño, Yohani
[email protected]
06/09/2019 - 27/09/2019

Resumen⸻ Se ha utilizo el programa raptor para hacer para aplicaciones IoT, dispositivos portátiles,


las simulaciones de diagramas para les ejercicios propuestos y impresión 3D y entornos integrados. Todas las placas
un Arduino para el montaje y operación para obtener como Arduino son completamente de código abierto, lo que
resultado encender varios o un solo led por un tiempo que permite a los usuarios construirlas de forma
nosotros podemos establecerle a cada led.
independiente y eventualmente adaptarlas a sus
necesidades particulares. El software también es de
I. INTRODUCCION código abierto y está creciendo a través de las
contribuciones de los usuarios de todo el mundo.
Se utilizará el Arduino conectado a una cantidad de leds
que se apagarán y encenderán dependiendo de la orden o
el tiempo que nosotros le pongamos a cada led este
tiempo lo podemos cambiar gracias a la fácil
programación que nos permite el Arduino, además
usaremos el raptor; este software nos permitirá simular el
programa por medio de diagramas de flujo para poder
entender el programa y así poder saber las órdenes que le
daremos al Arduino.

II. MARCO TEORICO

A. ARDUINO
Arduino es una plataforma electrónica de código
abierto basada en hardware y software fácil de
usar. Las placas Arduino pueden leer entradas (luz en
un sensor, un dedo en un botón o un mensaje de Fig.1) Partes Del Arduino.
Twitter) y convertirlo en una salida: activar un motor,
encender un LED, publicar algo en línea. Puede decirle
a su placa qué hacer enviando un conjunto de
instrucciones al microcontrolador de la placa. Para
B. CODIGO FUENTE
hacerlo, utiliza el lenguaje de programación
Arduino (basado en el cableado ) y el software Arduino El código fuente de un programa
(IDE) , basado en el procesamiento . informático (o software) es un conjunto de líneas de
Con los años, Arduino ha sido el cerebro de miles de texto con los pasos que debe seguir
proyectos, desde objetos cotidianos hasta instrumentos la computadora para ejecutar un programa.
científicos complejos. Una comunidad mundial de
El código fuente de un programa está escrito por
creadores (estudiantes, aficionados, artistas,
un programador en algún lenguaje de programación,
programadores y profesionales) se ha reunido en torno
pero en este primer estado no es directamente
a esta plataforma de código abierto, sus contribuciones
ejecutable por la computadora, sino que debe ser
se han sumado a una increíble cantidad
traducido a otro lenguaje o código binario; así será más
de conocimiento accesible que puede ser de gran ayuda
fácil para la máquina interpretarlo (lenguaje
para principiantes y expertos por igual.
máquina o código objeto que sí pueda ser ejecutado por
Arduino nació en el Instituto de Diseño de Interacción
el hardware de la computadora). Para esta traducción
Ivrea como una herramienta fácil para la creación
se usan los
rápida de prototipos, dirigida a estudiantes sin
llamados compiladores, ensambladores, intérpretes y
experiencia en electrónica y programación. Tan pronto
otros sistemas de traducción.
como llegó a una comunidad más amplia, la placa
Arduino comenzó a cambiar para adaptarse a las El término código fuente también se usa para hacer
nuevas necesidades y desafíos, diferenciando su oferta referencia al código fuente de otros elementos del
de placas simples de 8 bits a productos software, como por ejemplo el código fuente de
una página web, que está escrito en lenguaje de
marcado HTML o en JavaScript, u otros lenguajes de
programación web, y que es posteriormente ejecutado
por el navegador web para visualizar dicha página
cuando es visitada.
El área de la informática que se dedica a la creación de
programas, y por tanto a la creación de su código
fuente, es la ingeniería de software.

Fig.3) simbolo e imagen de el pulsador.

Fig.2) codigo.
B. PROTOBORARD
Una Protoboard es un tablero con orificios que se
encuentran conectados eléctricamente entre sí de
manera interna, habitualmente siguiendo patrones de
III. MATERIALES líneas, en el cual se pueden insertar componentes
electrónicos y cables para el armado y prototipo de
A. PULSADOR circuitos electrónicos y sistemas similares (fig.4).
 Pulsadores o interruptores, hay toneladas de ellos en su
casa. Un interruptor es un dispositivo simple con dos
posiciones, EN y AP (ENcendido y APagado). Una
clase de interruptor que usted usa cada día es el
interruptor de la luz. Cuando conecta, dentro del
interruptor, dos cables son unidos, lo que permite fluir
a la corriente que enciende la luz o la tostadora se
caliente. Cuando lo desconecta, los dos cables son Fig.4) protoboar.
desunidos y corta el flujo de la corriente. Esto esta muy
bien pero creo que esto no es lo que interesa aquí.
C. MULTIMETRO
En definitiva, se trata de un mecanismo simple (los hay
muy sofisticados), constituido por un par de contactos Un multímetro, también denominado polímetro, o
eléctricos que se unen o separan por medios mecánicos. testar, es un instrumento eléctrico portátil para medir
En electricidad, los falsos contactos que se producen el directamente magnitudes eléctricas activas, como
corrientes y potenciales (tensiones), o pasivas, como
ser utilizados normalmente, en algunos casos produce
resistencias, capacidades y otras.
una chispa debido a la corriente que atraviesa los
contactos, provocando que quemen en parte y
ennegreciendo los contactos eléctricos, lo que a la larga
acaba deteriorando dichos contactos. La chispa se
produce siempre al separar los contactos (desconectar),
en ocasiones parece que también salta al conectarlos,
eso es debido a los rebotes mecánicos que se producen
al cambiar de estado.

Fig.5) multimetro.
D. MULTIMETRO

Se denomina resistencia o resistor al componente


electrónico diseñado para introducir una resistencia
eléctrica determinada entre dos puntos de un circuito
eléctrico. En otros casos, como en las planchas,
calentadores, etc., se emplean resistencias para
producir calor aprovechando el efecto Joule.

Fig.8) Arduino I.

IV. MÉTODO EXPERIMENTAL

Se trata de tres cruces de semáforos de diferentes puntos


de Fusagasugá con algunas problemáticas, que simularemos
en Arduino, ya que nos permite por medio de su
Fig.6) Resistor. programación seleccionar que leds queremos encender y
por cuanto tiempo (se utilizan leds como bombillas de los
E. LEDS semáforos).
Así podremos encontrar alguna posible solución.
El LED, acrónimo de “Light Emitting
Diode”, o diodo emisor de luz de estado sólido (solid
state), constituye un tipo especial de semiconductor,
cuya característica principal es convertir en luz la
corriente eléctrica de bajo voltaje que atraviesa su chip.
Desde el punto de vista físico un LED común se
presenta como un bulbo miniaturizado, carente de
filamento o de cualquier otro tipo de elemento o
material peligroso, con la ventaja sobre otras
tecnologías que no contamina el medio ambiente

Fig.9) Prototipo semáforo.

a) Objetivos:

 Familiarizarse con el entorno de programación.


 Aprender a declarar variables tipo lista de valores.
 Familiarizarse con el entorno de programación.
Fig.7) leds.  Reconocer las partes de un programa de Arduino.
 Conocer órdenes como: pinMode, digitalWrite y
delay.
F. ARDUINO UNO b) Semáforos:
Arduino Uno es una placa electrónica basada en el
microcontrolador ATmega328. Cuenta con 14  6 con 22
entradas/salidas digitales, de las cuales 6 se pueden
 6 con 11
utilizar como salidas PWM (Modulación por ancho de
 6 con 17
pulsos) y otras 6 son entradas analógicas. Además,
incluye un resonador cerámico de 16 MHz, un conector
c) Código guía.
USB, un conector de alimentación, una cabecera ICSP
y un botón de reseteado. La placa incluye todo lo
int leds[]={3,4,5,6,7,8);
necesario para que el microcontrolador haga su trabajo,
int tiempo1=3000;
basta conectarla a un ordenador con un cable USB o a
int tiempo2=500;
la corriente eléctrica a través de un transformador.
int n;
void setup() {
for (n=0;n<6;n++) {
pinMode (leds[n],OUTPUT); }
}
} void loop() {
void loop () {
digitalWrite (leds[0],HIGH); digitalWrite(verde1,HIGH);
digitalWrite (leds[5],HIGH); digitalWrite(rojo2,HIGH);
delay (tiempo1); digitalWrite(rojo3,HIGH);
digitalWrite (leds[5],LOW); digitalWrite(rojo4,HIGH);
digitalWrite (leds[4],HIGH); delay(2000);
delay (tiempo2); digitalWrite(verde1,LOW);
digitalWrite[leds[0],LOW); digitalWrite(rojo2,LOW);
digitalWrite (leds[2],HIGH); digitalWrite(rojo3,LOW);
digitalWrite (leds[4],LOW); digitalWrite(rojo4,LOW);
digitalWrite (leds[3],HIGH); delay(500);
delay (tiempo1); digitalWrite(amarillo1,HIGH);
digitalWrite (leds[2],LOW); digitalWrite(amarillo2,HIGH);
digitalWrite(leds[1],HIGH); digitalWrite(amarillo3,HIGH);
delay (tiempo2); digitalWrite(amarillo4,HIGH);
} delay(2000);
digitalWrite(amarillo1,LOW);
digitalWrite(amarillo2,LOW);
V. RESULTADOS digitalWrite(amarillo3,LOW);
digitalWrite(amarillo4,LOW);
delay(500);
A. SEMAFORO DE LA 6 CON 22.
Para este semáforo se usó en forma de reloj por lo digitalWrite(verde2,HIGH);
angosto de las calles, ose dando paso solo a un carril digitalWrite(rojo1,HIGH);
mientras los otros 3 están en rojo. Esto permitirá que digitalWrite(rojo3,HIGH);
los del carril en verde puedan seguir derecho o voltear digitalWrite(rojo4,HIGH);
a la izquierda o a la derecha. delay(2000);
digitalWrite(verde2,LOW);
digitalWrite(rojo1,LOW);
 Código: digitalWrite(rojo3,LOW);
int rojo1=1; digitalWrite(rojo4,LOW);
int amarillo1=2; delay(500);
int verde1=3; digitalWrite(amarillo1,HIGH);
int rojo2=4; digitalWrite(amarillo2,HIGH);
int amarillo2=5; digitalWrite(amarillo3,HIGH);
int verde2=6; digitalWrite(amarillo4,HIGH);
int rojo3=7; delay(2000);
int amarillo3=8; digitalWrite(amarillo1,LOW);
int verde3=9; digitalWrite(amarillo2,LOW);
int rojo4=10; digitalWrite(amarillo3,LOW);
int amarillo4=11; digitalWrite(amarillo4,LOW);
int verde4=12; delay(500);

void setup() { digitalWrite(verde3,HIGH);


pinMode(verde1,OUTPUT); digitalWrite(rojo2,HIGH);
pinMode(amarillo1,OUTPUT); digitalWrite(rojo1,HIGH);
pinMode(rojo1,OUTPUT); digitalWrite(rojo4,HIGH);
pinMode(verde2,OUTPUT); delay(2000);
pinMode(amarillo2,OUTPUT); digitalWrite(verde3,LOW);
pinMode(rojo2,OUTPUT); digitalWrite(rojo2,LOW);
pinMode(verde3,OUTPUT); digitalWrite(rojo1,LOW);
pinMode(amarillo3,OUTPUT); digitalWrite(rojo4,LOW);
pinMode(rojo3,OUTPUT); delay(500);
pinMode(verde4,OUTPUT); digitalWrite(amarillo1,HIGH);
pinMode(amarillo4,OUTPUT); digitalWrite(amarillo2,HIGH);
pinMode(rojo4,OUTPUT); digitalWrite(amarillo3,HIGH);
digitalWrite(amarillo4,HIGH); pinMode(rojo2,OUTPUT);
delay(2000); pinMode(verde3,OUTPUT);
digitalWrite(amarillo1,LOW); pinMode(amarillo3,OUTPUT);
digitalWrite(amarillo2,LOW); pinMode(rojo3,OUTPUT);
digitalWrite(amarillo3,LOW); pinMode(verde4,OUTPUT);
digitalWrite(amarillo4,LOW); pinMode(amarillo4,OUTPUT);
delay(500); pinMode(rojo4,OUTPUT);
}
digitalWrite(verde4,HIGH);
digitalWrite(rojo2,HIGH); void loop() {
digitalWrite(rojo3,HIGH);
digitalWrite(rojo1,HIGH); digitalWrite(verde1,HIGH);
delay(2000); digitalWrite(rojo2,HIGH);
digitalWrite(verde4,LOW); digitalWrite(rojo3,HIGH);
digitalWrite(rojo2,LOW); digitalWrite(rojo4,HIGH);
digitalWrite(rojo3,LOW); delay(2000);
digitalWrite(rojo1,LOW); //digitalWrite(verde1,LOW);
delay(500); digitalWrite(rojo2,LOW);
digitalWrite(amarillo4,HIGH); digitalWrite(rojo3,LOW);
digitalWrite(amarillo2,HIGH); digitalWrite(rojo4,LOW);
digitalWrite(amarillo3,HIGH); delay(500);
digitalWrite(amarillo1,HIGH); // digitalWrite(amarillo1,HIGH);
delay(2000); digitalWrite(amarillo2,HIGH);
digitalWrite(amarillo1,LOW); digitalWrite(amarillo3,HIGH);
digitalWrite(amarillo2,LOW); digitalWrite(amarillo4,HIGH);
digitalWrite(amarillo3,LOW); delay(2000);
digitalWrite(amarillo4,LOW); digitalWrite(amarillo1,LOW);
delay(500); digitalWrite(amarillo2,LOW);
} digitalWrite(amarillo3,LOW);
digitalWrite(amarillo4,LOW);
delay(500);

B. SEMAFORO DE LA 6 CON 17. digitalWrite(verde2,HIGH);


Para este se tuvo en cuenta que en esta parte de la digitalWrite(verde1,HIGH);
ciudad las vías son doble carril lo cual para un cruce //digitalWrite(rojo1,HIGH);
perfectamente un carril de usa para aquellos que van a digitalWrite(rojo3,HIGH);
voltean hacia una dirección y el otro para los que van digitalWrite(rojo4,HIGH);
derecho. Además, un tiempo distinto a cada cruce. delay(3000);
digitalWrite(verde2,HIGH);
 Código: digitalWrite(verde1,LOW);
int rojo1=1; digitalWrite(rojo1,LOW);
int amarillo1=2; digitalWrite(rojo3,LOW);
int verde1=3; digitalWrite(rojo4,LOW);
int rojo2=4; delay(2000);
int amarillo2=5;
int verde2=6; digitalWrite(amarillo1,HIGH);
int rojo3=7; //digitalWrite(amarillo2,HIGH);
int amarillo3=8; digitalWrite(amarillo3,HIGH);
int verde3=9; digitalWrite(amarillo4,HIGH);
int rojo4=10; delay(1000);
int amarillo4=11; digitalWrite(amarillo1,LOW);
int verde4=12; digitalWrite(amarillo2,LOW);
digitalWrite(amarillo3,LOW);
void setup() { digitalWrite(amarillo4,LOW);
pinMode(verde1,OUTPUT); delay(500);
pinMode(amarillo1,OUTPUT);
pinMode(rojo1,OUTPUT); digitalWrite(verde2,LOW);
pinMode(verde2,OUTPUT); digitalWrite(rojo2,HIGH);
pinMode(amarillo2,OUTPUT); digitalWrite(rojo1,HIGH);
digitalWrite(rojo4,HIGH);
delay(500); digitalWrite(verde4,LOW);
digitalWrite(rojo2,HIGH);
digitalWrite(amarillo1,HIGH); digitalWrite(rojo1,HIGH);
//digitalWrite(amarillo2,HIGH); digitalWrite(rojo3,HIGH);
digitalWrite(amarillo3,HIGH); delay(500);
digitalWrite(amarillo4,HIGH);
delay(1000); digitalWrite(amarillo1,HIGH);
digitalWrite(amarillo1,LOW); //digitalWrite(amarillo2,HIGH);
//digitalWrite(amarillo2,LOW); digitalWrite(amarillo3,HIGH);
digitalWrite(amarillo3,LOW); digitalWrite(amarillo4,HIGH);
digitalWrite(amarillo4,LOW); delay(1000);
delay(500); digitalWrite(amarillo1,LOW);
digitalWrite(amarillo2,LOW);
digitalWrite(amarillo3,LOW);
digitalWrite(verde3,HIGH); digitalWrite(amarillo4,LOW);
digitalWrite(rojo2,HIGH); delay(500);
digitalWrite(rojo1,HIGH); }
digitalWrite(rojo4,HIGH);
delay(2000);
// digitalWrite(verde1,LOW); C. SEMAFORO DE LA 6 CON 11.
digitalWrite(rojo2,LOW); A esté se le agregó un pulsador para los peatones por el
digitalWrite(rojo1,LOW); constate tránsito de estos. Además, del constate flujo
digitalWrite(rojo4,LOW); de estudiantes por ser una zona de varias instituciones
delay(500); académicas.
digitalWrite(amarillo1,HIGH);
digitalWrite(amarillo2,HIGH);  Código
//digitalWrite(amarillo3,HIGH); int carRed = 1 ;
digitalWrite(amarillo4,HIGH); int carYellow = 2;
delay(2000); int carGreen = 3;
digitalWrite(amarillo1,LOW); int peaRed = 5;
digitalWrite(amarillo2,LOW); int peaGreen = 6;
// digitalWrite(amarillo3,LOW); int button = 4 ;
digitalWrite(amarillo4,LOW); int TiempoCruce = 5000;
delay(500); unsigned long TiempoCambio = 0;
void setup(){
digitalWrite(verde3,HIGH);
digitalWrite(verde4,HIGH);
digitalWrite(rojo1,HIGH); pinMode(carRed, OUTPUT);
//digitalWrite(rojo3,HIGH); pinMode(carYellow, OUTPUT);
digitalWrite(rojo4,HIGH); pinMode(carGreen, OUTPUT);
delay(3000); pinMode(peaRed, OUTPUT);
digitalWrite(verde4,HIGH); pinMode(peaGreen, OUTPUT);
digitalWrite(verde3,LOW); pinMode(button, INPUT);
digitalWrite(rojo1,LOW);
digitalWrite(rojo3,LOW); digitalWrite(carGreen, HIGH);
digitalWrite(rojo4,LOW); digitalWrite(peaRed, HIGH);
delay(2000);
}
digitalWrite(amarillo1,HIGH);
digitalWrite(amarillo2,HIGH);
void loop() {
digitalWrite(amarillo3,HIGH);
//digitalWrite(amarillo4,HIGH);
delay(1000); int estado = digitalRead(button);
digitalWrite(amarillo1,LOW); if (estado == HIGH && (millis() -
digitalWrite(amarillo2,LOW); TiempoCambio) > 5000 ){
digitalWrite(amarillo3,LOW);
//digitalWrite(amarillo4,LOW); cambioLuz();
delay(500); }
} interferencia. Así se van rotando las direcciones en forma
void cambioLuz() { de reloj hasta volver a la dirección en la que se empieza.
digitalWrite(carGreen, LOW);
digitalWrite(carYellow, HIGH); En el segundo semáforo se aprovecho que todos los
delay(2000); sentidos de las vías tienen dos carriles, esto se atizo para
que el sentido que este en verde puedan los vehículos
voltear o seguir derecho.
digitalWrite(carYellow, LOW); En el tercero además de las propiedades del segundo se le
digitalWrite(carRed, HIGH); agrego un pulsador para que los peatones puedan cortar el
delay(1000); flujo vehicular y habilite en todos los sentidos unos
semáforos adicionales para los peatones.

IV. CONCLUCIONES

digitalWrite(peaRed, LOW); Gracias al Arduino podemos simular posibles problemas en


digitalWrite(peaGreen, HIGH); una escala más pequeñas y sin tantas repercusiones
delay(TiempoCruce); simplificando los errores en un diseño ya en escala real.

for (int x=0; x<10; x++) { Gracias a la fácil programación del código Arduino
digitalWrite(peaGreen, HIGH); podemos modificar un código y adaptarlo a nuestras
delay(250); necesidades
digitalWrite(peaGreen, LOW);
delay(250); Se utilizo el caracter de digitalWrite para identifica en la
} salida del Arduino que se utilizara un led, use usaron los
digitalWrite(peaRed, HIGH); estados HIGH y LOW para encender y apagar los leds. Se
delay(500); atizaron nuevos caracteres en el código como if para tomar
digitalWrite(carYellow, HIGH); una decisión, for para hacer un ciclo y usamos
digitalWrite(carRed, LOW); comparaciones.
delay(1000);
digitalWrite(carGreen, HIGH); Es importante el orden en las conexiones y referenciarlas
digitalWrite(carYellow, LOW); tanto en la Protoboard como en el código.
TiempoCambio = millis();
}
REFERENCIAS
VI. DISCUSIÓN
[1] https://www.arduino.cc/en/Guide/Introduction
Utilizamos el Arduino el cual nos permite por medio de una [2] https://www.lucidchart.com/pages/es/que-es-un-diagrama-de-
programación sencilla hacer una cantidad de tarea además se flujo
pueden agregar módulos o accesorios con diferentes aplicaciones. [3] https://www.diarioelectronicohoy.com/blog/pulsadores-sin-
En esta práctica solo se usaron pines de él, para encender usa rebotes
secuencia de leds ya que nosotros le podemos habilitar los pines [4] file:///H:/OneDrive%20%20Universidad%20de
reducir o aumentar el voltaje así mismo cambial el tiempo a cada %20Cundinamarca/Im%C3%A1genes/para-que-sirve-un-
ping y obtener una respuesta diferente en el encendido de leds. diagrama-de-flujo_opt.webp
También en uno de ellos usamos un pulsador lo cual hizo que
cambiara el código por ejemplo fue necesario un hacer un ciclo for [5] http://www.asifunciona.com/fisica/ke_led/ke_led_2.htme.
y preguntas decisivas. [6] https://www.tecnicasei.com/como-funciona-un-led/
[7] https://openwebinars.net/blog/tutorial-arduino-ejemplo-
Para estos tres prototipos de semáforos modificamos por semaforo/
completo el código dado en la guía, modificando para que
fuesen 4 direcciones, también los tiempos en los estos duran
ya sea que estén en verde o en rojo, y tener en cuente que
en el cambio de estos hay un intervalo en los que se
prenden los les amarillos dependiendo de la direccionen la
que se va a mover el flujo vehicular.

Para el primer semáforo se utilizó una secuencia en la que


empezaba una en verde un dirección mientras las otras 3
permanezcan en rojo esto permite que si un vehículo desea
voltear ya sea a la derecha o a la izquierda no tenga alguna

También podría gustarte