Está en la página 1de 12

Profesor: José Daniel Pinzón Vivas

Alumnos:
Carlos Manuel Novelo Ferrer
Jesús Cuauhtémoc Que Vera
Ricardo Habid Chanona Lavalle
Jesús Roberto Moreno Montero

Materia: Programación estructurada de Microcontroladores

Parcial 1

Fecha:12/09/2022.
Marco teórico
Microcontroladores

El campo de la Ingeniería Electrónica es fundamental en los avances tecnológicos, cuyo


desarrollo y evolución se ha llevado a cabo de forma acelerada en las últimas décadas.

Los microcontroladores son uno de los dispositivos con más potencial para la solución
de problemáticas. Son pequeños chips o dispositivos que pueden ser programados
para realizar acciones o instrucciones que nosotros deseemos. Son de bajo costo,
prácticos y poderosos para circuitos que necesitan ahorrar espacio físico. Además, son
utilizados para mejorar la fiabilidad del funcionamiento y disminuir el consumo en los
circuitos.

Push Buttons

Un push button o pulsador es un tipo de interruptor momentáneo. Los contactos


dentro del interruptor se cierran al ejercer una fuerza sobre este (encendido – ON) y se
abren al retirar dicha fuerza (apagado – OFF). Es esencial para realizar prácticas y
prototipos electrónicos y también es un componente que se encuentra muy
frecuentemente en placas de circuito impreso dentro de muchos aparatos (televisores,
reproductores de audio, controles remotos, etc).

Puede usarse una de las siguientes configuraciones:

● Con resistencia pull-up: para generar un estado lógico alto (high) cuando está
inactivo y un estado bajo (low) cuando está activo.
● Con resistencia pull-down: para generar un estado lógico bajo (low) cuando está
inactivo y un estado alto (high) cuando está activo.

Displays de 7 segmentos

El display de siete segmentos es un aparato utilizado para presentar información de


forma visual. Específicamente un dígito decimal del 0 (cero) al 9 (nueve), por lo que se
deriva que el código BCD está involucrado. Cada segmento tiene la forma de una
pequeña línea incandescente.

Por lo general, este componente se utiliza para la representación de números en


muchos dispositivos electrónicos. Internamente están constituidos por una serie de
diodos LED con unas determinadas conexiones internas, estratégicamente ubicados
para que forme un número 8 al unir los segmentos en el gráfico. Cada uno de los
segmentos que conforman la pantalla, están marcados con siete primeras letras del
alfabeto ('a'-'g'), y se montan de forma que permiten activar cada segmento por
separado, consiguiendo formar cualquier dígito numérico.

Transistores NPN

Un transistor, también conocido como un BJT (Transistor de Unión Bipolar), es un


dispositivo semiconductor impulsado por corriente, que puede ser utilizado para
controlar el flujo de corriente eléctrica en la que una pequeña cantidad de corriente en
el conductor base controla una mayor cantidad de corriente entre el Colector y el
Emisor. Se pueden utilizar para amplificar una señal débil, como un oscilador o un
interruptor.

Un transistor NPN es impulsado (o activado) por corriente positiva polarizada en la


base para controlar el flujo de corriente del Colector al Emisor.
Materiales
● Arduino Uno R3
● 2 Cátodo Visualizador de 7 segmentos
● 2 Pulsador
● 2 Transistor NPN (BJT)
● 2 330 Ω Resistencia
● 2 10 kΩ Resistencia

Desarrollo
Definición de puertos de entrada y declaración de variables

Configuración de pines como salida o entrada,


declaramos tiempos para el botón y el juego.
Se llaman a las funciones al ciclo repetitivo

Se utilizó el tiempo en milisegundos junto con el push button para cambiar la variable estado
dependiendo el botón y crear un efecto ascendente y descendente en los números, también se
definió el aumento de la velocidad (jugadas) reduciendo el tiempo de espera 10% cada 2 jugadas.
Para aumentar o disminuir los números se utilizaron cuenta y cuenta2 para los números que se iban
a mostrar en el display y se utilizó dirección2 y dirección para aumentar y disminuir un número a la
vez. De igual manera definimos que al llegar una cuenta a 10 haya un ganador haciendo un efecto
de parpadeo en el display del jugador ganador.
Función de multiplexado en el que se prende ambos displasy de manera muy rápida casi
imperceptible al ojo humano en la que utilizamos a una función que nos permite asignar números
enteros a los displays de uno en uno aunque es tan rápido que no se nota.

Función que convierte los números binarios en segmentos del display para mostrar números
enteros.
Evidencias

Figura 1 y 2. Diseño del circuito en físico

Figura 3. Diseño del circuito en Tinkercad

Link a youtube evidencia circuito físico:


https://www.youtube.com/watch?v=UWKhZDRqqbE&feature=youtu.be
Código:

1. #define led1 11
2. #define led2 10
3. #define b1 12
4. #define b2 13
5. int digit = 5;
6. int seg7[] = {7,8,4,5,6,3,2,9};
7. int codes[] = {63, 6, 91, 79, 102, 109,125,7,127,111,128};
8. int digit2=5;
9.
10. unsigned long tiempo_boton;
11. unsigned long tiempo_juego;
12.
13. bool estado;
14. bool estado2;
15. int espera_boton;
16. int espera_juego;
17. int direccion=1;
18. int direccion2=-1;
19. int cuenta=5;
20. int cuenta2=5;
21. int jugadas=0;
22.
23. void setup()
24. {
25. pinMode(LED_BUILTIN,OUTPUT);
26. pinMode(led1,OUTPUT);
27. pinMode(led2,OUTPUT);
28. pinMode(b1,INPUT);
29. pinMode(b2,INPUT);
30. for(int i = 0; i < 8; i++){
31. pinMode(seg7[i], OUTPUT); //Configura los pines como salida
32. }
33. binary(codes[5]);
34. digitalWrite(led2,HIGH);
35. binary(codes[5]);
36. digitalWrite(led1,HIGH);
37. tiempo_boton = millis();
38. tiempo_juego = millis();
39. estado = LOW;
40. estado2 =LOW;
41. espera_boton =200;
42. espera_juego = 1000;
43. Serial.begin(9600);
44. }
45. void loop()
46. {
47. cuentaled ();
48. multiplex25();
49. }
50. void cuentaled (){if(digitalRead(b1) == HIGH && millis()-tiempo_boton >= espera_boton){
51. estado2=LOW;
52. estado = !estado;
53. tiempo_boton = millis();
54. direccion=1;
55. jugadas++;
56. if(jugadas%2 == 0){
57. espera_juego-=100;
58. }
59. }
60. if(estado==HIGH && millis()-tiempo_juego >= espera_juego){
61. cuenta+=direccion;
62. cuenta2-=direccion;
63. tiempo_juego = millis();
64. if (cuenta == 10){
65. for (int i=0;1<20;i++){
66. digitalWrite(led2,LOW);
67. digitalWrite(led1,LOW);
68. delay(100);
69. binary(codes[1]);
70. digitalWrite(led1,HIGH);
71. delay(100);
72. }
73. while(1);
74. }
75. }
76. if(digitalRead(b2) == HIGH && millis()-tiempo_boton >= espera_boton){
77. estado=LOW;
78. estado2=!estado2;
79. tiempo_boton = millis();
80. direccion2=-1;
81. jugadas++;
82. if(jugadas%2 == 0){
83. espera_juego-=100;
84. }
85. }
86. if (estado2==HIGH && millis()-tiempo_juego >= espera_juego){
87. cuenta+=direccion2;
88. cuenta2-=direccion2;
89. tiempo_juego = millis();
90. if (cuenta2 == 10){
91. for (int i=0;1<20;i++){
92. digitalWrite(led1,LOW);
93. digitalWrite(led2,LOW);
94. delay(100);
95. binary(codes[2]);
96. digitalWrite(led2,HIGH);
97. delay(100);
98. }
99. while(1);
100. }
101. }
102. }
103. void multiplex25(){
104. digitalWrite(led1,LOW);
105. binary(codes[cuenta2]);
106. digitalWrite(led2,HIGH);
107. delay(10);
108. digitalWrite(led2,LOW);
109. binary(codes[cuenta]);
110. digitalWrite(led1,HIGH);
111. delay(10);
112. }
113. void binary(int num){
114. for(int j = 0; j <8; j++){
115. if(((num >> j) & 1) == HIGH){
116. digitalWrite(seg7[j],HIGH);
117. }else{
118. digitalWrite(seg7[j],LOW);
119. }
120. }
121. }
Conclusiones
Al finalizar esta práctica, nos pudimos dar cuenta de ahora somos capaces de controlar
dos displays de 7 segmentos con solo dos botones y un par de herramientas, igual
aprendimos el manejo y programación de los controladores p 2222, para poder
implementarlo en cualquiera de nuestros proyectos mas adelante, ahorita aprendimos a
multiplexar con los controladores, pero estoy seguro de que más adelante nos ayudara
a poder implementar esto a otros proyectos. Aparte de que este proyecto nos ayudo a
entender mejor todos los conceptos y técnica que vimos a lo largo del primer parcial,
por eso consideramos que este proyecto nos ayudó mucho, pues aprendimos a
implementar varios componentes, programarlos y hacerlos funcionar dependiendo de la
situación

Referencias.

● Geek Factory. (2022, 9 septiembre). Push button estándar 4 pines (pulsador,

botón). Recuperado 12 de septiembre de 2022, de

https://www.geekfactory.mx/tienda/componentes/interruptores/push-button-est

andar-4-pines-pulsador-boton/

● 🥇 ¿Qué es un MICROCONTROLADOR? Tipos, aplicaciones, etc. (2022, 8

septiembre). Todo Sobre Microcontroladores. Recuperado 12 de septiembre

de 2022, de https://microcontroladoress.com/

● N, A. (2022, 28 marzo). Display de 7 segmentos. Industrias GSL. Recuperado

12 de septiembre de 2022, de

https://industriasgsl.com/blogs/automatizacion/display-de-7-segmentos

● LeDuc, J. (2017, 21 diciembre). Conceptos básicos de transistores PNP y

NPN con 2N3904, 2N3906, 2N2222, 2N2907. Digi-Key ELECTRONICS.

Recuperado 12 de septiembre de 2022, de

https://www.digikey.com.mx/es/articles/transistor-basics#:~:text=Un%20transi
stor%20NPN%20es%20impulsado,flujo%20del%20Emisor%20al%20Colector

También podría gustarte