Spisu treści:

Gogle relaksacyjne - ITTT: 5 kroków (ze zdjęciami)
Gogle relaksacyjne - ITTT: 5 kroków (ze zdjęciami)

Wideo: Gogle relaksacyjne - ITTT: 5 kroków (ze zdjęciami)

Wideo: Gogle relaksacyjne - ITTT: 5 kroków (ze zdjęciami)
Wideo: Dzień jak ze snu (z filmu "Gorączka Lodu”) 2024, Lipiec
Anonim
Gogle relaksacyjne - ITTT
Gogle relaksacyjne - ITTT
Gogle relaksacyjne - ITTT
Gogle relaksacyjne - ITTT
Gogle relaksacyjne - ITTT
Gogle relaksacyjne - ITTT

Projekt HKU - ITTT (jeśli to, to tamto) - Julia Berkouwer, 1B

Czy kiedykolwiek czułeś się zestresowany i po prostu nie wiesz, jak się uspokoić, to wypróbuj te okulary relaksacyjne! Zakładasz je i zamykasz oczy, a następnie zagrasz wzór oddychania. Postępując zgodnie z tym wzorcem oddychania, twój rytm oddychania sprowadza się do wdechu i wydechu 6 razy na minutę. W ten sposób uwalnia się od codziennego stresu.

Możesz także śledzić intensywność oddychania, włączając przełącznik za pomocą czujnika fsr.

Z tym tutorialem poprowadzę Cię krok po kroku przez budowanie własnych okularów relaksacyjnych.

Krok 1: Potrzebne materiały i części:

Potrzebne materiały i części
Potrzebne materiały i części
Potrzebne materiały i części
Potrzebne materiały i części
Potrzebne materiały i części
Potrzebne materiały i części

Materiały:

1x arduino jedno;

1xpłyta lub PCV;

Rezystory 3x 10k

Przewody (najlepiej w różnych kolorach, aby łatwiej było powiedzieć, które rzeczy trafiają do ziemi, a które do różnych pinów itp.);

Niektóre rury termokurczliwe;

2x pierścień NeoPixel - 16 x 5050 RGB LED ze zintegrowanymi sterownikami;

1x przełącznik;

1x czujnik FSR;

1x gogle SteamPunk (możesz je kupić w sklepie imprezowym, są łatwe w użyciu, ponieważ pierścień neopikselowy idealnie pasuje do okularów. Zawsze próbujesz użyć innych gogli lub stworzyć własne.);

1x jakiś rodzaj (elastycznej) opaski do założenia wokół klatki piersiowej.

Narzędzia:-Laptop

-Lutownica

-Oprogramowanie Arduino IDE

Zobaczysz dwa przyciski i przełącznik na moim pcv, używam tylko lewego przycisku do podłączenia go do przełącznika, nie używam drugiego przycisku po prawej stronie zdjęcia. Umieściłem przyciski na pcv, zanim zdałem sobie sprawę, że ich nie potrzebuję i zamiast tego musiałem użyć przełącznika.

Poniżej zobaczysz zdjęcia wszystkiego, czego użyłem:

Krok 2: Pierścienie Neopixel

Pierścienie Neopikselowe
Pierścienie Neopikselowe

Biały przewód jest podłączony do masy z tyłu pierścienia neopiksela.

Pomarańczowy przewód jest podłączony do 5V.

A brązowy przewód jest podłączony do wejścia danych!

Krok 3: Połączenia

Znajomości
Znajomości
Znajomości
Znajomości

Tak wyglądała moja płytka prototypowa podczas prototypowania, możesz użyć tego jako odniesienia.

Zrobiłem też układ okablowania jak ma wyglądać za pomocą jednego przycisku.

Krok 4: Kodeks:

Prawdopodobnie nie jest to najbardziej wydajny kod, ale dla mnie działa. Zmierz się i postaraj się, aby był bardziej wydajny;P

#włączać

// Który

pin na Arduino jest podłączony do NeoPixels?

#definiować

PIN 6

// Który

pin na Arduino jest podłączony do przycisku

#definiować

PRZYCISK_PIN 9

// Jak

wiele NeoPixels jest podłączonych do Arduino?

#definiować

NUMPIKSELE 16

// Kiedy

konfigurujemy bibliotekę NeoPixel, mówimy jej, ile pikseli i którego pinu użyć do wysyłania sygnałów.

// Notatka

że w przypadku starszych pasków NeoPixel może być konieczna zmiana trzeciego parametru – patrz strandtest

//

przykład, aby uzyskać więcej informacji na temat możliwych wartości.

Adafruit_NeoPixel

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

wewnętrzna pauza

= 1; //opóźnienie2

int

pauza2 = 80; //schodzi, gdy używany jest fsr

int

pauza3 = 150; // robi się up, gdy używany jest fsr

int

opóźnienie = 4; // opóźnienie1

int

fsrPin = 0; // menu rozwijane FSR i 10K są połączone z a0

int

fsrCzytanie;

próżnia

Ustawiać() {

pinMode(PIN_PIN, WEJŚCIE);

Serial.początek(9600);

piksele.początek(); // To inicjuje

Biblioteka NeoPixel.

piksele.pokaż();

}

głupota

wciśnięty przycisk (szpilka int){

powrót digitalRead (pin);

}

próżnia

loop() { //odczytuje czy wejście pin jest prawdziwe czy fałszywe

fsrReading = analogRead (fsrPin);

Serial.print("Odczyt analogowy = ");

Serial.print(fsrReading);

if (przycisk naciśnięty(BUTTON_PIN) == true){

//efekt świetlny podczas korzystania z czujnika fsr

jeśli (fsrReading > 50){

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

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

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

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

piksele.pokaż();

opóźnienie(pauza3);

}

if (fsrReading < 52){

piksele.setPixelColor(0, 0, 0, 0);

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

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

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

piksele.pokaż();

opóźnienie(pauza2);

}

jeśli (fsrReading > 57){

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

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

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

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

piksele.pokaż();

opóźnienie(pauza3);

}

jeśli (fsrReading < 59){

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

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

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

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

piksele.pokaż();

opóźnienie(pauza2);

}

jeśli (fsrReading > 65){

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

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

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

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

piksele.pokaż();

opóźnienie(pauza3);

}

jeśli (fsrReading <67){

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

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

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

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

piksele.pokaż();

opóźnienie(40);

}

jeśli (fsrReading > 79){

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

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

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

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

piksele.pokaż();

opóźnienie(pauza3);

}

jeśli (fsrReading <85){

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

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

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

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

piksele.pokaż();

opóźnienie(20);

}

}

w przeciwnym razie{

Breathe_blue (20, 100, 0, 1, 1); // normalny

efekt

}

}

// Pauza

= opóźnienie między przejściami

// Kroki

= liczba kroków

// R, G, B = Pełne wartości RGB

// 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 pauza, int kroki, bajt R, bajt G, bajt B) {

int

tmpR, tmpG, tmpB; // Wartości temperatury

// Zniknij

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

tmpR = (R * s) /

kroki; // Pomnóż najpierw, aby uniknąć błędów obcinania

tmpG = (G * s) / kroki;

tmpB = (B * s) / kroki;

dla (int i=0;

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

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

}

piksele.pokaż();

opóźnienie(4);

}

// Zniknij

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

tmpR = (R * s) /

kroki; // Pomnóż najpierw, aby uniknąć błędów obcinania

tmpG = (G * s) / kroki;

tmpB = (B * s) / kroki;

dla (int i=0;

ipiksele.setPixelColor(1, tmpR, tmpG+1, tmpB);piksele.setPixelColor(14, tmpR, tmpG+1, tmpB);

}

piksele.pokaż();

opóźnienie(4);

}

// Zniknij

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

tmpR = (R * s) /

kroki; // Pomnóż najpierw, aby uniknąć błędów obcinania

tmpG = (G * s) / kroki;

tmpB = (B * s) / kroki;

dla (int i=0;

ipiksele.setPixelColor(2, tmpR, tmpG+2, tmpB);piksele.setPixelColor(13, tmpR, tmpG+2, tmpB);

}

piksele.pokaż();

opóźnienie(3.5);

}

// Zniknij

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

tmpR = (R * s) /

kroki; // Pomnóż najpierw, aby uniknąć błędów obcinania

tmpG = (G * s) / kroki;

tmpB = (B * s) / kroki;

dla (int i=0;

ipiksele.setPixelColor(3, tmpR, tmpG+3, tmpB+5);piksele.setPixelColor(12, tmpR, tmpG+3, tmpB+5);

}

piksele.pokaż();

opóźnienie(3);

}

dla (int i=0;

ipiksele.setPixelColor(0, 0, 0, 0);piksele.setPixelColor(15, 0, 0, 0);

}

// Zniknij

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

tmpR = (R * s) /

kroki; // Pomnóż najpierw, aby uniknąć błędów obcinania

tmpG = (G * s) / kroki;

tmpB = (B * s) / kroki;

dla (int i=0;

i

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

}

piksele.pokaż();

opóźnienie(3);

}

// Zniknij

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

tmpR = (R * s) /

kroki; // Pomnóż najpierw, aby uniknąć błędów obcinania

tmpG = (G * s) / kroki;

tmpB = (B * s) / kroki;

dla (int i=0;

ipiksele.setPixelColor(5, tmpR, tmpG+4, tmpB+20);piksele.setPixelColor(10, tmpR, tmpG+4, tmpB+20);

}

piksele.pokaż();

opóźnienie(2);

}

dla (int i=0;

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

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

}

// Zniknij

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

tmpR = (R * s) /

kroki; // Pomnóż najpierw, aby uniknąć błędów obcinania

tmpG = (G * s) / kroki;

tmpB = (B * s) / kroki;

dla (int i=0;

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

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

}

piksele.pokaż();

opóźnienie(opóźnienie);

}

dla (int i=0;

ipiksele.setPixelColor(2, 0, 0, 0);piksele.setPixelColor(13, 0, 0, 0);

}

// Zniknij

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

tmpR = (R * s) /

kroki; // Pomnóż najpierw, aby uniknąć błędów obcinania

tmpG = (G * s) / kroki;

tmpB = (B * s) / kroki;

dla (int i=0;

i

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

}

piksele.pokaż();

opóźnienie(opóźnienie);

}

// Zanikanie

for (int s=kroki; s>0; s--) {

tmpR = (R*s)/kroki; // Pomnóż najpierw, aby uniknąć obcięcia

błędy

tmpG = (G * s) / kroki;

tmpB = (B * s) / kroki;

dla (int i=0; i

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

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

}

piksele.pokaż();

opóźnienie(1);

}

// Zanikanie

for (int s=kroki; s>0; s--) {

tmpR = (R*s)/kroki; // Pomnóż najpierw, aby uniknąć obcięcia

błędy

tmpG = (G * s) / kroki;

tmpB = (B * s) / kroki;

dla (int i=0; i

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

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

}

piksele.pokaż();

opóźnienie(1);

}

// Zanikanie

for (int s=kroki; s>0; s--) {

tmpR = (R*s)/kroki; // Pomnóż najpierw, aby uniknąć obcięcia

błędy

tmpG = (G * s) / kroki;

tmpB = (B * s) / kroki;

dla (int i=0; i

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

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

}

piksele.pokaż();

opóźnienie(2);

}

// Zanikanie

for (int s=kroki; s>0; s--) {

tmpR = (R*s)/kroki; // Pomnóż najpierw, aby uniknąć obcięcia

błędy

tmpG = (G * s) / kroki;

tmpB = (B * s) / kroki;

dla (int i=0; i

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

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

}

piksele.pokaż();

opóźnienie(2);

}

// Zanikanie

for (int s=kroki; s>0; s--) {

tmpR = (R*s)/kroki; // Pomnóż najpierw, aby uniknąć obcięcia

błędy

tmpG = (G * s) / kroki;

tmpB = (B * s) / kroki;

dla (int i=0; i

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

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

}

piksele.pokaż();

opóźnienie(3);

}

// Zanikanie

for (int s=kroki; s>0; s--) {

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

Pomnóż najpierw, aby uniknąć błędów obcinania

tmpG = (G * s) / kroki;

tmpB = (B * s) / kroki;

dla (int i=0; i

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

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

}

piksele.pokaż();

opóźnienie(3);

}

// Zanikanie

for (int s=kroki; s>0; s--) {

tmpR = (R*s)/kroki; // Pomnóż najpierw, aby uniknąć obcięcia

błędy

tmpG = (G * s) / kroki;

tmpB = (B * s) / kroki;

dla (int i=0; i

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

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

}

piksele.pokaż();

opóźnienie(4);

}

// Zanikanie

for (int s=kroki; s>0; s--) {

tmpR = (R*s)/kroki; // Pomnóż najpierw, aby uniknąć obcięcia

błędy

tmpG = (G * s) / kroki;

tmpB = (B * s) / kroki;

dla (int i=0; i

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

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

}

piksele.pokaż();

opóźnienie(4);

}

}

Krok 5: Składanie wszystkiego razem:

Składanie wszystkiego razem
Składanie wszystkiego razem

Możesz po prostu zostawić wszystkie przewody podłączone do płytki stykowej lub PVC, to zależy od Ciebie (zdecydowałem się umieścić PVC na wierzchu arduino, jest to ładne i schludne w ten sposób).

Następnym krokiem jest założenie rurek termokurczliwych na wszystkie przewody, dzięki czemu jest mniej bałaganu.

Jeśli zdecydujesz się na użycie PVC, powinieneś już wszystko zlutować.

Następnie umieszczasz pierścienie neopikselowe na zewnętrznej stronie gogli (upewnij się, że diody led są wyrównane na dole) i zabezpieczasz je na miejscu za pomocą taśmy lub kleju (ja użyłem taśmy).

Możesz przykleić czujnik fsr do elastycznej taśmy za pomocą taśmy lub po prostu zostawić go sam.

Ciesz się goglami:)

Zalecana: