Lab 7
Lab 7
Lab 7
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.
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:
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);
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