Skip to content
This repository was archived by the owner on Dec 14, 2024. It is now read-only.

Commit 1f82744

Browse files
Merge pull request #89 from SofiaEct/main
agregar apuntes SofiaEct
2 parents 179c14d + 74571c1 commit 1f82744

File tree

1 file changed

+76
-83
lines changed

1 file changed

+76
-83
lines changed

05-SofiaEct/clase-05/README.md

+76-83
Original file line numberDiff line numberDiff line change
@@ -1,86 +1,79 @@
11
# clase-05
22

3-
## VOCAL HUNT
3+
## CÓDIGO (DEFINICIONES Y OTRAS COSAS) :b
4+
5+
**definiciones de los códigos que utilizamossacadas de google + clases**
6+
7+
- ___const int___: significa constante. Es un calificador variable que modifica el comportamiento de la variable, haciendo que sea una variable de "sólo lectura". No es modificable.
8+
- ___int___: variable modificable.
9+
- ___pinMode___: sirve para configurar el modo de trabajo de un pin pudiendo ser INPUT (entrada) u OUTPUT (salida).
10+
- ___digitalWrite___: sirve para establecer un valor de HIGH o LOW en un pin digital de Arduino siempre y cuando se haya configurado como salida (OUTPUT).
11+
- ___switch___: evalúa una expresión de una lista de posibles coincidencias (los ___int___), cuando encuentra una correspondencia se ejecuta un bloque de instrucciones.
12+
- ___break___: finaliza la ejecución de la instrucción do , for , ___switch o while___ más próxima que la incluya.
13+
- ___Serial.println___: (estado) es el que nos permite enviar datos por comunicación serial.
14+
- ___bool___: Las variables de este tipo solo pueden tener dos valores: verdadero o falso, por ejemplo 0 o 1.
15+
- ___Serial.begin___: establece la velocidad de transmisión en baudios y se utiliza para indicar a la placa Arduino que está lista para enviar y recibir datos. No necesitamos más de 9600.
16+
- ___void loop___: es la función principal, el punto de entrada a nuestro programa, es el lugar donde tenemos que poner los comandos que se ejecutarán mientras la placa Arduino esté habilitada.
17+
- ___enum___: es una herramienta que nos proporciona el C++ para ayudarnos a detectar posibles errores en el código.
18+
- ___false___: se define como 0 (cero), hay que tener en cuenta que las constantes true y false se escriben en minúsculas, a diferencia de HIGH, LOW, INPUT y OUTPUT.
19+
- ___true___: comunmente se define como 1, lo cual es correcto, pero true tiene una definicion mas amplia, cualquier entero que no es cero es true.
20+
- ___digitalRead___: sirve para leer un valor (o poner en un estado) un pin digital.
21+
22+
## DIAGRAMA DE FLUJO: ¡VOCAL HUNT!
23+
24+
1. conecta al juego a una fuente de energía a través de un cable usb
25+
2. el juego queda en un estado de espera hasta que el jugador inicie el juego apretando cualquier tecla/botón
26+
3. las letras que apareceran en el arduino corresponderan a la vocales, debes de apretar el botón con la letra que se muestra en la pantalla
27+
4. gradualmente aumenta la complejidad de este juego, disminuyendo los intervalos en los que se muestra la vocal y agregado a eso a animaciones que indiquen que se acaba el tiempo de reacción, hay un margen de error de 2 intentos, al equivocarse una tercera vez el juego vuelve al modo de espera, y para volver a empezar hay que presionar cualquier botón
28+
5. una vez acabadas las 2 vidas el juego volvera a un modo de espera o despues de un tiempo considerable de no interaccion
29+
30+
## CODIGO PRINCIPAL CON ERRORES
31+
32+
```c++
33+
// lenguaje de c++ para detectar posibles errores en el código y valores, por lo que lo usamos ahora para definir los estados de nuestro dispopsitivo
34+
enum State {
35+
STANDBY, // en espera
36+
ACTIVO, // una vez se inicia el juego
37+
TRABAJANDO // mientras el usuario juega con con 'vocal hunt' (mientras que este dentro del rango de vidas)
38+
};
39+
40+
// el pin es donde se conecta el botón al arduino, en este casi en la ranura número 2
41+
const int BUTTON_PIN = 2;
42+
43+
//estado actual en espera
44+
State currentState = STANDBY;
45+
46+
void setup() {
47+
// comandos utilizados de edgar pon para usar botones en arduino con if-else https://edgarpons.com/botones-en-arduino-y-comandos-if-else/
48+
pinMode(2, OUTPUT);
49+
pinMode(13, INPUT);
50+
Serial.begin(9600);
51+
}
52+
// aqui se ponen todos los comandos que el ardino debe de ejecutar haciandolos que esten en continua funcionamiento, que pase mas de una vez
53+
// comandos utilizados de edgar pon para usar botones en arduino con if-else https://edgarpons.com/botones-en-arduino-y-comandos-if-else/
54+
void loop() {
55+
//irve para leer un valor (o poner en un estado) un pin digital.
56+
switch (currentState) {
57+
// en este estado esperamos la accion del usuario que seria 'presionar cualquie boton para que empiece el juego' y asi cambie a un estado activo
58+
case STANDBY:
59+
Serial.println("En estado STANDBY");
60+
int BUTTON_PIN = digitalRead(2);
61+
// si el valor de el boton es igual a 1
62+
// una vez accionado un boton salimos del estado standby
63+
if (BUTTON_PIN == 1) {
64+
digitalWrite(13, HIGH);
65+
} else {
66+
digitalWrite(13, LOW);
67+
break;
68+
}
69+
}
70+
}
71+
```
72+
## CÓDIGO ACTUAL
73+
74+
primero para corregir el codigo anterior tuvimos una reunion con [@montoyamoraga](https://github.com/montoyamoraga?tab=repositories&q=&type=&language=&sort=) donde pudimos darnos cuenta de algunas cosas, algo importante fue lo siguiente:
75+
76+
para que quien no tenga un pulsador o tenga problemas para conectarlo/hacerlo funcionar )siempre y cuando este trabajando con pinMode(INPUT_PULLUP)) pueden conectar uno de estos cablecitos corto a GND y al numero de pin que tengan en su codigo (en mi caso 2)
77+
78+
![image](https://github.com/user-attachments/assets/b4b9688c-c1cf-419b-8a3e-4f943cf69729)
479

5-
Con [@Mosswhosmoss](https://github.com/Mosswhosmoss/dis8637-2024-2/blob/main/01-Mosswhosmoss/clase-04/README.md) ideamos el proyecto __"VOCAL HUNT"__ que trata de un juego interactivo que combina el tiempo de reacción y reflejos del jugador, inspirado por el juego _“whack-a-mole”_. El objetivo del juego es poner nervioso al jugador, ya que tiene un tiempo límite para presionar cada vocal como lo sería el juego_”pop it”_ y además funciona con vidas. A medida que los jugadores avanzan las secuencias, estos aumentan en dificultad.
6-
7-
El propósito principal de "VOCAL HUNT" es desarrollar y mantener las habilidades motoras finas y reflejos, especialmente en grupos etarios que pueden encontrar desafíos particulares en estas áreas, como niños en desarrollo y adultos mayores. Al enfocarse en la velocidad de reacción y la coordinación ojo-mano, el juego ofrece un entrenamiento cognitivo y físico divertido y accesible.
8-
9-
## REFERENTES
10-
11-
***Ejemplo del juego whack-a-mole***
12-
13-
![***Ejemplo whack-a-mole*** ](img/whackamole.png)
14-
15-
***Ejemplo del juego pop it***
16-
17-
https://github.com/user-attachments/assets/cc712618-53b4-4c0d-a535-d1b04aa49962
18-
19-
***Ejemplo de virtual sports play dance mat***
20-
21-
![***Ejemplo virtual sports mat*** ](img/virtual_sport_mat.png)
22-
23-
## DISEÑO Y MATERIALES
24-
25-
Ideamos el diseño del dispositivo como una caja de madera, en la cual tendría sus respectivas instrucciones y guías gráficas para el uso del mismo.
26-
27-
***Boceto de "VOCAL HUNT"***
28-
29-
![Boceto Vocal Hunt](img/bocetoproyecto.jpeg)
30-
31-
***Imagen de [@brandnewnoise](https://www.instagram.com/brandnewnoise)***
32-
33-
<img width="422" alt="image" src="https://github.com/user-attachments/assets/52393c02-7d55-47f8-8ff8-1a245522591a">
34-
35-
***Materiales***
36-
37-
1. Madera mdf
38-
2. Botones / pulsadores led Arcade
39-
3. Arduino
40-
4. Cables de conexión
41-
42-
***jugabilidad***
43-
44-
El jugador se enfrenta a un panel con 5 botones, cada uno representando una vocal (A, E, I, O, U). En la pantalla central se mostrará una secuencia de vocales que deberá seguir al pie de la letra. Cada vocal aparecerá con un temporizador que marca el tiempo límite para reaccionar. El jugador debe concentrarse y actuar con rapidez, presionando el botón correcto antes de que se agote el tiempo.
45-
46-
El jugador cuenta con 2 vidas, y perderá una cada vez que cometa un error o no presione el botón a tiempo. A medida que el juego avanza, las secuencias se vuelven más rápidas y complicadas, aumentando la presión. El reto consiste en mantener la calma y reaccionar con precisión, pues cuando las 2 vidas se agoten, el juego terminará.
47-
48-
## Construcción del objeto
49-
50-
Al principio intentamos hacer una estructura transportable, es decir pequeña. Primero lo intentamos hacer con impresión 3d donde [@AlanisMria](https://github.com/AlanisMria/dis8637-2024-2) me ayudo a modelar, con un tiempo de espera de 12 hrs y que terminó fallando
51-
![Modelado_3D](img/Modelado_3D.jpg).
52-
![Fallo_modelado_3D](img/Fallo_modelado_3D.jpg)
53-
Descubrimos que falló porque confundimos un filamento ABS por uno PLA
54-
55-
Luego siguiendo con la idea de la transportabilidad hicimos una caja chiquita con la ayuda de mi papá
56-
57-
![cortandoMadera](img/cortandoMadera.jpg)
58-
![maderaCortada](img/maderaCortada.jpg)
59-
![piezasCaja](img/piezasCaja.jpg)
60-
![cajaArmada](img/cajaArmada.jpg)
61-
62-
Al final no cabía ningún circuito en la caja así que se hizo una mas grande
63-
64-
![cajaGrande](img/cajaGrande.jpeg)
65-
![cajaLijadaArriba](img/cajaLijadaArriba.jpeg)
66-
![cajaLijada](img/cajaLijada.jpeg)
67-
68-
para hacerle los agujeros requerimos de la ayuda de mi padre nuevamente
69-
70-
![hoyosBotones](img/hoyosBotones.jpg)
71-
![hoyosBotonesProblemas](img/hoyosBotonesProblemas.jpg)
72-
El problema de hacer los ahgujeros era que el MDF se quemaba y se pegaba en la broca demorandonos más en hacer todos los agujeros
73-
74-
https://github.com/user-attachments/assets/67e6b9ee-4b94-49aa-abf2-10c8dd6cbc03
75-
76-
## DIAGRAMA DE FLUJO
77-
78-
tarea: quiero jugar al juego de secuencia
79-
80-
casos limites:
81-
82-
1. Conecta al juego a una fuente de energía a través de un cable usb
83-
2. El juego queda en un estado de espera hasta que el jugador inicie el juego apretando cualquier tecla/botón
84-
3. Las letras que aparecerán en el arduino corresponderá a la vocales, debes de apretar el botón con la letra que se muestra en la pantalla
85-
gradualmente aumenta la complejidad de este juego, disminuyendo los intervalos en los que se muestra la vocal y agregado a eso a animaciones que indiquen que se acaba el tiempo de reacción, hay un margen de error de 2 intentos, al equivocarse una tercera vez el juego vuelve al modo de espera, y para volver a empezar hay que presionar cualquier botón
86-
4. Una vez acabadas las 2 vidas el juego volverá a un modo de espera o después de un tiempo considerable de no interacción

0 commit comments

Comments
 (0)