Índice:

Óculos de relaxamento - ITTT: 5 etapas (com fotos)
Óculos de relaxamento - ITTT: 5 etapas (com fotos)

Vídeo: Óculos de relaxamento - ITTT: 5 etapas (com fotos)

Vídeo: Óculos de relaxamento - ITTT: 5 etapas (com fotos)
Vídeo: Tenha momentos inesquecíveis com os melhores óculos de realidade virtual! 😍 #realidadevirtual 2024, Novembro
Anonim
Óculos de relaxamento - ITTT
Óculos de relaxamento - ITTT
Óculos de relaxamento - ITTT
Óculos de relaxamento - ITTT
Óculos de relaxamento - ITTT
Óculos de relaxamento - ITTT

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

Você já se sentiu estressado e simplesmente não sabe como se acalmar, então experimente esses óculos de relaxamento! Você os coloca e fecha os olhos, então um padrão de respiração começará. Seguindo esse padrão de respiração, seu ritmo respiratório diminuirá para inspirar e expirar 6 vezes por minuto. Isso alivia o estresse diário.

Você também pode monitorar a intensidade da sua respiração ligando um botão, usando um sensor fsr.

Com este toturial, irei guiá-lo na construção de seus próprios óculos de relaxamento, passo a passo.

Etapa 1: Materiais e peças necessários:

Materiais e peças necessários
Materiais e peças necessários
Materiais e peças necessários
Materiais e peças necessários
Materiais e peças necessários
Materiais e peças necessários

Materiais:

1x arduino uno;

1xbreadboard ou PCV;

3 resistências de 10k

Fios (de preferência em cores diferentes para que seja mais fácil dizer quais coisas vão para o chão e quais vão para pinos diferentes, etc.);

Alguns tubos termorretráteis;

2x anel NeoPixel - LED 16 x 5050 RGB com drivers integrados;

Interruptor 1x;

1 sensor FSR;

Óculos de proteção 1x SteamPunk (Você pode comprar em uma loja de festas, eles são fáceis de usar porque o anel de neopixel se encaixa perfeitamente nos óculos. Você sempre tenta usar outros óculos ou criar o seu próprio);

1x algum tipo de faixa (elástica) para colocar em volta do peito.

Ferramentas: -Laptop

-Ferro de solda

- Software ARduino IDE

Você verá dois botões e um switch no meu pvc, eu só uso o botão esquerdo para conectá-lo ao switch, não uso o segundo botão à direita da imagem. Coloquei os botões no pvc antes de perceber que não precisava deles e precisei usar um switch.

Abaixo aqui você verá fotos de tudo que usei:

Etapa 2: anéis de neopixel

Anéis de neopixel
Anéis de neopixel

O fio branco é conectado ao aterramento na parte de trás do anel de neopixel.

O fio laranja está conectado ao 5V.

E o fio marrom está conectado à entrada de dados

Etapa 3: conexões

Conexões
Conexões
Conexões
Conexões

Esta é a aparência da minha placa de ensaio durante a prototipagem, você pode usar isso como uma referência.

Também fiz um layout da fiação de como deve ser a aparência com apenas um botão.

Etapa 4: O Código:

Provavelmente não é o código mais eficiente, mas funciona para mim. Desafie-se e tente torná-lo mais eficiente; P

#incluir

// Que

pino no Arduino está conectado ao NeoPixels?

#definir

PIN 6

// Que

pino no Arduino está conectado ao botão

#definir

BUTTON_PIN 9

// Quão

muitos NeoPixels são anexados ao Arduino?

#definir

NUMPIXELS 16

// Quando

configuramos a biblioteca NeoPixel, informamos quantos pixels e qual pino usar para enviar sinais.

// Observação

que para tiras NeoPixel mais antigas, você pode precisar alterar o terceiro parâmetro - veja o teste de fita

//

exemplo para obter mais informações sobre os valores possíveis.

Adafruit_NeoPixel

pixels = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

pausa interna

= 1; // atraso2

int

pausa2 = 80; // diminuindo quando o fsr está sendo usado

int

pausa3 = 150; // melhorando quando o fsr está sendo usado

int

delayval = 4; // atraso1

int

fsrPin = 0; // o FSR e o menu suspenso 10K estão conectados a a0

int

fsrReading;

vazio

configurar() {

pinMode (BUTTON_PIN, INPUT);

Serial.begin (9600);

pixels.begin (); // Isso inicializa o

Biblioteca NeoPixel.

pixels.show ();

}

bool

buttonpressed (int pin) {

return digitalRead (pin);

}

vazio

loop () {// lê se a entrada do pino é verdadeira ou falsa

fsrReading = analogRead (fsrPin);

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

Serial.print (fsrReading);

if (buttonpressed (BUTTON_PIN) == true) {

// efeito de luz ao usar o sensor FSR

if (fsrReading> 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 ();

atraso (pausa3);

}

if (fsrReading <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 ();

atraso (pausa 2);

}

if (fsrReading> 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 ();

atraso (pausa 3);

}

if (fsrReading <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 ();

atraso (pausa2);

}

if (fsrReading> 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 ();

atraso (pausa3);

}

if (fsrReading <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 ();

atraso (40);

}

if (fsrReading> 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 ();

atraso (pausa3);

}

if (fsrReading <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 ();

atraso (20);

}

}

outro{

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

efeito

}

}

// Pausa

= atraso entre as transições

// Passos

= número de passos

// R, G, B = valores RGB Full-on

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

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

void respire_blue (int pausa, int etapas, byte R, byte G, byte B) {

int

tmpR, tmpG, tmpB; // Valores de temperatura

// Desbotar

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

tmpR = (R * s) /

degraus; // Multiplique primeiro para evitar erros de truncamento

tmpG = (G * s) / etapas;

tmpB = (B * s) / etapas;

para (int i = 0;

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

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

}

pixels.show ();

atraso (4);

}

// Desbotar

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

tmpR = (R * s) /

degraus; // Multiplique primeiro para evitar erros de truncamento

tmpG = (G * s) / etapas;

tmpB = (B * s) / etapas;

para (int i = 0;

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

}

pixels.show ();

atraso (4);

}

// Desbotar

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

tmpR = (R * s) /

degraus; // Multiplique primeiro para evitar erros de truncamento

tmpG = (G * s) / etapas;

tmpB = (B * s) / etapas;

para (int i = 0;

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

}

pixels.show ();

atraso (3,5);

}

// Desbotar

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

tmpR = (R * s) /

degraus; // Multiplique primeiro para evitar erros de truncamento

tmpG = (G * s) / etapas;

tmpB = (B * s) / etapas;

para (int i = 0;

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

}

pixels.show ();

atraso (3);

}

para (int i = 0;

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

}

// Desbotar

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

tmpR = (R * s) /

degraus; // Multiplique primeiro para evitar erros de truncamento

tmpG = (G * s) / etapas;

tmpB = (B * s) / etapas;

para (int i = 0;

eu

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

}

pixels.show ();

atraso (3);

}

// Desbotar

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

tmpR = (R * s) /

degraus; // Multiplique primeiro para evitar erros de truncamento

tmpG = (G * s) / etapas;

tmpB = (B * s) / etapas;

para (int i = 0;

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

}

pixels.show ();

atraso (2);

}

para (int i = 0;

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

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

}

// Desbotar

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

tmpR = (R * s) /

degraus; // Multiplique primeiro para evitar erros de truncamento

tmpG = (G * s) / etapas;

tmpB = (B * s) / etapas;

para (int i = 0;

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

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

}

pixels.show ();

atraso (delayval);

}

para (int i = 0;

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

}

// Desbotar

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

tmpR = (R * s) /

degraus; // Multiplique primeiro para evitar erros de truncamento

tmpG = (G * s) / etapas;

tmpB = (B * s) / etapas;

para (int i = 0;

eu

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

}

pixels.show ();

atraso (delayval);

}

// Fade down

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

tmpR = (R * s) / etapas; // Multiplique primeiro para evitar truncamento

erros

tmpG = (G * s) / etapas;

tmpB = (B * s) / etapas;

para (int i = 0; i

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

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

}

pixels.show ();

atraso (1);

}

// Fade down

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

tmpR = (R * s) / etapas; // Multiplique primeiro para evitar truncamento

erros

tmpG = (G * s) / etapas;

tmpB = (B * s) / etapas;

para (int i = 0; i

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

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

}

pixels.show ();

atraso (1);

}

// Fade down

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

tmpR = (R * s) / etapas; // Multiplique primeiro para evitar truncamento

erros

tmpG = (G * s) / etapas;

tmpB = (B * s) / etapas;

para (int i = 0; i

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

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

}

pixels.show ();

atraso (2);

}

// Fade down

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

tmpR = (R * s) / etapas; // Multiplique primeiro para evitar truncamento

erros

tmpG = (G * s) / etapas;

tmpB = (B * s) / etapas;

para (int i = 0; i

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

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

}

pixels.show ();

atraso (2);

}

// Fade down

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

tmpR = (R * s) / etapas; // Multiplique primeiro para evitar truncamento

erros

tmpG = (G * s) / etapas;

tmpB = (B * s) / etapas;

para (int i = 0; i

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

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

}

pixels.show ();

atraso (3);

}

// Fade down

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

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

Multiplique primeiro para evitar erros de truncamento

tmpG = (G * s) / etapas;

tmpB = (B * s) / etapas;

para (int i = 0; i

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

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

}

pixels.show ();

atraso (3);

}

// Fade down

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

tmpR = (R * s) / etapas; // Multiplique primeiro para evitar truncamento

erros

tmpG = (G * s) / etapas;

tmpB = (B * s) / etapas;

para (int i = 0; i

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

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

}

pixels.show ();

atraso (4);

}

// Fade down

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

tmpR = (R * s) / etapas; // Multiplique primeiro para evitar truncamento

erros

tmpG = (G * s) / etapas;

tmpB = (B * s) / etapas;

para (int i = 0; i

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

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

}

pixels.show ();

atraso (4);

}

}

Etapa 5: Juntando tudo:

Juntando tudo
Juntando tudo

Você poderia apenas deixar todos os seus fios conectados à sua placa de ensaio ou a um PVC, isso é com você (eu escolhi colocar um PVC em cima do arduino, é legal e arrumado dessa forma).

A próxima etapa é colocar tubos termorretráteis ao redor de todos os fios para que haja menos bagunça.

Se você escolheu usar um PVC, você já deveria ter soldado tudo junto.

Depois disso, você coloca os anéis de neopixel na parte externa dos óculos (certifique-se de que os leds estejam alinhados no botão) e fixe-os no lugar com um pouco de fita ou cola (usei fita adesiva).

Você pode escolher colar o sensor fsr no elástico com um pouco de fita adesiva ou simplesmente deixá-lo sozinho.

Aproveite seus óculos:)

Recomendado: