Documentos de Académico
Documentos de Profesional
Documentos de Cultura
MECÁNICA
CARRERA DE INGENIERÍA MECATRÓNICA
CALIFICACIÓN:
NRC: 4531
INTEGRANTES:
Dutan Ariel
Sangolquí – Ecuador
1. TEMA:
ENTRADAS Y SALIDAS DIGITALES EN ARDUINO
2. OBJETIVOS:
- Implementar los conocimientos sobre entradas y salidas digitales recibidos en
clases por medio de la resolución de retos de programación.
- Desarrollar de manera eficiente y efectiva los retos planteados de semáforos.
- Practicar el entendimiento y uso de entradas y salidas digitales.
3. EQUIPO Y MATERIALES
- Placa de Arduino 1
- Cables macho macho (x20)
- Luces led de color verde, amarillo y rojo (x3 cada uno)
- Protoboard
- Resistencias de 220 ohms
- Software de arduino
4. MARCO TEÓRICO
4.1. Entradas y salidas digitales
Una señal digital es un tipo de señal generada por algún tipo de fenómeno
electromagnético en que cada signo que codifica el contenido de la misma puede ser
analizado en término de algunas magnitudes que representan valores discretos, en lugar
de valores dentro de un cierto rango. Por ejemplo, el interruptor de la luz sólo puede tomar
dos valores o estados: abierto o cerrado, o la misma lámpara: encendida o apagada.
4.2 Arduino
Arduino es una compañía de desarrollo de software y hardware libres, así como una
comunidad internacional que diseña y manufactura placas de desarrollo de hardware
para construir dispositivos digitales y dispositivos interactivos que puedan detectar y
controlar objetos del mundo real.
4.3 Conexión de PULLUP
5. PROCEDIMIENTO:
Reto 1:
Programar un sistema, que ponga en funcionamiento secuencial un semáforo de tres luces
con el uso de un Arduino.
Código de Arduino:
int pin_rojo=8;
int pin_amarillo=10;
int pin_verde=9;
int t_verde=22000;
int t_amarillo=7000;
int t_rojo=25000;
void setup() {
// put your setup code here, to run once:
Serial.begin(9600);
delay(100);
pinMode(pin_rojo, OUTPUT);
pinMode(pin_amarillo, OUTPUT);
pinMode(pin_verde, OUTPUT);
// posicion inicial
digitalWrite(pin_rojo,LOW);
digitalWrite(pin_amarillo,LOW);
digitalWrite(pin_verde,HIGH);
delay(1000);
}
void loop() {
digitalWrite(pin_verde,HIGH);
delay(t_verde);
digitalWrite(pin_verde, LOW);
delay(10);
digitalWrite(pin_amarillo,HIGH);
delay(t_amarillo);
digitalWrite(pin_amarillo, LOW);
delay(10);
digitalWrite(pin_rojo,HIGH);
delay(t_rojo);
digitalWrite(pin_rojo, LOW);
delay(10);
}
Diagrama y explicación:
pinMode(pin_rojo, OUTPUT);
pinMode(pin_amarillo, OUTPUT);
pinMode(pin_verde, OUTPUT);
// posicion inicial
digitalWrite(pin_rojo,LOW);
digitalWrite(pin_amarillo,LOW);
digitalWrite(pin_verde,HIGH);
delay(1000);
}
void loop() {
digitalWrite(pin_verde,HIGH);
delay(t_verde);
digitalWrite(pin_verde, LOW);
delay(10);
digitalWrite(pin_amarillo,HIGH);
delay(t_amarillo*0.75);
for (int i=0;i<6;i++){
digitalWrite(pin_amarillo,HIGH);
delay((t_amarillo*0.25)/10);
digitalWrite(pin_amarillo, LOW);
delay((t_amarillo*0.25)/10);
}
digitalWrite(pin_rojo,HIGH);
delay(t_rojo);
digitalWrite(pin_rojo, LOW);
delay(10);
}
Diagrama y explicación:
pinMode(boton1, INPUT_PULLUP);
pinMode(verde_c, OUTPUT);
pinMode(ama_c, OUTPUT);
pinMode(rojo_c, OUTPUT);
pinMode(verde_p, OUTPUT);
pinMode(rojo_p, OUTPUT);
digitalWrite(verde_c,LOW);
digitalWrite(ama_c,LOW);
digitalWrite(rojo_c,LOW);
digitalWrite(verde_p,LOW);
digitalWrite(rojo_p,LOW);
}
void loop() {
semaforo_normal();
}
void semaforo_normal() {
for (int j=0;j<1;j++){
int bandera=1;
for (int i=0;i<101;i++){
digitalWrite(rojo_c,LOW);
digitalWrite(verde_c,HIGH);
digitalWrite(rojo_p,HIGH);
delay(t_verde/100);
//
int estado1=digitalRead(boton1);
if(estado1!=estado_anterior1){
if (millis()-tiempo_pulsador1 >= tiempo_espera){
tiempo_pulsador1=millis();
estado_anterior1=estado1;
if (estado1==LOW){
bandera=0;
digitalWrite(verde_c,LOW);
digitalWrite(ama_c,HIGH);
delay(3000);
digitalWrite(ama_c,LOW);
digitalWrite(rojo_c,HIGH);
delay(1000);
digitalWrite(rojo_p,LOW);
digitalWrite(verde_p,HIGH);
delay(t_rojo*0.75);
for (int i=0;i<11;i++){
digitalWrite(verde_p,HIGH);
delay((t_rojo*0.25)/(20+2*i));
digitalWrite(verde_p, LOW);
delay((t_rojo*0.25)/(20+2*i));
}
break;
}
}
}
//
}
if (bandera==0){
digitalWrite(rojo_p,HIGH);
delay(1000);
break;
}
digitalWrite(verde_c,LOW);
delay(10);
digitalWrite(ama_c,HIGH);
delay(t_amarillo);
digitalWrite(ama_c,LOW);
delay(10);
digitalWrite(rojo_c,HIGH);
delay(1000);
digitalWrite(rojo_p,LOW);
digitalWrite(verde_p,HIGH);
delay(t_rojo*0.75);
for (int i=0;i<11;i++){
digitalWrite(verde_p,HIGH);
delay((t_rojo*0.25)/(20+2*i));
digitalWrite(verde_p, LOW);
delay((t_rojo*0.25)/(20+2*i));
}
digitalWrite(verde_p,LOW);
digitalWrite(rojo_p,HIGH);
delay(1000);
digitalWrite(rojo_c,LOW);
}
}
Diagrama y explicación:
Esta secuencia cuenta con dos semáforos.
El semáforo de carros comienza en verde y el de peatones en rojo, después de 22 segundos
el semáforo de carros cambia a amarillo y el de peatones se mantiene en verde, aquí se
puede pulsar el botón, pero se explicará después. Después de la luz amarilla de carros se
enciende la luz roja de los carros, pero la luz roja de peatones se mantiene durante un
segundo mas para mayor seguridad. Después se enciende la luz verde de los peatones y
se mantiene la roja de los carros, los primeros 18.75 segundos de las luz de los peatones
será continua, pero después empezara a parpadear aumentado la frecuencia con cada
parpadeo, son 10 en total. Al final de la luz verde de los peatones se cambia a luz roja de
peatones mientras la luz roja de los carros sigues, dando así un margen de seguridad, si
de ahí se repite el bucle.
El presionado del botón es posible únicamente durante la luz roja de los peatones y la luz
verde de los carros, puesto a que a los peatones no les interesa cambiar de su luz verde a
su luz roja, solo les interesa cambiar de su luz roja a su luz verde para poder cruzar. Dicho
esto, se explicará el funcionamiento, cuando un peatón presione el botón
automáticamente la luz de los carros ser tornara amarilla, avisando a los conductores que
se viene el cambio a rojo, se dará un aviso de 3 segundos en total, pasados los 3 segundos
el color de los carros sea rojo, y después de un segundo los peatones tendrán luz verde,
una ves terminado este cambio comenzara la secuencia nuevamente.
Reto 4:
Implementar un programa, que ponga en funcionamiento un grupo de semáforos con
una secuencia similar a la que se encuentra en los semáforos de la entrada principal de
la universidad.
Código de programación:
int v_1=2;
int a_1=3;
int r_1=4;
int v_2=5;
int a_2=6;
int r_2=7;
int v_3=8;
int a_3=9;
int r_3=10;
int v_4=11;
int a_4=12;
int r_4=13;
int t_v=22000;
int t_a=7000;
int t_r=25000;
void setup() {
Serial.begin(9600);
delay(100);
pinMode(v_1, OUTPUT);
pinMode(a_1, OUTPUT);
pinMode(r_1, OUTPUT);
pinMode(v_2, OUTPUT);
pinMode(a_2, OUTPUT);
pinMode(r_2, OUTPUT);
pinMode(v_3, OUTPUT);
pinMode(a_3, OUTPUT);
pinMode(r_3, OUTPUT);
pinMode(v_4, OUTPUT);
pinMode(a_4, OUTPUT);
pinMode(r_4, OUTPUT);
digitalWrite(v_1,HIGH);
digitalWrite(a_1,LOW);
digitalWrite(r_1,LOW);
digitalWrite(v_2,LOW);
digitalWrite(a_2,LOW);
digitalWrite(r_2,HIGH);
digitalWrite(v_3,LOW);
digitalWrite(a_3,LOW);
digitalWrite(r_3,HIGH);
digitalWrite(v_4,HIGH);
digitalWrite(a_4,LOW);
digitalWrite(r_4,LOW);
void loop() {
digitalWrite(v_1,HIGH);
digitalWrite(v_4,HIGH);
digitalWrite(r_2,HIGH);
digitalWrite(r_3,HIGH);
delay(t_v);
digitalWrite(v_1,LOW);
digitalWrite(v_4,LOW);
digitalWrite(a_1,HIGH);
digitalWrite(a_4,HIGH);
delay(t_a);
digitalWrite(a_1,LOW);
digitalWrite(a_4,LOW);
digitalWrite(r_1,HIGH);
digitalWrite(r_4,HIGH);
delay(1000);
digitalWrite(r_2,LOW);
digitalWrite(r_3,LOW);
digitalWrite(v_2,HIGH);
digitalWrite(v_3,HIGH);
delay(t_v);
digitalWrite(v_2,LOW);
digitalWrite(v_3,LOW);
digitalWrite(a_2,HIGH);
digitalWrite(a_3,HIGH);
delay(t_a);
digitalWrite(a_2,LOW);
digitalWrite(a_3,LOW);
digitalWrite(r_2,HIGH);
digitalWrite(r_3,HIGH);
delay(1000);
digitalWrite(r_1,LOW);
digitalWrite(r_4,LOW);
}
Diagrama y explicación:
La secuencia de semáforos en este caso dura 60 segundos. Y básicamente es lo mismo
que una secuencia de dos semáforos, solo que entre los cambios de luz roja a verde se
tiene un margen de seguridad de 1 segundo.
6. CONCLUSIONES
- Cuando se trata de la vida de las personas es importante siempre mantener
márgenes de seguridad, pues siempre puede haber un peatón o conductor que no
este actuando con la debía precaución
7. RECOMENDACIONES
- Se recomienda que en clase se muestre mucho mas detallado el circuito
implementado, pues es difícil de ver por medio de una reunión virtual.