From 48cd49444293032415f86e940268317e5a73697d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Santiago=20Gaete=20Fern=C3=A1ndez?= <168493763+clifford1one@users.noreply.github.com> Date: Tue, 10 Sep 2024 12:10:35 -0300 Subject: [PATCH 1/4] Update README.md --- 07-clifford1one/clase-04/README.md | 100 ++++++++++++++++++++++++++++- 1 file changed, 99 insertions(+), 1 deletion(-) diff --git a/07-clifford1one/clase-04/README.md b/07-clifford1one/clase-04/README.md index b9c345c5..5e5a169b 100644 --- a/07-clifford1one/clase-04/README.md +++ b/07-clifford1one/clase-04/README.md @@ -166,9 +166,15 @@ https://www.arduino.cc/reference/es/language/functions/digital-io/pinmode/ https://www.w3schools.com/js/js_if_else.asp +##DEFINICIÓN +Guitarra Héroe consiste en un juego de un jugaro que se juega con ambas manos. En pantalla se muestran 3 carriles, con el potenciómetro debes apuntar y seleccionar el carril que tenga una casilla encendida mas cercana al señalizador. Una vez seleccionada se debe usar el gatillo para ejecutar la acción, de esta forma "apagar" la casilla, y poder pasar a la siguiente etapa. + #CÓDIGO Fue un proceso bastante complicado, el cual se compuso por varias fases, en las que iba aprendiendo distintas cosas del funcionamiento general, tanto de los botones como del arduino, y sus actuadores y sensores. +![image](https://github.com/user-attachments/assets/eb5e87e3-c12c-4d7f-89bf-3ad0f98fe9fb) + + ```ino int ledPin = 11; int potPin = A1; @@ -356,7 +362,99 @@ int botonValue = digitalRead(botonWeno); En este còdigo, con el slider puedo seleccionar el carril. El paso siguiente es que al apretar el boton en el carril ocrrecto, se apague el led. - + ##CÓDIGO FINAL + + ```INO +/* + Single Frame + + Displays single frames using matrix.loadFrame + + See the full documentation here: + https://docs.arduino.cc/tutorials/uno-r4-wifi/led-matrix +*/ + +#include "Arduino_LED_Matrix.h" // Incluye the LED_Matrix library +#include "framesv2.h" // Incluye el archivo con los códigos de los frames en lenguaje hexadecimal + +int potPin = A0; //declaro que el pin del potenciómetro es el "A0" +ArduinoLEDMatrix matrix; // Create an instance of the ArduinoLEDMatrix class +//int botonWeno = 2; Originalmente declaraba el pin del pulsador + +bool ogDerSeen = false; //Variable que utilizaré como "flag", que sirve para indicar que una vez que se haya cumplido cierta condición, el código se ejecute a partir de cierta línea +//bool fase2Seen = false; //Ésta era otra flag, utilizada para una fase mas avanzada del juego(por temas de tiempo fue descartada. + +void setup() { + Serial.begin(9600); // Se inicializa la comunicación + matrix.begin(); // Se inicializa la matriz LED +} + +void loop() { + + int potValue = analogRead(potPin); // Acá le pido que, lea el valor(potValue) desde el pin del potenciómetro(potPin). + + int carril = map(potValue, 0, 1023, 0, 255); //Ésta línea sirve para hacer una conversión proporcional entre los valores emitidos por el potenciómetro, y los valores leídos por el pin análogo + if (ogDerSeen == false) { //Declaro que, si, el frame "ogDerSeen" no ha sido mostrado, pasa lo siguiente + if (potValue > 140 && potValue < 401) { + matrix.loadFrame(ogIzq); + } //Declaro que, si, el valor del potenciómetro está entre 142 y 400, muestre el frame "ogIzq". + // Load and display the "danger" frame on the LED matrix + else if (potValue > 400 && potValue < 639) { + matrix.loadFrame(ogMed); + } //Declaro que, si, el valor del potenciómetro está entre 401 y 638, muestre el frame "ogMed". + + else if (potValue > 638 && potValue < 890) { + matrix.loadFrame(ogDer); + ogDerSeen = true;//aca declaro la variable "ogDerSeen" como HIGH, para usarlo como referencia de la fase. + + } //Declaro que, si, el valor del potenciómetro está entre 639 y 889, muestre el frame "ogDer". + } + + +//FASE 2, esto es marcado por la flag "ogDerSeen". +if(ogDerSeen == true) { //Declaro que, si, la variable "ogDerSeen" está HIGH, el código corre a partir de aquí. + // Load and display the "danger" frame on the LED matrix + if (potValue > 638 && potValue < 890) { + matrix.loadFrame(ogDer); + } //aca le pido que si el valor esta entre 400 y 639, se "coloque" en el carril del medio + + else if (potValue > 400 && potValue < 639) { + matrix.loadFrame(fase2); + //fase2Seen = true; + } + + else if (potValue > 140 && potValue < 401) { + matrix.loadFrame(faseExp); + //fase2Seen = true; + } +/* +if(fase2Seen == true) { + if (potValue > 140 && potValue < 401) { + matrix.loadFrame(fase3); + } + else if(potValue > 400 && potValue < 639){ + matrix.loadFrame(fase4); + } + else if(potValue > 638 && potValue < 890){ + matrix.loadFrame(fase5); +} +}*/ //Este es un intento por crear más faces que alarguen la duración del juego. Sin embargo por limitaciones de tiempo no se pudo implementar correctamente. +} +} + + + + + + +/*if (potValue > 638 && potValue < 890 && botonValue == HIGH) { + + matrix.loadFrame(finFase1); + } // aca quiero pedirle que si està en el carril derecho(es decir, que el valor del pot sea entre 638 y 890) y que si el botòn es pulsado, que muestre otro frame +} +*/ //Aquí se encuentra un intento por incluir el botón dentro de las mecanicas del juego. FInalmente no pudo ser implementado. + ``` +En este código se optó por un camino alternativo, debido a que la idea original no se pudo implementar de la manera en que se pensó. La opción del botón se reemplazó por seleccionar el carril con el potenciómetro, y una vez se selecciona el carril correcto se pasa a la siguiente etapa. From 29ed5569cc377090d509a22ebf63e84b44a31dfa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Santiago=20Gaete=20Fern=C3=A1ndez?= <168493763+clifford1one@users.noreply.github.com> Date: Tue, 10 Sep 2024 13:56:07 -0300 Subject: [PATCH 2/4] Update README.md --- 07-clifford1one/clase-04/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/07-clifford1one/clase-04/README.md b/07-clifford1one/clase-04/README.md index 5e5a169b..d6de03dc 100644 --- a/07-clifford1one/clase-04/README.md +++ b/07-clifford1one/clase-04/README.md @@ -115,6 +115,9 @@ El objeto final se compondrá de: Los cambios realizados responden a la nueva mecánica del juego. La versión actual del juego (v1.1.0) consiste en una mecánica de coordinación entre ambas manos. (como en el guitar hero original) Además, con la nueva morfología de heroeGuitarra se ahorra es materiales, costos, y tiempo de fabricación. +![image](https://github.com/user-attachments/assets/9420c443-f8cf-45e3-9eea-44f709370fb8) + + ![texto](./croquisHG-5.jpeg). En el caso de Heroe Guitarra 1.1.0 el "strum bar" y los "fret buttons" son emulados por el potenciómetro y pushbutton respectivamente. De esta forma, el usuario, con el dedo pulgar de una mano debe seleccionar el carril donde se ejecutará la acción(con el potenciómetro) y con el dedo índice de la otra mano deberá ejecutar la acción(con el pushbutton). From 09346e24bffd92ca7337a1a323fa73a1dbabad05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Santiago=20Gaete=20Fern=C3=A1ndez?= <168493763+clifford1one@users.noreply.github.com> Date: Tue, 10 Sep 2024 14:11:38 -0300 Subject: [PATCH 3/4] Update README.md --- 07-clifford1one/clase-04/README.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/07-clifford1one/clase-04/README.md b/07-clifford1one/clase-04/README.md index d6de03dc..731da287 100644 --- a/07-clifford1one/clase-04/README.md +++ b/07-clifford1one/clase-04/README.md @@ -175,6 +175,9 @@ Guitarra Héroe consiste en un juego de un jugaro que se juega con ambas manos. #CÓDIGO Fue un proceso bastante complicado, el cual se compuso por varias fases, en las que iba aprendiendo distintas cosas del funcionamiento general, tanto de los botones como del arduino, y sus actuadores y sensores. +¿Cómo se usa? +Se utiliza con ambas manos, con una mano debes utilizar el potenciómetro para seleccionar el carril donde quieres ejecutar la acción, mientras que simultáneamente, con el dedo índice de la otra mano debes utilizar el gatillo para ejecutar la acción misma. Debes ir ejecutando acciones en el carril correspondiente de abajo a arriba, de modo que los LEDs se apagen, hasta haber completado la pantalla. + ![image](https://github.com/user-attachments/assets/eb5e87e3-c12c-4d7f-89bf-3ad0f98fe9fb) @@ -364,6 +367,31 @@ int botonValue = digitalRead(botonWeno); ``` En este còdigo, con el slider puedo seleccionar el carril. El paso siguiente es que al apretar el boton en el carril ocrrecto, se apague el led. + ```ino + int pulsadorPin = 4; // Variable que guarda el número del pin al que conectamos el pulsador. +int valorPulsador = 0; // Variable donde almacenaremos la lectura del estado del pulsador. + +void setup() { + Serial.begin(9600); // Inicializamos el puerto serie. + pinMode(pulsadorPin, INPUT_PULLUP); // Declaramos la variable inputPin como entrada y activamos su resistencia interna Pullup. +} + +void loop(){ + valorPulsador = digitalRead(pulsadorPin); // Lectura digital de pulsadorPin + + if (valorPulsador == HIGH) { + Serial.println("Pulsado"); // Si detecta que pulsamos el pulsador imprime por el monitor serie "pulsado". + } + else { + Serial.println("No pulsado"); // En caso contrario imprime por el monitor serie "No pulsado". + } + delay(1000); // Espera un segundo al final del bucle +} + +``` +Como no lograba hacer funcionar el pulsador, utilicé este código aislado, que utiliza el serial.println para avisar qué se está detectando del botón. Al hacer esto pude comprobar que el botón no funcionaba como debería, por lo que decidimos descartar su uso en el código final +![image](https://github.com/user-attachments/assets/94380704-9bfb-4b87-86e1-af71cbcae946) + ##CÓDIGO FINAL From 074eb8b778573b359da5c37c8a8829ae4c6d86d2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Santiago=20Gaete=20Fern=C3=A1ndez?= <168493763+clifford1one@users.noreply.github.com> Date: Tue, 10 Sep 2024 14:28:22 -0300 Subject: [PATCH 4/4] Update README.md --- 07-clifford1one/clase-04/README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/07-clifford1one/clase-04/README.md b/07-clifford1one/clase-04/README.md index 731da287..79fd1043 100644 --- a/07-clifford1one/clase-04/README.md +++ b/07-clifford1one/clase-04/README.md @@ -101,6 +101,15 @@ XIV. juan pareschi. 4. Juegos de arcade de ritmo (buscar Pop'n'Music, Taiko no Tatsujin o japanese rhythm games arcade en google) o controles de juego en general, pensar sobre todo como el usuario toma e interactúa con el objeto + + + +# ¿QUÉ ES HEROE GUITARRA? +Heroe Guitarra es un dispositivo electrónico inspirado en el modo de uso mas común de un instrumento: un acorde accionable y una pulsación. HEROE GUITARRA tiene 3 carriles en donde están posicionados los acordes que deberemos accionar, éstos acordes estarán repartidos aleatoriamente. + + + + ![texto](./procesoHG-v2.png). El modelo avanzó hacia una morfología más ergonómica, la cual permite un mejor agarre gracias a su tamaño disminuido respecto a la versión anterior.