Cuprins:

Ochelari de relaxare - ITTT: 5 pași (cu imagini)
Ochelari de relaxare - ITTT: 5 pași (cu imagini)

Video: Ochelari de relaxare - ITTT: 5 pași (cu imagini)

Video: Ochelari de relaxare - ITTT: 5 pași (cu imagini)
Video: Ce înseamna semnul tau din nastere 2024, Iulie
Anonim
Ochelari de relaxare - ITTT
Ochelari de relaxare - ITTT
Ochelari de relaxare - ITTT
Ochelari de relaxare - ITTT
Ochelari de relaxare - ITTT
Ochelari de relaxare - ITTT

Proiect HKU - ITTT (Dacă acesta este atunci) - Julia Berkouwer, 1B

Te-ai simțit vreodată stresat și pur și simplu nu știi cum să te calmezi, atunci ar trebui să încerci acești ochelari de relaxare! Îi pui și închizi ochii, apoi se va juca un model de respirație. Urmând acest model de respirație, ritmul dvs. de respirație va coborî la respirație de 6 ori pe minut. Făcând acest lucru, eliberați stresul zilnic.

De asemenea, vă puteți urmări intensitatea respirației prin rotirea unui comutator, folosind un senzor fsr.

Cu acest toturial vă voi ghida prin construirea propriilor ochelari de relaxare pas cu pas.

Pasul 1: Materiale și piese necesare:

Materiale și piese necesare
Materiale și piese necesare
Materiale și piese necesare
Materiale și piese necesare
Materiale și piese necesare
Materiale și piese necesare

Materiale:

1x arduino uno;

1xbreadboard sau PCV;

3x rezistențe 10k

Sârme (de preferință culori diferite, astfel încât este mai ușor să se spună ce lucruri se îndreaptă spre sol și care se îndreaptă spre ace diferite etc.);

Unele tuburi termocontractibile;

2x inel NeoPixel - LED RGB 16 x 5050 cu drivere integrate;

1x comutator;

1x senzor FSR;

1 x ochelari SteamPunk (Puteți cumpăra aceștia de la un magazin de petreceri, sunt ușor de utilizat, deoarece inelul de neopixel se potrivește perfect pe ochelari. Încercați întotdeauna să folosiți alte ochelari sau să creați propriul dvs.);

1x un fel de bandă (elastick) pentru a vă pune în jurul pieptului.

Instrumente: -Laptop

-Ciocan de lipit

-Software IDE Arduino

Veți vedea două butoane și un comutator pe pvc-ul meu, folosesc doar butonul din stânga pentru a-l conecta la comutator, nu folosesc al doilea buton din dreapta imaginii. Am pus butoanele pe pvc înainte de a-mi da seama că nu am nevoie de ele și trebuia să folosesc un comutator în schimb.

Mai jos veți vedea imagini cu tot ce am folosit:

Pasul 2: Inele Neopixel

Inele Neopixel
Inele Neopixel

Firul alb este conectat la pământ pe spatele inelului neopixel.

Firul portocaliu este conectat la 5V.

Și firul maro este conectat la intrarea de date

Pasul 3: Conexiuni

Conexiuni
Conexiuni
Conexiuni
Conexiuni

Așa arăta panoul meu de testare în timp ce făceam prototipuri, îl puteți folosi ca referință.

De asemenea, am făcut un aspect al cablajului a ceea ce ar trebui să arate cu un singur buton.

Pasul 4: Codul:

Probabil că nu este cel mai eficient cod, dar funcționează pentru mine. Provocați-vă și încercați să-l faceți mai eficient; P

#include

// Care

pinul de pe Arduino este conectat la NeoPixels?

#defini

PIN 6

// Care

pinul de pe Arduino este conectat la buton

#defini

BUTTON_PIN 9

// Cum

mulți NeoPixeli sunt atașați la Arduino?

#defini

NUMPIXELI 16

// Cand

configurăm biblioteca NeoPixel, îi spunem câți pixeli și ce pin să folosească pentru a trimite semnale.

// Notă

că pentru benzile NeoPixel mai vechi ar putea fi necesar să schimbați al treilea parametru - consultați strandtest

//

exemplu pentru mai multe informații despre valorile posibile.

Adafruit_NeoPixel

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

int pauză

= 1; // întârziere2

int

pauză2 = 80; // coborând când se folosește fsr

int

pauză3 = 150; // rezolvarea când se folosește fsr

int

delayval = 4; // întârziere1

int

fsrPin = 0; // derulare FSR și 10K sunt conectate la a0

int

fsrCitirea;

nul

înființat() {

pinMode (BUTTON_PIN, INPUT);

Serial.begin (9600);

pixeli.begin (); // Aceasta inițializează

Biblioteca NeoPixel.

pixels.show ();

}

bool

apăsat pe buton (pin intern) {

return digitalRead (pin);

}

nul

loop () {// citește dacă intrarea pin este adevărată sau falsă

fsrReading = analogRead (fsrPin);

Serial.print ("Citire analogică =");

Serial.print (fsrReading);

if (butonat (BUTTON_PIN) == adevărat) {

// efect de lumină la utilizarea senzorului fsr

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

întârziere (pauză3);

}

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

întârziere (pauză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 ();

întârziere (pauză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 ();

întârziere (pauză2);

}

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

întârziere (pauză3);

}

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

întârziere (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 ();

întârziere (pauză3);

}

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

întârziere (20);

}

}

altceva {

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

efect

}

}

// Pauză

= întârziere între tranziții

// Pași

= numărul de pași

// R, G, B = valori RGB complete

// 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 (pauză int, pași int, octet R, octet G, octet B) {

int

tmpR, tmpG, tmpB; // Valorile temp

// Fade up

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

tmpR = (R * s) /

trepte; // Înmulțiți-vă mai întâi pentru a evita erorile de trunchiere

tmpG = (G * s) / pași;

tmpB = (B * s) / pași;

pentru (int i = 0;

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

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

}

pixels.show ();

întârziere (4);

}

// Fade up

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

tmpR = (R * s) /

trepte; // Înmulțiți-vă mai întâi pentru a evita erorile de trunchiere

tmpG = (G * s) / pași;

tmpB = (B * s) / pași;

pentru (int i = 0;

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

}

pixels.show ();

întârziere (4);

}

// Fade up

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

tmpR = (R * s) /

trepte; // Înmulțiți-vă mai întâi pentru a evita erorile de trunchiere

tmpG = (G * s) / pași;

tmpB = (B * s) / pași;

pentru (int i = 0;

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

}

pixels.show ();

întârziere (3,5);

}

// Fade up

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

tmpR = (R * s) /

trepte; // Înmulțiți-vă mai întâi pentru a evita erorile de trunchiere

tmpG = (G * s) / pași;

tmpB = (B * s) / pași;

pentru (int i = 0;

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

}

pixels.show ();

întârziere (3);

}

pentru (int i = 0;

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

}

// Fade up

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

tmpR = (R * s) /

trepte; // Înmulțiți-vă mai întâi pentru a evita erorile de trunchiere

tmpG = (G * s) / pași;

tmpB = (B * s) / pași;

pentru (int i = 0;

eu

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

}

pixels.show ();

întârziere (3);

}

// Fade up

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

tmpR = (R * s) /

trepte; // Înmulțiți-vă mai întâi pentru a evita erorile de trunchiere

tmpG = (G * s) / pași;

tmpB = (B * s) / pași;

pentru (int i = 0;

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

}

pixels.show ();

întârziere (2);

}

pentru (int i = 0;

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

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

}

// Fade up

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

tmpR = (R * s) /

trepte; // Înmulțiți-vă mai întâi pentru a evita erorile de trunchiere

tmpG = (G * s) / pași;

tmpB = (B * s) / pași;

pentru (int i = 0;

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

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

}

pixels.show ();

întârziere (delayval);

}

pentru (int i = 0;

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

}

// Fade up

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

tmpR = (R * s) /

trepte; // Înmulțiți-vă mai întâi pentru a evita erorile de trunchiere

tmpG = (G * s) / pași;

tmpB = (B * s) / pași;

pentru (int i = 0;

eu

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

}

pixels.show ();

întârziere (delayval);

}

// Se estompează

pentru (int s = pași; s> 0; s--) {

tmpR = (R * s) / pași; // Înmulțiți-vă mai întâi pentru a evita trunchierea

erori

tmpG = (G * s) / pași;

tmpB = (B * s) / pași;

pentru (int i = 0; i

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

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

}

pixels.show ();

întârziere (1);

}

// Se estompează

pentru (int s = pași; s> 0; s--) {

tmpR = (R * s) / pași; // Înmulțiți-vă mai întâi pentru a evita trunchierea

erori

tmpG = (G * s) / pași;

tmpB = (B * s) / pași;

pentru (int i = 0; i

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

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

}

pixels.show ();

întârziere (1);

}

// Se estompează

pentru (int s = pași; s> 0; s--) {

tmpR = (R * s) / pași; // Înmulțiți-vă mai întâi pentru a evita trunchierea

erori

tmpG = (G * s) / pași;

tmpB = (B * s) / pași;

pentru (int i = 0; i

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

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

}

pixels.show ();

întârziere (2);

}

// Se estompează

pentru (int s = pași; s> 0; s--) {

tmpR = (R * s) / pași; // Înmulțiți-vă mai întâi pentru a evita trunchierea

erori

tmpG = (G * s) / pași;

tmpB = (B * s) / pași;

pentru (int i = 0; i

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

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

}

pixels.show ();

întârziere (2);

}

// Se estompează

pentru (int s = pași; s> 0; s--) {

tmpR = (R * s) / pași; // Înmulțiți-vă mai întâi pentru a evita trunchierea

erori

tmpG = (G * s) / pași;

tmpB = (B * s) / pași;

pentru (int i = 0; i

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

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

}

pixels.show ();

întârziere (3);

}

// Se estompează

pentru (int s = pași; s> 0; s--) {

tmpR = (R * s) / pași; //

Înmulțiți mai întâi pentru a evita erorile de trunchiere

tmpG = (G * s) / pași;

tmpB = (B * s) / pași;

pentru (int i = 0; i

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

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

}

pixels.show ();

întârziere (3);

}

// Se estompează

pentru (int s = pași; s> 0; s--) {

tmpR = (R * s) / pași; // Înmulțiți-vă mai întâi pentru a evita trunchierea

erori

tmpG = (G * s) / pași;

tmpB = (B * s) / pași;

pentru (int i = 0; i

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

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

}

pixels.show ();

întârziere (4);

}

// Se estompează

pentru (int s = pași; s> 0; s--) {

tmpR = (R * s) / pași; // Înmulțiți-vă mai întâi pentru a evita trunchierea

erori

tmpG = (G * s) / pași;

tmpB = (B * s) / pași;

pentru (int i = 0; i

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

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

}

pixels.show ();

întârziere (4);

}

}

Pasul 5: A pune totul împreună:

Punând totul împreună
Punând totul împreună

Ai putea să-ți lași toate firele conectate la panoul tău sau la un PVC, asta depinde de tine (am ales să pun un PVC deasupra arduino-ului, este frumos și îngrijit în acest fel).

Următorul pas este de a pune tuburi termocontractibile în jurul tuturor firelor, astfel încât să fie mai puțin o mizerie.

Dacă ați ales să utilizați un PVC, atunci ar fi trebuit să lipiți totul împreună până acum.

După aceea, puneți inelele de neopixel pe exteriorul ochelarilor (asigurați-vă că ledurile sunt aliniate la nivelul fundului) și fixați-le în loc cu niște bandă sau lipici (am folosit bandă).

Puteți alege să lipiți senzorul fsr de banda elastică cu o bandă sau să îl lăsați singur.

Bucurați-vă de ochelarii de protecție:)

Recomandat: