Arquitectura de Microcontroladores - Práctica 2

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 5

1

Práctica 2. Básicas
Universidad de Guanajuato, División de Ciencias e Ingenierías
Arquitectura de Microcontroladores
Profesor: Dr. Eduardo Montes Ramírez
Fonseca Uribe Oswaldo Emmanuel 1
Muñoz González Raúl Gilberto 2

Resumen—Se creó un circuito básico utilizando una placa de Para la configuración del display de 7 segmentos se tomó en
Arduino UNO para hacer encender un display de 7 segmentos y cuenta que, ya que cada segmento es un LED de color rojo
escribir caracteres en él. individual, se debía colocar una resistencia de 330Ω para cada
uno y conectarse de manera individual en cada pin de la placa,
por lo que la secuencia de segmentos a-g y el punto fueron
I. C IRCUITO E LECTRÓNICO configurados para los pines del 2 al 9.
La figura 1 muestra el circuito simulado en la plataforma Para ilustrar esta desición, la figura 2 a continuación se
Tinkercad, mismo que se construyó durante la práctica en el presenta la configuración del circuito de este display:
laboratorio.

Figura 1. Circuito de la práctica simulado

II. O BJETIVOS
Crear un ciclo que genere una secuencia del 0 al F en
un display de 7 segmentos.
Cambiar sentido de la secuencia (ascendente <>descen-
dente) de manera automática.
Cambiar sentido de la secuencia (ascendente <>descen-
Figura 2. Diagrama del display de 7 segmentos de cátodo común
dente) al pulsar un pulsador.
Además, se presenta la disposición de los caracteres en el
III. M ATERIALES Y M ONTAJE E XPERIMENTAL display en la figura 3:
Materiales utilizados en la práctica:
Computadora Portátil
Placa de Arduino UNO R3 y cable de alimentación USB
Protoboard
Display 7 Segmentos (cátodo común)
Cable C22 (varios colores)
Caimanes de conección
9 Resistencias 330Ω
1 Resistencia 1kΩ
1 Pulsador de 2 terminales (push button) Figura 3. Disposición de LEDs en el display
Primeramente se realizó el código en el IDE de Arduino
Tras esto, el pulsador se configuró como una entrada en el
en la computadora portátil, mismo presentado en la sección
pin 10 y, como auxiliar para reconocer visiblemente el orden
pertinente de este reporte.
de la secuencia (ascendente o descendente), un led en el pin
1 Lic. en Física [email protected] 11.
2 Ing. Química Sustentable [email protected]
2

Las figuras 4 y 5 muestran el circuito montado utilizado. void setup() {


pinMode(a, OUTPUT);
pinMode(b, OUTPUT);
pinMode(c, OUTPUT);
pinMode(d, OUTPUT);
pinMode(e, OUTPUT);
pinMode(f, OUTPUT);
pinMode(g, OUTPUT);
pinMode(dot, OUTPUT);
pinMode(pulsador, INPUT);
}

void CERO() {
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, HIGH);
digitalWrite(g, LOW);
digitalWrite(dot, LOW);
Figura 4. Circuito montado
}

void UNO() {
digitalWrite(a, LOW);
digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
digitalWrite(d, LOW);
digitalWrite(e, LOW);
digitalWrite(f, LOW);
digitalWrite(g, LOW);
digitalWrite(dot, LOW);
}

void DOS() {
digitalWrite(a, HIGH);
digitalWrite(b, HIGH);
digitalWrite(c, LOW);
digitalWrite(d, HIGH);
digitalWrite(e, HIGH);
digitalWrite(f, LOW);
digitalWrite(g, HIGH);
Figura 5. Circuito montado digitalWrite(dot, LOW);
}
IV. C ÓDIGO void TRES() {
A continuación se presenta el código creado para la práctica, digitalWrite(a, HIGH);
éste está programado por partes para observar correctamente digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
cada uno de los objetivos por separado:
digitalWrite(d, HIGH);
digitalWrite(e, LOW);
IV-A. Objetivo 0 digitalWrite(f, LOW);
digitalWrite(g, HIGH);
Como objetivo de toda la práctica, se debe mostrar en, un digitalWrite(dot, LOW);
display de 7 segmentos, caracteres alfanuméricos, del 0 al 9 y }
de A a F, por lo que se presenta a continuación las subrutinas
de cada uno de estos caracteres, así como las variables de los void CUATRO() {
digitalWrite(a, LOW);
pines en donde se escriben: digitalWrite(b, HIGH);
digitalWrite(c, HIGH);
const int a = 2; digitalWrite(d, LOW);
const int b = 3; digitalWrite(e, LOW);
const int c = 4; digitalWrite(f, HIGH);
const int d = 5; digitalWrite(g, HIGH);
const int e = 6; digitalWrite(dot, LOW);
const int f = 7; }
const int g = 8;
const int dot = 9; void CINCO() {
digitalWrite(a, HIGH);
3

digitalWrite(b, LOW); digitalWrite(e, HIGH);


digitalWrite(c, HIGH); digitalWrite(f, HIGH);
digitalWrite(d, HIGH); digitalWrite(g, HIGH);
digitalWrite(e, LOW); digitalWrite(dot, LOW);
digitalWrite(f, HIGH); }
digitalWrite(g, HIGH);
digitalWrite(dot, LOW); void C() {
} digitalWrite(a, HIGH);
digitalWrite(b, LOW);
void SEIS() { digitalWrite(c, LOW);
digitalWrite(a, HIGH); digitalWrite(d, HIGH);
digitalWrite(b, LOW); digitalWrite(e, HIGH);
digitalWrite(c, HIGH); digitalWrite(f, HIGH);
digitalWrite(d, HIGH); digitalWrite(g, LOW);
digitalWrite(e, HIGH); digitalWrite(dot, LOW);
digitalWrite(f, HIGH); }
digitalWrite(g, HIGH);
digitalWrite(dot, LOW); void D() {
} digitalWrite(a, LOW);
digitalWrite(b, HIGH);
void SIETE() { digitalWrite(c, HIGH);
digitalWrite(a, HIGH); digitalWrite(d, HIGH);
digitalWrite(b, HIGH); digitalWrite(e, HIGH);
digitalWrite(c, HIGH); digitalWrite(f, LOW);
digitalWrite(d, LOW); digitalWrite(g, HIGH);
digitalWrite(e, LOW); digitalWrite(dot, LOW);
digitalWrite(f, LOW); }
digitalWrite(g, LOW);
digitalWrite(dot, LOW); void E() {
} digitalWrite(a, HIGH);
digitalWrite(b, LOW);
void OCHO() { digitalWrite(c, LOW);
digitalWrite(a, HIGH); digitalWrite(d, HIGH);
digitalWrite(b, HIGH); digitalWrite(e, HIGH);
digitalWrite(c, HIGH); digitalWrite(f, HIGH);
digitalWrite(d, HIGH); digitalWrite(g, HIGH);
digitalWrite(e, HIGH); digitalWrite(dot, LOW);
digitalWrite(f, HIGH); }
digitalWrite(g, HIGH);
digitalWrite(dot, LOW); void EFE() {
} digitalWrite(a, HIGH);
digitalWrite(b, LOW);
void NUEVE() { digitalWrite(c, LOW);
digitalWrite(a, HIGH); digitalWrite(d, LOW);
digitalWrite(b, HIGH); digitalWrite(e, HIGH);
digitalWrite(c, HIGH); digitalWrite(f, HIGH);
digitalWrite(d, HIGH); digitalWrite(g, HIGH);
digitalWrite(e, LOW); digitalWrite(dot, LOW);
digitalWrite(f, HIGH); }
digitalWrite(g, HIGH);
digitalWrite(dot, LOW); void PUNTO() {
} digitalWrite(a, LOW);
digitalWrite(b, LOW);
void A() { digitalWrite(c, LOW);
digitalWrite(a, HIGH); digitalWrite(d, LOW);
digitalWrite(b, HIGH); digitalWrite(e, LOW);
digitalWrite(c, HIGH); digitalWrite(f, LOW);
digitalWrite(d, LOW); digitalWrite(g, LOW);
digitalWrite(e, HIGH); digitalWrite(dot, HIGH);
digitalWrite(f, HIGH); }
digitalWrite(g, HIGH);
digitalWrite(dot, LOW);
}
IV-B. Objetivo 1
void B() {
digitalWrite(a, LOW); Crear un ciclo que genere una secuencia del 0 al F en
digitalWrite(b, LOW); un display de 7 segmentos.
digitalWrite(c, HIGH); Para cumplir con este objetivo, se creo una subrutina de
digitalWrite(d, HIGH); nombre void Ascendente(); que ejecuta las subrutinas
4

de los caracteres en ese orden con un tiempo de separación delay(100);


de 1 segundo entre cada una, obteniendo así la ejecución }
de nuestra seuencia, además de usar 2 subrutinas estéticas
(APAGAR(); y PARPADEAR();) que permiten separar,
con un parpadeo del punto en el display, una secuencia de otra: IV-C. Objetivo 2
Cambiar sentido de la secuencia (ascendente <>descen-
dente) de manera automática.
void loop() { Aprovechando el void loop(), se crea simplemente una
Ascendente(); subrutina de nombre void Descendente(); que ejecuta
}
las subrutinas de los caracteres en ese orden con un tiempo
void Ascendente() { de separación de 1 segundo entre cada una, obteniendo así la
CERO(); ejecución de nuestra seuencia y después, solamente se ejecutan
delay(500); ambas.
UNO();
delay(500);
DOS(); void loop() {
delay(500); Ascendente();
TRES(); Descendente();
delay(500); }
CUATRO();
delay(500); void Descendente() {
CINCO(); EFE();
delay(500); delay(500);
SEIS(); E();
delay(500); delay(500);
SIETE(); D();
delay(500); delay(500);
OCHO(); C();
delay(500); delay(500);
NUEVE(); B();
delay(500); delay(500);
A(); A();
delay(500); delay(500);
B(); NUEVE();
delay(500); delay(500);
C(); OCHO();
delay(500); delay(500);
D(); SIETE();
delay(500); delay(500);
E(); SEIS();
delay(500); delay(500);
EFE(); CINCO();
delay(500); delay(500);
PARPADEAR(); CUATRO();
delay(500); delay(500);
} TRES();
delay(500);
void APAGAR() { DOS();
digitalWrite(a, LOW); delay(500);
digitalWrite(b, LOW); UNO();
digitalWrite(c, LOW); delay(500);
digitalWrite(d, LOW); CERO();
digitalWrite(e, LOW); delay(500);
digitalWrite(f, LOW); PARPADEAR();
digitalWrite(g, LOW); delay(500);
digitalWrite(dot, LOW); }
}

void PARPADEAR(){
PUNTO(); IV-D. Objetivo 3
delay(100);
APAGAR(); Cambiar sentido de la secuencia (ascendente
delay(100); <>descendente) al pulsar un pulsador.
PUNTO(); Para lograr esto, definiremos las variables de los pines de
delay(100); nuestro pulsador y de nuestro LED individual, así como
APAGAR();
usar una estructura que nos permita ejecutar continuamente
5

nuestras subrutinas mientras no se presione nuestro pulsador.

const int pulsador = 10;


const int foco = 11;

void setup() {
pinMode(pulsador, INPUT);
pinMode(foco, OUTPUT)
}

void loop () {
digitalWrite(foco, HIGH);
do{
PARPADEAR();
Ascendente();
}while (digitalRead(pulsador) == LOW);

digitalWrite(foco, LOW);

do{
PARPADEAR();
Descendente();
}while (digitalRead(pulsador) == LOW);
}

V. C ONCLUSIONES
V-A. Fonseca Uribe Oswaldo Emmanuel
La programación del microcontrolador fue fácil comparado
con la conección de los diferentes segmentos, así como sus
conexiones. Esto me hace pensar en que debe haber diferentes
módulos que faciliten la utilización de estos circuitos, y si no,
su creación debería de ser hecha.
Las subrutinas para cada una de las letras es sencilla pero
repetitiva, por lo que usar alguna especie de arreglos debería
de ser útil. Una vez con las bases establecidas, digase los pines
con nombres de los segmentos y los caracteres definidos, la
creación de textos y su demostración termina siendo sencillo.

V-B. Muñoz González Raúl Gilberto


En general esta práctica fue bastante sencilla, par encender
cada letra y número fue necesario crear una función para cada
una. Con el que más se batalló fue con el del pulsador, sin
embargo utilizando un do while. En caso de que se quisiera
regresar en cada pusación y no solo al finalizarla, se puede
utilizar "switch", sin embargo seria necesario contar con varios
casos. En la clase se mostró una alternativa, que es con la
utilización de matrices, la cual facilita la resolución de la
problemática con menor cantidad de líneas de código.

R EFERENCIAS
[1] [H] Arduino. (2022). Arduino Reference.
https://www.arduino.cc/reference/en/?}_gl=1*11hrmjr*_ga*MTU0MDY3
NzA5MC4xNjYwNzAwNDA2*_ga_NEXN8H46L5*MTY2MDcwMDQw
NS4xLjEuMTY2MDcwMDQyMC40NS4wLjA.

También podría gustarte