Skip to content

Commit

Permalink
Merge pull request #112 from Pedroprat2/main
Browse files Browse the repository at this point in the history
agregar apuntes Pedroprat2
  • Loading branch information
montoyamoraga authored Sep 10, 2024
2 parents 87917ab + c39d2e4 commit 945e6eb
Show file tree
Hide file tree
Showing 5 changed files with 2,318 additions and 1 deletion.
143 changes: 143 additions & 0 deletions 16-pedroprat2/clase-04/1Gatoripmov.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
#include "Arduino_LED_Matrix.h"

// Crear una instancia de la clase ArduinoLEDMatrix
ArduinoLEDMatrix matrix;

// A0 es el pin del sensor de proximidad
const int sensorPin = A0; // Pin analógico al que está conectado el sensor
const int proximityThreshold = 100; // Umbral para activar la animación
const unsigned long catLifeTime = 20000; // 20 segundos de vida del gato
const unsigned long animation2Time = 4000; // 4 segundos de animación "RIP"

// Definir las animaciones
const uint32_t animation2[][4] = {
// Animación 2 (RIP)
{
0xf6f96,
0x9f6fc68a,
0x68968000,
66
},
};

const uint32_t animation7[][4] = {
// Animación 1 (Gato vivo moviendose de lado a lado)
{
0x820c60ba,
0x820aa08,
0x20440380,
90
},
{
0x4106305d,
0x4105504,
0x102201c0,
66
},
{
0x2083182e,
0x82082a82,
0x81100e0,
90
},
{
0x10418c17,
0x41041541,
0x4088070,
66
},
{
0x820c60b,
0xa0820aa0,
0x82044038,
90
},
{
0x4106305,
0xd0410550,
0x4102201c,
90
},
{
0x820c60b,
0xa0820aa0,
0x82044038,
66
},
{
0x10418c17,
0x41041541,
0x4088070,
90
},
{
0x2083182e,
0x82082a82,
0x81100e0,
90
},
{
0x4106305d,
0x4105504,
0x102201c0,
66
}
};

// Tiempos de duración para cada animación
const uint8_t animationDurations[] = {
90, 66, 90, 66, 90, 90, 66, 90, 90, 66
};

// Variables de tiempo
unsigned long lastProximityDetected = 0; // Momento en que se detectó proximidad
bool isGatoVivo = true; // Estado de vida del gato
bool anim2Played = false; // Estado de si la animación "RIP" fue jugada

void setup() {
Serial.begin(115200);
matrix.begin();
matrix.loadSequence(animation7); // Cargar la animación inicial
matrix.play(true); // Reproducir la animación del gato vivo
}

void loop() {
int sensorValue = analogRead(sensorPin); // Leer el valor del sensor
unsigned long currentMillis = millis(); // Obtener el tiempo actual

if (sensorValue < proximityThreshold && isGatoVivo) {
// Si el sensor detecta proximidad y el gato está vivo
if (lastProximityDetected == 0) {
// Registrar el momento en que alguien se acercó a mirar
lastProximityDetected = currentMillis;
}

// Verificar si han pasado los 20 segundos de vida del gato
if (currentMillis - lastProximityDetected >= catLifeTime) {
// El gato muere, aca se muestra la animación "RIP" durante 4 segundos
matrix.loadSequence(animation2); // Cargar la animación "RIP"
matrix.play(true);
delay(animation2Time); // Esperar 4 segundos
anim2Played = true; // Marcar que la animación "RIP" se jugó

// Después de la animación "RIP", reiniciar ciclo y el gato gana 20 segundos de vida
isGatoVivo = false;
}
} else {
// Si no hay proximidad o el gato está muerto
if (!isGatoVivo) {
// Reiniciar la vida del gato si ya murió y no hay más proximidad
lastProximityDetected = 0;
anim2Played = false;
isGatoVivo = true; // El gato revive con 20 segundos
matrix.loadSequence(animation7); // Cargar la animación inicial del gato vivo moviendose
matrix.play(true); // Reproducir la animación del gato vivo
}
}

// Imprimir el valor del sensor para depuración
Serial.print("Sensor Value: ");
Serial.println(sensorValue);

delay(100); // Pequeño retraso antes de la próxima lectura
}
63 changes: 62 additions & 1 deletion 16-pedroprat2/clase-04/README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
# clase-04
El objeto consiste en una caja fabricada en corte laser la cual tiene la figura de un gato con un ojo perforado, por donde el usuario puede mirar hacia adentro de la caja y ver la silueta de un gato el cual al cabo de unos segundos de ser obvservado muere. esta caja esta inspirada en el dicho la curiosidad mato al gato. El objeto consta de un arduino uno r4 wifi (entrega animacion gato vivo., gato muerto )mas tres cables conectados a un sesor de distancia marca sharp (si la señal es positiva empieza a gastar tiempo de vida del gato, si es negativa se pausa el tiempo), ademas de un portapilas (da energia al arduino)
Cat in Black consiste en una caja que se instala en la pared, fabricada en corte laser la cual tiene la figura de un gato con un ojo perforado, por donde el usuario puede mirar hacia adentro de la caja y ver la silueta de un gato el cual al cabo de unos segundos de ser obvservado muere. esta caja esta inspirada en el dicho la curiosidad mato al gato.

El objeto consta de un arduino uno r4 wifi (entrega animacion gato vivo., gato muerto )mas tres cables conectados a un sesor de distancia marca sharp (si la señal es positiva empieza a gastar tiempo de vida del gato, si es negativa se pausa el tiempo), ademas de un portapilas (da energia al arduino)

<img width="327" alt="Screen Shot 2024-09-07 at 7 32 14 pm" src="https://github.com/user-attachments/assets/ed9144d2-9557-4ecd-8cfa-4040191df906">

El objeto consta de un arduino uno r4 wifi (entrega animacion gato vivo., gato muerto )mas tres cables conectados a un sesor de distancia marca sharp (si la señal es positiva empieza a gastar tiempo de vida del gato, si es negativa se pausa el tiempo), ademas de un portapilas (da energia al arduino)

![IMG_3855 2](https://github.com/user-attachments/assets/ebd64208-1d50-4a56-aac9-0a4895a33aa6)
<img width="136" alt="Screen Shot 2024-09-07 at 7 35 42 pm" src="https://github.com/user-attachments/assets/35a9e227-04a1-4306-affb-91e0586e57d7">
<img width="140" alt="Screen Shot 2024-09-07 at 7 36 12 pm" src="https://github.com/user-attachments/assets/410dc299-39d6-4c3f-9429-8123a2933246">
Expand All @@ -10,6 +15,62 @@ El objeto consiste en una caja fabricada en corte laser la cual tiene la figura
![IMG_3882](https://github.com/user-attachments/assets/c3cf10bc-c1c4-41db-be2a-b472939615f1)
<img width="531" alt="Screen Shot 2024-09-07 at 7 47 15 pm" src="https://github.com/user-attachments/assets/706412ac-6925-4c91-a0a2-704a5525cd9d">
<img width="527" alt="Screen Shot 2024-09-07 at 7 46 59 pm" src="https://github.com/user-attachments/assets/05205f20-bd5a-44e7-b2c2-f91e3b06d06a">
<img width="511" alt="Screen Shot 2024-09-10 at 00 29 49" src="https://github.com/user-attachments/assets/43e4464c-2722-47f5-8b65-0e2b755c45b4">
<img width="398" alt="Screen Shot 2024-09-10 at 00 28 07" src="https://github.com/user-attachments/assets/f36ed803-5f6c-411f-a43d-19ae384ca763">
<img width="314" alt="Screen Shot 2024-09-10 at 00 27 46" src="https://github.com/user-attachments/assets/22985017-2cd2-419f-baf0-2ccfb62f6b6a">
<img width="238" alt="Screen Shot 2024-09-10 at 00 25 40" src="https://github.com/user-attachments/assets/19250334-4796-42fe-9677-d3315aeecc94">
![IMG_3898](https://github.com/user-attachments/assets/67be4966-2c4d-4679-9b9e-7f6fb93ce5ab)
![IMG_3899](https://github.com/user-attachments/assets/c377c126-1d87-445c-985e-bd1646d08cdc)
![IMG_3900](https://github.com/user-attachments/assets/73ff92cf-594b-426e-a99d-0e3ee36a72ea)

Cat in Black, es un objeto interactivo diseñado para ofrecer una experiencia que refleja el dicho popular. Al mirar a través del ojo perforado en la caja, verás una animación en la pantalla LED que representa un gato cuya "vida" se agota tras unos segundos de observación. Este objeto está pensada para hacerte reflexionar sobre cómo la curiosidad puede llevar a situaciones imprevistas.

Componentes
Caja: Hecha con precisión en corte láser, con la figura de un gato y un ojo perforado para la observación.
Arduino Uno R4 WiFi: El cerebro del sistema, encargado de manejar las animaciones del gato.
Sensor de Distancia Sharp: Detecta cuándo te acercas y activa la animación.
Portapilas: Proporciona energía al Arduino.
Pantalla LED: Muestra las animaciones que dan vida al gato.
Instalación
Montaje en la Pared:

Fija la caja a la pared utilizando adhesivo, asegurándote de que quede bien sujeta y a una altura cómoda para la observación.
Conexión de Componentes:

Sensor de Proximidad:
Conecta el pin VCC del sensor al pin 5V del Arduino.
Conecta el pin GND del sensor al pin de GND del Arduino.
Conecta el pin SIG del sensor al pin A0 del Arduino.
Portapilas: Conéctalo al Arduino para alimentar el sistema.
Conexión de Energía:

Inserta las baterías en el portapilas y conéctalo al Arduino. ¡Y listo! Tu caja estará lista para funcionar.
Funcionamiento
Observación:

Al acercarte y mirar a través del ojo perforado, el sensor detectará tu presencia y comenzará a contar el tiempo de vida del gato en la pantalla.
Animación del Gato Vivo:

Mientras estás cerca, verás cómo el gato en la pantalla LED está animado y activo, representando la vida del gato.
Muerte del Gato:

Si mantienes la proximidad durante más de 20 segundos, la animación cambiará para mostrar la "muerte" del gato. Verás una animación que dura 4 segundos, representando simbólicamente la muerte del gato (RIP).
Reinicio:

Después de que el gato "muere", el sistema se reinicia y el gato revive. Este ciclo se repite, recordándonos la naturaleza cíclica de la curiosidad.
Interacción
Acercarse a la Caja: La caja está diseñada para captar tu curiosidad. Al acercarte y mirar a través del ojo perforado, el sensor detecta tu presencia y activa la animación del gato.

Mirar a Través del Ojo Perforado: Al observar la animación, experimentas cómo la curiosidad puede tener consecuencias. La animación del gato te invita a reflexionar nuestras acciones porque pueden afectar a la vida de otros.

La Curiosidad: Este objeto no solo es una experiencia visual, sino también una invitación a pensar sobre cómo la curiosidad puede llevarte a situaciones inesperadas y cómo cada ciclo de observación trae consigo un nuevo comienzo.










Expand Down
143 changes: 143 additions & 0 deletions 16-pedroprat2/clase-04/animation7.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,143 @@
#include "Arduino_LED_Matrix.h"

// Crear una instancia de la clase ArduinoLEDMatrix
ArduinoLEDMatrix matrix;

// A0 es el pin del sensor de proximidad
const int sensorPin = A0; // Pin analógico al que está conectado el sensor
const int proximityThreshold = 100; // Umbral para activar la animación
const unsigned long catLifeTime = 10000; // 10 segundos de vida del gato
const unsigned long animation2Time = 4000; // 4 segundos de animación "RIP"

// Definir las animaciones
const uint32_t animation2[][4] = {
// Animación 2 (gato muriendo)
{
0xf6f96,
0x9f6fc68a,
0x68968000,
66
},
};

const uint32_t animation7[][4] = {
{
0x820c60ba,
0x820aa08,
0x20440380,
90
},
{
0x4106305d,
0x4105504,
0x102201c0,
66
},
{
0x2083182e,
0x82082a82,
0x81100e0,
90
},
{
0x10418c17,
0x41041541,
0x4088070,
66
},
{
0x820c60b,
0xa0820aa0,
0x82044038,
90
},
{
0x4106305,
0xd0410550,
0x4102201c,
90
},
{
0x820c60b,
0xa0820aa0,
0x82044038,
66
},
{
0x10418c17,
0x41041541,
0x4088070,
90
},
{
0x2083182e,
0x82082a82,
0x81100e0,
90
},
{
0x4106305d,
0x4105504,
0x102201c0,
66
}
};

// Tiempos de duración para cada animación
const uint8_t animationDurations[] = {
90, 66, 90, 66, 90, 90, 66, 90, 90, 66
};

// Variables de tiempo
unsigned long lastProximityDetected = 0; // Momento en que se detectó proximidad
bool isGatoVivo = true; // Estado de vida del gato
bool anim2Played = false; // Estado de si la animación "RIP" fue jugada

void setup() {
Serial.begin(115200);
matrix.begin();
matrix.loadSequence(animation7); // Cargar la animación inicial
matrix.play(true); // Reproducir la animación del gato vivo
}

void loop() {
int sensorValue = analogRead(sensorPin); // Leer el valor del sensor
unsigned long currentMillis = millis(); // Obtener el tiempo actual

if (sensorValue < proximityThreshold && isGatoVivo) {
// Si el sensor detecta proximidad y el gato está vivo
if (lastProximityDetected == 0) {
// Registrar el momento en que alguien se acercó por primera vez
lastProximityDetected = currentMillis;
}

// Verificar si han pasado los 10 segundos de vida del gato
if (currentMillis - lastProximityDetected >= catLifeTime) {
// El gato muere, mostrar animación "RIP" durante 4 segundos
matrix.loadSequence(animation2); // Cargar la animación "RIP"
matrix.play(true);
delay(animation2Time); // Esperar 4 segundos
anim2Played = true; // Marcar que la animación "RIP" se jugó

// Después de la animación "RIP", reiniciar ciclo
isGatoVivo = false;
}
} else {
// Si no hay proximidad o el gato está muerto
if (!isGatoVivo) {
// Reiniciar la vida del gato si ya murió y no hay más proximidad
lastProximityDetected = 0;
anim2Played = false;
isGatoVivo = true; // El gato revive
matrix.loadSequence(animation7); // Cargar la animación inicial del gato vivo
matrix.play(true); // Reproducir la animación del gato vivo
}
}

// Imprimir el valor del sensor para depuración
Serial.print("Sensor Value: ");
Serial.println(sensorValue);

delay(100); // Pequeño retraso antes de la próxima lectura
}

Loading

0 comments on commit 945e6eb

Please sign in to comment.