Sei sulla pagina 1di 6

LABORATORIO DE ELECTRÓNICA DIGITAL I II-2019

LABORATORIO N º 7
ENTRADAS Y SALIDAS DISCRETAS APLICADAS A LA PLACA
ARDUINO EN CIRCUITOS LÓGICOS COMBINACIONALES
1. Objetivo: Esta práctica tiene como objetivo utilizar los pines de entrada y salida de la
placa Arduino configuradas como entradas discretas para implementar funciones lógicas
combinacionales mediante códigos programados por el estudiante.

2. Marco teórico: Arduino cuenta a través de su lenguaje de programación basado en


C/C++ y el entorno de desarrollo (IDE) con un conjunto de funciones que permite
configurar los pines como entrada o salida. Estudiaremos en principio estas funciones:

pinMode(pin, mode): Esta instrucción se utiliza en la etapa de configuración (setup) del


sketch, pudiéndose configurar los pines como entrada (INPUT) o salida (OUTPUT). Los
terminales de Arduino en el momento de energizarlo están como entradas, desde el punto
de vista eléctrico como entradas en estado de alta impedancia. Estos pines tienen a nivel
interno una resistencia de 20 KΩ que pueden ser activadas por software de la siguiente
forma:

Las resistencias internas se utilizan para conectar las entradas a interruptores. Cuando se
configuran los pines como salida, estos se comportan como terminales en baja impedancia
y pueden proporcionar 40 mA. a otros dispositivos o cargas. Una corriente elevada en los
pines del Arduino configurada como salida pueden destruir el microcontrolador, por lo
tanto es aconsejable conectar una resistencia externa (470Ω a 1KΩ) a los pines
configurados como salidas.

digitalRead(pin): Lee el valor de un pin digital dando como resultado un valor alto
(HIGH) o bajo (LOW). El pin se puede especificar como una variable o como una
constante (0 - 13):

digitalWrite(pin): Envía al pin el valor HIGH o LOW. El pin se puede especificar como
una variable o como una constante (0 - 13):
LABORATORIO DE ELECTRÓNICA DIGITAL I II-2019

Los pines digitales de la placa Arduino uno R3 son los numerados del 0 al 13, sin embargo
no se deben utilizar los pines 0 y 1 que están reservados para la comunicación serial entre la
computadora y el Arduino.

Figura 1: Descripción de los pines digitales de Arduino. Fuente Taller de Arduino, Tojeiro
2014

3. Procedimiento experimental:

Programa 1: Controlar el encendido de un LED mediante un pulsador. El pulsador debe


mantenerse encendido durante dos segundos tras los cuales se apagará hasta que se
vuelva a presionar el pulsador.

Figura 2: Diagrama de flujo para el programa 1. Fuente Taller de Arduino, Tojeiro 2014
LABORATORIO DE ELECTRÓNICA DIGITAL I II-2019

El pulsador será conectado al pin 7 digital de la placa Arduino, a través de una resistencia
de pull up de 10 KΩ. Mientras que el pin de salida será el pin 12 que se conectará mediante
una resistencia a un LED. Las resistencias de pull up y pull down son resistencias colocadas
en una determinada configuración junto con un interruptor en serie. De esta forma se
eliminan los estados lógicos falsos producidos por ruido eléctrico.

Programa 2: Realizar el control de una secuencia de dos semáforos que deben ser
sincronizados para el cruce de dos calles. Los tiempos de espera deben ser de 5 segundos en
todos los casos.
LABORATORIO DE ELECTRÓNICA DIGITAL I II-2019

Programa 3: Analizar el siguiente código que utiliza la placa Arduino para realizar
funciones lógicas digitales.

int P4 = 2, P3 = 3, P2 = 4, P1 = 5, P0 = 6;
int R3 = 10, R2 = 11, R1 = 12, R0 = 13;

void setup() {
// put your setup code here, to run once:

/*Entradas*/
pinMode(P4,INPUT_PULLUP);
pinMode(P3,INPUT_PULLUP);
pinMode(P2,INPUT_PULLUP);
pinMode(P1,INPUT_PULLUP);
pinMode(P0,INPUT_PULLUP);

/*Salidas*/
pinMode(R3,OUTPUT);
pinMode(R2,OUTPUT);
pinMode(R1,OUTPUT);
pinMode(R0,OUTPUT);

/*Para iniciar led's apagados*/


digitalWrite(R3, HIGH);
digitalWrite(R2, HIGH);
LABORATORIO DE ELECTRÓNICA DIGITAL I II-2019

digitalWrite(R1, HIGH);
digitalWrite(R0, HIGH);
}

void loop() {
/*
*Entradas negadas para cambiar configuración del pullup
*cuando se lee estado de la entrada
*/
bool a = !digitalRead(P4);
bool b = !digitalRead(P3);
bool c = !digitalRead(P2);
bool d = !digitalRead(P1);
bool e = !digitalRead(P0);

/*Salida R3*/
if( a && ( (d&&!e&&!(b^c)) || (b&&!c&&!(d^e)) || (!b&&c&&!d&&e) ) ){
digitalWrite(R3,LOW);
}else{
digitalWrite(R3, HIGH);
}

/*Salida R2*/
if(!a&&( (b&&e&&!(c^d)) || (c&&!e&&(b^d)) || (!b&&!c&&d&&e) )){
digitalWrite(R2,LOW);
}else{
digitalWrite(R2, HIGH);
}

/*Salida R1*/
if( c&&((a^e)&&(!(b^d))) || b&&!c&& ((!a&&d&&!e)||a&&!d&&e) ){
digitalWrite(R1,LOW);
}else{
digitalWrite(R1,HIGH);
}

/*Salida R0*/
if( c && (b^e) && (a^d) ){
digitalWrite(R0,LOW);
}else{
digitalWrite(R0, HIGH);
}
}
LABORATORIO DE ELECTRÓNICA DIGITAL I II-2019

4. Materiales:

- Placa Arduino
- Cable USB
- 2 resistencias de 1 K Ohms
- 1 resistencia de 330 Ohms.
- 5 pulsadores
- 3 LEDs rojos
- 3 LEDs amarillos
- 3 LEDs verdes
- Fuente de alimentación
- Protoboard
- Cables de conexión.
- Multímetro

Potrebbero piacerti anche