Tabla de contenido:

Gafas de relajación - ITTT: 5 pasos (con imágenes)
Gafas de relajación - ITTT: 5 pasos (con imágenes)

Video: Gafas de relajación - ITTT: 5 pasos (con imágenes)

Video: Gafas de relajación - ITTT: 5 pasos (con imágenes)
Video: 🚗 Renovación de Licencia de Conducir en Venezuela: ¡Paso a paso sin complicaciones! 📝 2024, Noviembre
Anonim
Gafas de relajación - ITTT
Gafas de relajación - ITTT
Gafas de relajación - ITTT
Gafas de relajación - ITTT
Gafas de relajación - ITTT
Gafas de relajación - ITTT

Proyecto HKU - ITTT (If This Then That) - Julia Berkouwer, 1B

¿Alguna vez te has sentido estresado y no sabes cómo calmarte, entonces deberías probar estas gafas de relajación? Te los pones y cierras los ojos, luego se reproducirá un patrón de respiración. Siguiendo este patrón de respiración, su ritmo respiratorio se reducirá a inhalar y exhalar 6 veces por minuto. Hacer esto libera el estrés diario.

También puede realizar un seguimiento de la intensidad de su respiración activando un interruptor, utilizando un sensor fsr.

Con este toturial te guiaré paso a paso a través de la construcción de tus propias gafas de relajación.

Paso 1: Materiales y piezas necesarios:

Materiales y piezas necesarios
Materiales y piezas necesarios
Materiales y piezas necesarios
Materiales y piezas necesarios
Materiales y piezas necesarios
Materiales y piezas necesarios

Materiales:

1x arduino uno;

1x tablero o PCV;

3 resistencias de 10k

Cables (Preferiblemente de diferentes colores para que sea más fácil saber qué cosas van al suelo y cuáles van a diferentes clavijas, etc.);

Algunos tubos termocontraíbles;

2x NeoPixel Ring - 16 x 5050 RGB LED con controladores integrados;

1x interruptor;

1x sensor FSR;

1x Gafas SteamPunk (Puedes comprarlas en una tienda de fiestas, son fáciles de usar porque el anillo de neopixel encaja perfectamente en las gafas. Siempre intentas usar otras gafas o crea la tuya propia);

1x una especie de banda (elástica) para poner alrededor de tu pecho.

Herramientas: -Portátil

-Soldador

-Software IDE Arduino

Verá dos botones y un interruptor en mi pvc, solo uso el botón izquierdo para conectarlo al interruptor, no uso el segundo botón a la derecha de la imagen. Puse los botones en el pvc antes de darme cuenta de que no los necesito y necesitaba usar un interruptor en su lugar.

A continuación, verá imágenes de todo lo que usé:

Paso 2: Anillos de Neopixel

Anillos Neopixel
Anillos Neopixel

El cable blanco está conectado a tierra en la parte posterior del anillo de neopixel.

El cable naranja está conectado a los 5V.

Y el cable marrón está conectado a la entrada de datos.

Paso 3: conexiones

Conexiones
Conexiones
Conexiones
Conexiones

Así es como se veía mi placa de pruebas durante la creación de prototipos, puede usar esto como referencia.

También hice un diseño del cableado de cómo se supone que debe verse con un solo botón.

Paso 4: el código:

Probablemente no sea el código más eficiente, pero me funciona. Desafíese y trate de hacerlo más eficiente; P

#incluir

// Cuales

pin en el Arduino está conectado a los NeoPixels?

#definir

PIN 6

// Cuales

pin en el Arduino está conectado al botón

#definir

BUTTON_PIN 9

// Cómo

¿Cuántos NeoPixels están conectados al Arduino?

#definir

NUMPÍXELES 16

// Cuando

configuramos la biblioteca NeoPixel, le decimos cuántos píxeles y qué pin usar para enviar señales.

// Nota

que para las tiras NeoPixel más antiguas, es posible que deba cambiar el tercer parámetro; consulte la prueba de hebras

//

ejemplo para obtener más información sobre posibles valores.

Adafruit_NeoPixel

píxeles = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

pausa int

= 1; // delay2

En t

pausa2 = 80; // bajando cuando se usa fsr

En t

pausa3 = 150; // haciendo cuando se usa fsr

En t

delayval = 4; // retraso1

En t

fsrPin = 0; // el menú desplegable FSR y 10K están conectados a a0

En t

fsrReading;

vacío

configuración() {

pinMode (BUTTON_PIN, INPUT);

Serial.begin (9600);

pixels.begin (); // Esto inicializa el

Biblioteca NeoPixel.

pixels.show ();

}

bool

botón presionado (pin int) {

return digitalRead (pin);

}

vacío

loop () {// lee si la entrada del pin es verdadera o falsa

fsrReading = analogRead (fsrPin);

Serial.print ("Lectura analógica =");

Serial.print (fsrReading);

si (botón presionado (BUTTON_PIN) == verdadero) {

// efecto de luz cuando se usa el sensor fsr

if (fsrReading> 50) {

píxeles.setPixelColor (0, 1, 0, 1);

píxeles.setPixelColor (15, 1, 0, 1);

píxeles.setPixelColor (1, 1, 0, 1);

píxeles.setPixelColor (14, 1, 0, 1);

pixels.show ();

retraso (pausa3);

}

if (fsrReading <52) {

píxeles.setPixelColor (0, 0, 0, 0);

píxeles.setPixelColor (15, 0, 0, 0);

píxeles.setPixelColor (1, 0, 0, 0);

píxeles.setPixelColor (14, 0, 0, 0);

pixels.show ();

retraso (pausa2);

}

if (fsrReading> 57) {

píxeles.setPixelColor (2, 1, 0, 1);

píxeles.setPixelColor (13, 1, 0, 1);

píxeles.setPixelColor (3, 1, 0, 1);

píxeles.setPixelColor (12, 1, 0, 1);

pixels.show ();

retraso (pausa3);

}

if (fsrReading <59) {

píxeles.setPixelColor (2, 0, 0, 0);

píxeles.setPixelColor (13, 0, 0, 0);

píxeles.setPixelColor (3, 0, 0, 0);

píxeles.setPixelColor (12, 0, 0, 0);

pixels.show ();

retraso (pausa2);

}

if (fsrReading> 65) {

píxeles.setPixelColor (4, 1, 0, 1);

píxeles.setPixelColor (11, 1, 0, 1);

píxeles.setPixelColor (5, 1, 0, 1);

píxeles.setPixelColor (10, 1, 0, 1);

pixels.show ();

retraso (pausa3);

}

if (fsrReading <67) {

píxeles.setPixelColor (4, 0, 0, 0);

píxeles.setPixelColor (11, 0, 0, 0);

píxeles.setPixelColor (5, 0, 0, 0);

píxeles.setPixelColor (10, 0, 0, 0);

pixels.show ();

retraso (40);

}

if (fsrReading> 79) {

píxeles.setPixelColor (6, 1, 0, 1);

píxeles.setPixelColor (9, 1, 0, 1);

píxeles.setPixelColor (7, 1, 0, 1);

píxeles.setPixelColor (8, 1, 0, 1);

pixels.show ();

retraso (pausa3);

}

if (fsrReading <85) {

píxeles.setPixelColor (6, 0, 0, 0);

píxeles.setPixelColor (9, 0, 0, 0);

píxeles.setPixelColor (7, 0, 0, 0);

píxeles.setPixelColor (8, 0, 0, 0);

pixels.show ();

retraso (20);

}

}

demás{

respirar_azul (20, 100, 0, 1, 1); // normal

efecto

}

}

// Pausa

= retraso entre transiciones

// Pasos

= número de pasos

// R, G, B = valores RGB completos

// De void respirar es para su efecto licht als de

fsrsensor niet gebruikt wordt. Deze void wordt en de void loop () weer aangeroepen.

void breathe_blue (pausa int, pasos int, byte R, byte G, byte B) {

En t

tmpR, tmpG, tmpB; // Valores temporales

// Desvanecerse hasta

para (int s = 1; s <= pasos; s ++) {

tmpR = (R * s) /

pasos; // Multiplica primero para evitar errores de truncamiento

tmpG = (G * s) / pasos;

tmpB = (B * s) / pasos;

para (int i = 0;

Ipíxeles.setPixelColor (0, tmpR, tmpG + 1, tmpB);

píxeles.setPixelColor (15, tmpR, tmpG + 1, tmpB);

}

pixels.show ();

retraso (4);

}

// Desvanecerse hasta

para (int s = 1; s <= pasos; s ++) {

tmpR = (R * s) /

pasos; // Multiplica primero para evitar errores de truncamiento

tmpG = (G * s) / pasos;

tmpB = (B * s) / pasos;

para (int i = 0;

Ipíxeles.setPixelColor (1, tmpR, tmpG + 1, tmpB);píxeles.setPixelColor (14, tmpR, tmpG + 1, tmpB);

}

pixels.show ();

retraso (4);

}

// Desvanecerse hasta

para (int s = 1; s <= pasos; s ++) {

tmpR = (R * s) /

pasos; // Multiplica primero para evitar errores de truncamiento

tmpG = (G * s) / pasos;

tmpB = (B * s) / pasos;

para (int i = 0;

Ipíxeles.setPixelColor (2, tmpR, tmpG + 2, tmpB);píxeles.setPixelColor (13, tmpR, tmpG + 2, tmpB);

}

pixels.show ();

retraso (3,5);

}

// Desvanecerse hasta

para (int s = 1; s <= pasos; s ++) {

tmpR = (R * s) /

pasos; // Multiplica primero para evitar errores de truncamiento

tmpG = (G * s) / pasos;

tmpB = (B * s) / pasos;

para (int i = 0;

Ipíxeles.setPixelColor (3, tmpR, tmpG + 3, tmpB + 5);píxeles.setPixelColor (12, tmpR, tmpG + 3, tmpB + 5);

}

pixels.show ();

retraso (3);

}

para (int i = 0;

Ipíxeles.setPixelColor (0, 0, 0, 0);píxeles.setPixelColor (15, 0, 0, 0);

}

// Desvanecerse hasta

para (int s = 1; s <= pasos; s ++) {

tmpR = (R * s) /

pasos; // Multiplica primero para evitar errores de truncamiento

tmpG = (G * s) / pasos;

tmpB = (B * s) / pasos;

para (int i = 0;

I

píxeles.setPixelColor (4, tmpR, tmpG + 3, tmpB + 15);píxeles.setPixelColor (11, tmpR, tmpG + 3, tmpB + 15);

}

pixels.show ();

retraso (3);

}

// Desvanecerse hasta

para (int s = 1; s <= pasos; s ++) {

tmpR = (R * s) /

pasos; // Multiplica primero para evitar errores de truncamiento

tmpG = (G * s) / pasos;

tmpB = (B * s) / pasos;

para (int i = 0;

Ipíxeles.setPixelColor (5, tmpR, tmpG + 4, tmpB + 20);píxeles.setPixelColor (10, tmpR, tmpG + 4, tmpB + 20);

}

pixels.show ();

retraso (2);

}

para (int i = 0;

Ipíxeles.setPixelColor (1, 0, 0, 0);

píxeles.setPixelColor (14, 0, 0, 0);

}

// Desvanecerse hasta

para (int s = 1; s <= pasos; s ++) {

tmpR = (R * s) /

pasos; // Multiplica primero para evitar errores de truncamiento

tmpG = (G * s) / pasos;

tmpB = (B * s) / pasos;

para (int i = 0;

Ipíxeles.setPixelColor (6, tmpR, tmpG + 2, tmpB + 40);

píxeles.setPixelColor (9, tmpR, tmpG + 2, tmpB + 40);

}

pixels.show ();

delay (delayval);

}

para (int i = 0;

Ipíxeles.setPixelColor (2, 0, 0, 0);píxeles.setPixelColor (13, 0, 0, 0);

}

// Desvanecerse hasta

para (int s = 1; s <= pasos; s ++) {

tmpR = (R * s) /

pasos; // Multiplica primero para evitar errores de truncamiento

tmpG = (G * s) / pasos;

tmpB = (B * s) / pasos;

para (int i = 0;

I

píxeles.setPixelColor (7, tmpR, tmpG, tmpB + 44);píxeles.setPixelColor (8, tmpR, tmpG, tmpB + 44);

}

pixels.show ();

delay (delayval);

}

// Desvanecerse

para (int s = pasos; s> 0; s--) {

tmpR = (R * s) / pasos; // Multiplica primero para evitar el truncamiento

errores

tmpG = (G * s) / pasos;

tmpB = (B * s) / pasos;

para (int i = 0; i

píxeles.setPixelColor (7, tmpR, tmpG, tmpB);

píxeles.setPixelColor (8, tmpR, tmpG, tmpB);

}

pixels.show ();

retraso (1);

}

// Desvanecerse

para (int s = pasos; s> 0; s--) {

tmpR = (R * s) / pasos; // Multiplica primero para evitar el truncamiento

errores

tmpG = (G * s) / pasos;

tmpB = (B * s) / pasos;

para (int i = 0; i

píxeles.setPixelColor (6, tmpR, tmpG, tmpB);

píxeles.setPixelColor (9, tmpR, tmpG, tmpB);

}

pixels.show ();

retraso (1);

}

// Desvanecerse

para (int s = pasos; s> 0; s--) {

tmpR = (R * s) / pasos; // Multiplica primero para evitar el truncamiento

errores

tmpG = (G * s) / pasos;

tmpB = (B * s) / pasos;

para (int i = 0; i

píxeles.setPixelColor (5, tmpR, tmpG, tmpB);

píxeles.setPixelColor (10, tmpR, tmpG, tmpB);

}

pixels.show ();

retraso (2);

}

// Desvanecerse

para (int s = pasos; s> 0; s--) {

tmpR = (R * s) / pasos; // Multiplica primero para evitar el truncamiento

errores

tmpG = (G * s) / pasos;

tmpB = (B * s) / pasos;

para (int i = 0; i

píxeles.setPixelColor (4, tmpR, tmpG, tmpB);

píxeles.setPixelColor (11, tmpR, tmpG, tmpB);

}

pixels.show ();

retraso (2);

}

// Desvanecerse

para (int s = pasos; s> 0; s--) {

tmpR = (R * s) / pasos; // Multiplica primero para evitar el truncamiento

errores

tmpG = (G * s) / pasos;

tmpB = (B * s) / pasos;

para (int i = 0; i

píxeles.setPixelColor (3, tmpR, tmpG, tmpB);

píxeles.setPixelColor (12, tmpR, tmpG, tmpB);

}

pixels.show ();

retraso (3);

}

// Desvanecerse

para (int s = pasos; s> 0; s--) {

tmpR = (R * s) / pasos; //

Multiplica primero para evitar errores de truncamiento

tmpG = (G * s) / pasos;

tmpB = (B * s) / pasos;

para (int i = 0; i

píxeles.setPixelColor (2, tmpR, tmpG, tmpB);

píxeles.setPixelColor (13, tmpR, tmpG, tmpB);

}

pixels.show ();

retraso (3);

}

// Desvanecerse

para (int s = pasos; s> 0; s--) {

tmpR = (R * s) / pasos; // Multiplica primero para evitar el truncamiento

errores

tmpG = (G * s) / pasos;

tmpB = (B * s) / pasos;

para (int i = 0; i

píxeles.setPixelColor (1, tmpR, tmpG, tmpB);

píxeles.setPixelColor (14, tmpR, tmpG, tmpB);

}

pixels.show ();

retraso (4);

}

// Desvanecerse

para (int s = pasos; s> 0; s--) {

tmpR = (R * s) / pasos; // Multiplica primero para evitar el truncamiento

errores

tmpG = (G * s) / pasos;

tmpB = (B * s) / pasos;

para (int i = 0; i

píxeles.setPixelColor (0, tmpR, tmpG, tmpB);

píxeles.setPixelColor (15, tmpR, tmpG, tmpB);

}

pixels.show ();

retraso (4);

}

}

Paso 5: Poner todo junto:

Poniendo todo junto
Poniendo todo junto

Puede dejar todos los cables conectados a su placa de pruebas o PVC, eso depende de usted (elegí poner un PVC en la parte superior del arduino, es agradable y ordenado de esa manera).

El siguiente paso es colocar tubos termorretráctiles alrededor de todos los cables para que sea menos complicado.

Si eligió usar un PVC, entonces ya debería haber soldado todo junto.

Después de eso, coloca los anillos de neopixel en el exterior de las gafas (asegúrese de que los leds estén alineados en el botón) y asegúrelos en su lugar con un poco de cinta o pegamento (yo usé cinta).

Puede optar por pegar el sensor fsr a la banda elástica con un poco de cinta o simplemente dejarlo solo.

Disfruta tus gafas:)

Recomendado: