Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Alumnos:
Carlos Manuel Novelo Ferrer
Jesús Cuauhtémoc Que Vera
Ricardo Habid Chanona Lavalle
Jesús Roberto Moreno Montero
Parcial 1
Fecha:12/09/2022.
Marco teórico
Microcontroladores
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
● 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
Transistores NPN
Desarrollo
Definición de puertos de entrada y declaración de variables
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
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.
https://www.geekfactory.mx/tienda/componentes/interruptores/push-button-est
andar-4-pines-pulsador-boton/
de 2022, de https://microcontroladoress.com/
12 de septiembre de 2022, de
https://industriasgsl.com/blogs/automatizacion/display-de-7-segmentos
https://www.digikey.com.mx/es/articles/transistor-basics#:~:text=Un%20transi
stor%20NPN%20es%20impulsado,flujo%20del%20Emisor%20al%20Colector