Cuprins:
- Pasul 1: Materiale și piese necesare:
- Pasul 2: Inele Neopixel
- Pasul 3: Conexiuni
- Pasul 4: Codul:
- Pasul 5: A pune totul împreună:
Video: Ochelari de relaxare - ITTT: 5 pași (cu imagini)
2024 Autor: John Day | [email protected]. Modificat ultima dată: 2024-01-30 11:46
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:
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
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
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ă:
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:
Ochelari inteligenți (sub 10 USD !!!): 8 pași (cu imagini)
Ochelari inteligenți (sub 10 USD !!!): Salut! Cu toții suntem familiarizați cu ochelarii inteligenți precum cel numit E.D.I.T.H. realizat de iubitul nostru personaj Tony Stark care i-a fost transmis mai târziu lui Peter Parker. Astăzi am de gând să construiesc un astfel de sticlă inteligentă, care și sub 10 dolari! Nu sunt chiar
Ochelari de vedere nocturnă pentru Google Cardboard: 10 pași (cu imagini)
Ochelari de vedere de noapte pentru Google Cardboard: Declinare de responsabilitate: utilizarea acestui dispozitiv este destinată exclusiv divertismentului, educației și utilizării științifice; nu pentru spionaj și / sau supraveghere. „Gadgetul de spionaj” funcțiile au fost adăugate în aplicație doar pentru distracție și nu ar avea niciun scop practic pentru
DIY - Ochelari RGB: 3 pași (cu imagini)
DIY | Ochelari RGB: Hei! Am realizat ochelari RGB folosind LED-uri WS2812B și Arduino Nano. Ochelarii au multe animații, pot fi controlate cu ajutorul unei aplicații mobile. Aplicația poate comunica cu arduino prin modulul Bluetooth
Ochelari și costume LED: 4 pași (cu imagini)
Ochelari și costume LED: Îți place să fii văzut de departe în întuneric? Vrei ochelari de lux precum Elton? Atunci, acest instructabil este pentru tine !!! Veți învăța cum să faceți un costum cu LED-uri și ochelari de lumină animați
Ochelari cu cristale lichide pentru ambliopie (Ochelari de antrenament pentru ocluzie alternativă) [ATtiny13]: 10 pași (cu imagini)
Ochelari cu cristale lichide pentru ambliopie (Ochelari de antrenament pentru ocluzie alternativă) [ATtiny13]: Ambliopie (ochi leneș), o tulburare a vederii care afectează aproximativ 3% din populație, tratată de obicei prin patch-uri simple de ochi sau picături de atropină. Din păcate, aceste metode de tratament ocluzie un ochi mai puternic pentru perioade lungi de timp neîntrerupte, nu