Taula de continguts:

Ulleres de relaxació - ITTT: 5 passos (amb imatges)
Ulleres de relaxació - ITTT: 5 passos (amb imatges)

Vídeo: Ulleres de relaxació - ITTT: 5 passos (amb imatges)

Vídeo: Ulleres de relaxació - ITTT: 5 passos (amb imatges)
Vídeo: Йога для начинающих дома с Алиной Anandee #2. Здоровое гибкое тело за 40 минут. Универсальная йога. 2024, Juliol
Anonim
Ulleres de relaxació - ITTT
Ulleres de relaxació - ITTT
Ulleres de relaxació - ITTT
Ulleres de relaxació - ITTT
Ulleres de relaxació - ITTT
Ulleres de relaxació - ITTT

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

Alguna vegada us heu sentit estressats i no sabeu com calmar-vos, proveu aquestes ulleres de relaxació! Els poseu i tanqueu els ulls, i després es reproduirà un patró de respiració. Seguint aquest patró de respiració, el ritme respiratori es reduirà a respirar dins i fora 6 vegades al minut. En fer-ho, alliberarà l’estrès diari.

També podeu fer un seguiment de la intensitat de la respiració girant un interruptor mitjançant un sensor fsr.

Amb aquest toturial us guiaré pas a pas per construir les vostres pròpies ulleres de relaxació.

Pas 1: materials i peces necessàries:

Materials i peces necessàries
Materials i peces necessàries
Materials i peces necessàries
Materials i peces necessàries
Materials i peces necessàries
Materials i peces necessàries

Materials:

1x arduino uno;

1xbreadboard o PCV;

Resistències 3x 10k

Filferros (preferiblement colors diferents, de manera que sigui més fàcil saber quines coses van a terra i quines van a diferents pins, etc.);

Alguns tubs de contracció de calor;

2x anell NeoPixel: LED RGB 16 x 5050 amb controladors integrats;

1x interruptor;

1x sensor FSR;

1x ulleres SteamPunk (les podeu comprar a una botiga de festes, són fàcils d'utilitzar perquè l'anell de neopixel s'adapta perfectament a les ulleres. Sempre proveu d'utilitzar altres ulleres o creeu-ne les vostres).

1x una mena de banda (elastica) per col·locar-la al voltant del pit.

Eines: -Portàtil

-Soldador

-Programari IDE Arduino

Veureu dos botons i un interruptor al meu pvc, només faig servir el botó esquerre per connectar-lo al commutador, no faig servir el segon botó a la dreta de la imatge. Vaig posar els botons del pvc abans d’adonar-me que no els necessitava i que havia d’utilitzar un interruptor.

A continuació veureu imatges de tot el que he utilitzat:

Pas 2: anells de Neopixel

Anells de Neopixel
Anells de Neopixel

El cable blanc està connectat a terra a la part posterior de l’anell de neopíxels.

El cable taronja està connectat al 5V.

I el cable marró està connectat a l’entrada de dades

Pas 3: connexions

Connexions
Connexions
Connexions
Connexions

Així és com era la meva taula de treball mentre feia prototips, podeu utilitzar-la com a referència.

També vaig fer un disseny del cablejat del que se suposa que hauria de ser amb només un botó.

Pas 4: el codi:

Probablement no sigui el codi més eficient, però funciona per a mi. Desafieu-vos i intenteu que sigui més eficient; P

#incloure

// Quin

el pin de l'Arduino està connectat als NeoPixels?

# definir

PIN 6

// Quin

el pin de l'Arduino està connectat al botó

# definir

BUTTON_PIN 9

// Com

hi ha molts NeoPixels connectats a l'Arduino?

# definir

NUMPIXELS 16

// Quan

configurem la biblioteca NeoPixel, li indiquem quants píxels i quin pin utilitzar per enviar senyals.

// Nota

que per a tires de NeoPixel més antigues és possible que hagueu de canviar el tercer paràmetre: vegeu la prova de cadena

//

exemple per obtenir més informació sobre possibles valors.

Adafruit_NeoPixel

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

int pausa

= 1; // demora2

int

pausa2 = 80; // baixant quan s’utilitza fsr

int

pausa3 = 150; // recuperant-se quan s’utilitza fsr

int

delayval = 4; // endarrerir1

int

fsrPin = 0; // el menú desplegable FSR i 10K estan connectats a a0

int

fsrLectura;

buit

setup () {

pinMode (BUTTON_PIN, INPUT);

Serial.begin (9600);

pixels.begin (); // Això inicialitza el

Biblioteca NeoPixel.

pixels.show ();

}

bool

premut amb botó (pin int) {

retorn digitalLlegeix (pin);

}

buit

loop () {// llegeix si l'entrada de pin és certa o falsa

fsrReading = analogRead (fsrPin);

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

Serial.print (fsrReading);

if (premut amb el botó (BUTTON_PIN) == true) {

// efecte de llum quan s'utilitza el sensor fsr

if (fsrLectura> 50) {

pixels.setPixelColor (0, 1, 0, 1);

pixels.setPixelColor (15, 1, 0, 1);

pixels.setPixelColor (1, 1, 0, 1);

pixels.setPixelColor (14, 1, 0, 1);

pixels.show ();

retard (pausa3);

}

if (fsrLectura <52) {

pixels.setPixelColor (0, 0, 0, 0);

pixels.setPixelColor (15, 0, 0, 0);

pixels.setPixelColor (1, 0, 0, 0);

pixels.setPixelColor (14, 0, 0, 0);

pixels.show ();

retard (pausa2);

}

if (fsrLectura> 57) {

pixels.setPixelColor (2, 1, 0, 1);

pixels.setPixelColor (13, 1, 0, 1);

pixels.setPixelColor (3, 1, 0, 1);

pixels.setPixelColor (12, 1, 0, 1);

pixels.show ();

retard (pausa3);

}

if (fsrLectura <59) {

pixels.setPixelColor (2, 0, 0, 0);

pixels.setPixelColor (13, 0, 0, 0);

pixels.setPixelColor (3, 0, 0, 0);

pixels.setPixelColor (12, 0, 0, 0);

pixels.show ();

retard (pausa2);

}

if (fsrLectura> 65) {

pixels.setPixelColor (4, 1, 0, 1);

pixels.setPixelColor (11, 1, 0, 1);

pixels.setPixelColor (5, 1, 0, 1);

pixels.setPixelColor (10, 1, 0, 1);

pixels.show ();

retard (pausa3);

}

if (fsrLectura <67) {

pixels.setPixelColor (4, 0, 0, 0);

pixels.setPixelColor (11, 0, 0, 0);

pixels.setPixelColor (5, 0, 0, 0);

pixels.setPixelColor (10, 0, 0, 0);

pixels.show ();

retard (40);

}

if (fsrLectura> 79) {

pixels.setPixelColor (6, 1, 0, 1);

pixels.setPixelColor (9, 1, 0, 1);

pixels.setPixelColor (7, 1, 0, 1);

pixels.setPixelColor (8, 1, 0, 1);

pixels.show ();

retard (pausa3);

}

if (fsrLectura <85) {

pixels.setPixelColor (6, 0, 0, 0);

pixels.setPixelColor (9, 0, 0, 0);

pixels.setPixelColor (7, 0, 0, 0);

pixels.setPixelColor (8, 0, 0, 0);

pixels.show ();

retard (20);

}

}

més {

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

efecte

}

}

// Pausa

= retard entre transicions

// Passos

= nombre de passos

// R, G, B = valors RGB complets

// De void breathe is voor het licht effect als de

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

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

int

tmpR, tmpG, tmpB; // Valors temporals

// Fade up

for (int s = 1; s <= steps; s ++) {

tmpR = (R * s) /

passos; // Primer es multiplica per evitar errors de truncament

tmpG = (G * s) / passos;

tmpB = (B * s) / passos;

per a (int i = 0;

jopixels.setPixelColor (0, tmpR, tmpG + 1, tmpB);

pixels.setPixelColor (15, tmpR, tmpG + 1, tmpB);

}

pixels.show ();

retard (4);

}

// Fade up

per a (int s = 1; s <= passos; s ++) {

tmpR = (R * s) /

passos; // Primer es multiplica per evitar errors de truncament

tmpG = (G * s) / passos;

tmpB = (B * s) / passos;

per a (int i = 0;

jopixels.setPixelColor (1, tmpR, tmpG + 1, tmpB);pixels.setPixelColor (14, tmpR, tmpG + 1, tmpB);

}

pixels.show ();

retard (4);

}

// Fade up

per a (int s = 1; s <= passos; s ++) {

tmpR = (R * s) /

passos; // Primer es multiplica per evitar errors de truncament

tmpG = (G * s) / passos;

tmpB = (B * s) / passos;

per a (int i = 0;

jopixels.setPixelColor (2, tmpR, tmpG + 2, tmpB);pixels.setPixelColor (13, tmpR, tmpG + 2, tmpB);

}

pixels.show ();

retard (3,5);

}

// Fade up

for (int s = 1; s <= steps; s ++) {

tmpR = (R * s) /

passos; // Primer es multiplica per evitar errors de truncament

tmpG = (G * s) / passos;

tmpB = (B * s) / passos;

per a (int i = 0;

jopixels.setPixelColor (3, tmpR, tmpG + 3, tmpB + 5);pixels.setPixelColor (12, tmpR, tmpG + 3, tmpB + 5);

}

pixels.show ();

retard (3);

}

per a (int i = 0;

jopixels.setPixelColor (0, 0, 0, 0);pixels.setPixelColor (15, 0, 0, 0);

}

// Fade up

per a (int s = 1; s <= passos; s ++) {

tmpR = (R * s) /

passos; // Primer es multiplica per evitar errors de truncament

tmpG = (G * s) / passos;

tmpB = (B * s) / passos;

per a (int i = 0;

jo

pixels.setPixelColor (4, tmpR, tmpG + 3, tmpB + 15);pixels.setPixelColor (11, tmpR, tmpG + 3, tmpB + 15);

}

pixels.show ();

retard (3);

}

// Fade up

per a (int s = 1; s <= passos; s ++) {

tmpR = (R * s) /

passos; // Primer es multiplica per evitar errors de truncament

tmpG = (G * s) / passos;

tmpB = (B * s) / passos;

per a (int i = 0;

jopixels.setPixelColor (5, tmpR, tmpG + 4, tmpB + 20);pixels.setPixelColor (10, tmpR, tmpG + 4, tmpB + 20);

}

pixels.show ();

retard (2);

}

per a (int i = 0;

jopixels.setPixelColor (1, 0, 0, 0);

pixels.setPixelColor (14, 0, 0, 0);

}

// Fade up

per a (int s = 1; s <= passos; s ++) {

tmpR = (R * s) /

passos; // Primer es multiplica per evitar errors de truncament

tmpG = (G * s) / passos;

tmpB = (B * s) / passos;

per a (int i = 0;

jopixels.setPixelColor (6, tmpR, tmpG + 2, tmpB + 40);

pixels.setPixelColor (9, tmpR, tmpG + 2, tmpB + 40);

}

pixels.show ();

delay (delayval);

}

per a (int i = 0;

jopixels.setPixelColor (2, 0, 0, 0);pixels.setPixelColor (13, 0, 0, 0);

}

// Fade up

for (int s = 1; s <= steps; s ++) {

tmpR = (R * s) /

passos; // Primer es multiplica per evitar errors de truncament

tmpG = (G * s) / passos;

tmpB = (B * s) / passos;

per a (int i = 0;

jo

pixels.setPixelColor (7, tmpR, tmpG, tmpB + 44);pixels.setPixelColor (8, tmpR, tmpG, tmpB + 44);

}

pixels.show ();

delay (delayval);

}

// Fade down

per a (int s = passos; s> 0; s--) {

tmpR = (R * s) / passos; // Multiplicar primer per evitar truncaments

errors

tmpG = (G * s) / passos;

tmpB = (B * s) / passos;

per a (int i = 0; i

pixels.setPixelColor (7, tmpR, tmpG, tmpB);

pixels.setPixelColor (8, tmpR, tmpG, tmpB);

}

pixels.show ();

retard (1);

}

// Fade down

per a (int s = passos; s> 0; s--) {

tmpR = (R * s) / passos; // Multiplicar primer per evitar truncaments

errors

tmpG = (G * s) / passos;

tmpB = (B * s) / passos;

per a (int i = 0; i

pixels.setPixelColor (6, tmpR, tmpG, tmpB);

pixels.setPixelColor (9, tmpR, tmpG, tmpB);

}

pixels.show ();

retard (1);

}

// Fade down

per a (int s = passos; s> 0; s--) {

tmpR = (R * s) / passos; // Multiplicar primer per evitar truncaments

errors

tmpG = (G * s) / passos;

tmpB = (B * s) / passos;

per a (int i = 0; i

pixels.setPixelColor (5, tmpR, tmpG, tmpB);

pixels.setPixelColor (10, tmpR, tmpG, tmpB);

}

pixels.show ();

retard (2);

}

// Fade down

per a (int s = passos; s> 0; s--) {

tmpR = (R * s) / passos; // Multiplicar primer per evitar truncaments

errors

tmpG = (G * s) / passos;

tmpB = (B * s) / passos;

per a (int i = 0; i

pixels.setPixelColor (4, tmpR, tmpG, tmpB);

pixels.setPixelColor (11, tmpR, tmpG, tmpB);

}

pixels.show ();

retard (2);

}

// Fade down

per a (int s = passos; s> 0; s--) {

tmpR = (R * s) / passos; // Multiplicar primer per evitar truncaments

errors

tmpG = (G * s) / passos;

tmpB = (B * s) / passos;

per a (int i = 0; i

pixels.setPixelColor (3, tmpR, tmpG, tmpB);

pixels.setPixelColor (12, tmpR, tmpG, tmpB);

}

pixels.show ();

retard (3);

}

// Fade down

per a (int s = passos; s> 0; s--) {

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

Multipliqueu primer per evitar errors de truncament

tmpG = (G * s) / passos;

tmpB = (B * s) / passos;

per a (int i = 0; i

pixels.setPixelColor (2, tmpR, tmpG, tmpB);

pixels.setPixelColor (13, tmpR, tmpG, tmpB);

}

pixels.show ();

retard (3);

}

// Fade down

per a (int s = passos; s> 0; s--) {

tmpR = (R * s) / passos; // Multiplicar primer per evitar truncaments

errors

tmpG = (G * s) / passos;

tmpB = (B * s) / passos;

per a (int i = 0; i

pixels.setPixelColor (1, tmpR, tmpG, tmpB);

pixels.setPixelColor (14, tmpR, tmpG, tmpB);

}

pixels.show ();

retard (4);

}

// Fade down

per a (int s = passos; s> 0; s--) {

tmpR = (R * s) / passos; // Multiplicar primer per evitar truncaments

errors

tmpG = (G * s) / passos;

tmpB = (B * s) / passos;

per a (int i = 0; i

pixels.setPixelColor (0, tmpR, tmpG, tmpB);

pixels.setPixelColor (15, tmpR, tmpG, tmpB);

}

pixels.show ();

retard (4);

}

}

Pas 5: ajuntar-ho tot:

Posar-ho tot junt
Posar-ho tot junt

Només podríeu deixar tots els cables connectats a la vostra taula de taulers o a un PVC, això depèn de vosaltres (he escollit posar un PVC a la part superior de l’arduino, és bo i ordenat d’aquesta manera).

El següent pas consisteix a col·locar tubs de contracció de calor al voltant de tots els cables de manera que quedi menys desordenat.

Si decidiu utilitzar un PVC, ja hauríeu d'haver soldat tot junt.

Després, poseu els anells de neopíxels a la part exterior de les ulleres (assegureu-vos que els leds estiguin alineats al fons) i assegureu-los al seu lloc amb una mica de cinta o cola (he utilitzat cinta).

Podeu optar per enganxar el sensor fsr a la banda elàstica amb una mica de cinta o simplement deixar-lo sol.

Gaudeix de les teves ulleres:)

Recomanat: