Kazalo:
- Korak: Potrebni materiali in deli:
- 2. korak: prstani Neopixel
- 3. korak: Povezave
- 4. korak: Koda:
- 5. korak: Vse sestavite skupaj:
Video: Očala za sprostitev - ITTT: 5 korakov (s slikami)
2024 Avtor: John Day | [email protected]. Nazadnje spremenjeno: 2024-01-30 12:07
Projekt HKU - ITTT (Če je to potem tisto) - Julia Berkouwer, 1B
Ste se kdaj počutili pod stresom in preprosto ne veste, kako se pomiriti, potem poskusite s temi očala za sprostitev! Oblečete jih in zaprete oči, nato pa se bo predvajal vzorec dihanja. Če sledite temu vzorcu dihanja, se bo vaš dihalni ritem zmanjšal na vdihavanje in izdihovanje 6 -krat na minuto. S tem se znebite vsakodnevnega stresa.
Intenzivnost dihanja lahko spremljate tudi s pritiskom na stikalo s senzorjem fsr.
S tem toturialom vas bom korak za korakom vodil skozi izdelavo lastnih očal za sprostitev.
Korak: Potrebni materiali in deli:
Materiali:
1x arduino uno;
1xbreadboard ali PCV;
3x 10k upori
Žice (po možnosti različnih barv, da je lažje ugotoviti, katere stvari gredo v tla in katere gredo v različne zatiče itd.);
Nekaj toplotno skrčljivih cevi;
2x NeoPixel prstan - 16 x 5050 RGB LED z vgrajenimi gonilniki;
1x stikalo;
1x senzor FSR;
1x SteamPunk očala (Lahko jih kupite v zabaviščni trgovini, enostavni so za uporabo, ker se neopixel prstan odlično prilega kozarcem. Vedno poskusite uporabiti druga očala ali pa si ustvarite sami.);
1x nekakšen (elastični) trak, ki ga postavite okoli prsi.
Orodja:-Prenosni računalnik
-spajkalnik
-Arduino IDE programska oprema
Na pvc -ju boste videli dva gumba in stikalo, le levi gumb povežem s stikalom, drugega gumba na desni strani slike ne uporabljam. Gumbe sem namestil na pvc, preden sem ugotovil, da jih ne potrebujem in sem namesto tega moral uporabiti stikalo.
Spodaj boste videli slike vsega, kar sem uporabil:
2. korak: prstani Neopixel
Bela žica je povezana z ozemljitvijo na zadnji strani neopikselnega obroča.
Oranžna žica je priključena na 5V.
Rjava žica je priključena na vnos podatkov
3. korak: Povezave
Tako je izgledala moja plošča med izdelavo prototipov, to lahko uporabite kot referenco.
Naredil sem tudi postavitev ožičenja, kako naj bi izgledal samo z enim gumbom.
4. korak: Koda:
Verjetno ni najbolj učinkovita koda, vendar mi deluje. Izzovite se in poskušajte biti učinkovitejši; P
#vključi
// Kateri
pin na Arduinu je povezan z NeoPixels?
#define
PIN 6
// Kateri
pin na Arduinu je povezan z gumbom
#define
BUTTON_PIN 9
// Kako
veliko NeoPixel je priključenih na Arduino?
#define
ŠTEVILKA 16
// Kdaj
nastavimo knjižnico NeoPixel, povemo ji, koliko slikovnih pik in kateri pin uporabite za pošiljanje signalov.
// Opomba
da boste za starejše trakove NeoPixel morda morali spremeniti tretji parameter-glejte strandtest
//
za več informacij o možnih vrednostih.
Adafruit_NeoPixel
slikovnih pik = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int pavza
= 1; // zakasnitev2
int
premor2 = 80; // gre navzdol, ko se uporablja fsr
int
premor3 = 150; // delam gor, ko se uporablja fsr
int
delayval = 4; // zakasnitev1
int
fsrPin = 0; // FSR in 10K spustni meni sta povezana z a0
int
fsrReading;
nično
nastaviti() {
pinMode (BUTTON_PIN, INPUT);
Serial.begin (9600);
pixels.begin (); // S tem se inicializira
Knjižnica NeoPixel.
piksli.show ();
}
bool
pritisnjen na gumb (int pin) {
return digitalRead (pin);
}
nično
loop () {// bere, ali je vnos pin pravilen ali napačen
fsrReading = analogRead (fsrPin);
Serial.print ("Analogno branje =");
Serial.print (fsrReading);
if (pritisnjen gumb (BUTTON_PIN) == true) {
// svetlobni učinek pri uporabi senzorja 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);
piksli.show ();
zamuda (premor3);
}
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);
piksli.show ();
zamuda (premor 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);
piksli.show ();
zamuda (premor3);
}
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);
piksli.show ();
zamuda (premor 2);
}
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);
piksli.show ();
zamuda (premor3);
}
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);
piksli.show ();
zamuda (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);
piksli.show ();
zamuda (premor3);
}
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);
piksli.show ();
zamuda (20);
}
}
drugače {
vdihni_modra (20, 100, 0, 1, 1); // normalno
učinek
}
}
// Pavza
= zakasnitev med prehodi
// Koraki
= število korakov
// R, G, B = polne vrednosti RGB
// De void blowhe is voor het licht effect als de
fsrsensor niet gebruikt wordt. Deze void wordt v de void loop () weer aangeroepen.
voidreathe_blue (int premor, int koraki, bajt R, bajt G, bajt B) {
int
tmpR, tmpG, tmpB; // Temp vrednosti
// Zbledi
for (int s = 1; s <= koraki; s ++) {
tmpR = (R * s) /
koraki; // Najprej pomnožite, da se izognete napakam pri obrezovanju
tmpG = (G * s) / koraki;
tmpB = (B * s) / koraki;
za (int i = 0;
jazpixels.setPixelColor (0, tmpR, tmpG+1, tmpB);
pixels.setPixelColor (15, tmpR, tmpG+1, tmpB);
}
piksli.show ();
zamuda (4);
}
// Zbledi
for (int s = 1; s <= koraki; s ++) {
tmpR = (R * s) /
koraki; // Najprej pomnožite, da se izognete napakam pri obrezovanju
tmpG = (G * s) / koraki;
tmpB = (B * s) / koraki;
za (int i = 0;
jazpixels.setPixelColor (1, tmpR, tmpG+1, tmpB);pixels.setPixelColor (14, tmpR, tmpG+1, tmpB);
}
piksli.show ();
zamuda (4);
}
// Zbledi
for (int s = 1; s <= koraki; s ++) {
tmpR = (R * s) /
koraki; // Najprej pomnožite, da se izognete napakam pri obrezovanju
tmpG = (G * s) / koraki;
tmpB = (B * s) / koraki;
za (int i = 0;
jazpixels.setPixelColor (2, tmpR, tmpG+2, tmpB);pixels.setPixelColor (13, tmpR, tmpG+2, tmpB);
}
piksli.show ();
zamuda (3,5);
}
// Zbledi
for (int s = 1; s <= koraki; s ++) {
tmpR = (R * s) /
koraki; // Najprej pomnožite, da se izognete napakam pri obrezovanju
tmpG = (G * s) / koraki;
tmpB = (B * s) / koraki;
za (int i = 0;
jazpixels.setPixelColor (3, tmpR, tmpG+3, tmpB+5);pixels.setPixelColor (12, tmpR, tmpG+3, tmpB+5);
}
piksli.show ();
zamuda (3);
}
za (int i = 0;
jazpixels.setPixelColor (0, 0, 0, 0);pixels.setPixelColor (15, 0, 0, 0);
}
// Zbledi
for (int s = 1; s <= koraki; s ++) {
tmpR = (R * s) /
koraki; // Najprej pomnožite, da se izognete napakam pri obrezovanju
tmpG = (G * s) / koraki;
tmpB = (B * s) / koraki;
za (int i = 0;
jaz
pixels.setPixelColor (4, tmpR, tmpG+3, tmpB+15);pixels.setPixelColor (11, tmpR, tmpG+3, tmpB+15);
}
piksli.show ();
zamuda (3);
}
// Zbledi
for (int s = 1; s <= koraki; s ++) {
tmpR = (R * s) /
koraki; // Najprej pomnožite, da se izognete napakam pri obrezovanju
tmpG = (G * s) / koraki;
tmpB = (B * s) / koraki;
za (int i = 0;
jazpixels.setPixelColor (5, tmpR, tmpG+4, tmpB+20);pixels.setPixelColor (10, tmpR, tmpG+4, tmpB+20);
}
piksli.show ();
zamuda (2);
}
za (int i = 0;
jazpixels.setPixelColor (1, 0, 0, 0);
pixels.setPixelColor (14, 0, 0, 0);
}
// Zbledi
for (int s = 1; s <= koraki; s ++) {
tmpR = (R * s) /
koraki; // Najprej pomnožite, da se izognete napakam pri obrezovanju
tmpG = (G * s) / koraki;
tmpB = (B * s) / koraki;
za (int i = 0;
jazpixels.setPixelColor (6, tmpR, tmpG+2, tmpB+40);
pixels.setPixelColor (9, tmpR, tmpG+2, tmpB+40);
}
piksli.show ();
zamuda (delayval);
}
za (int i = 0;
jazpixels.setPixelColor (2, 0, 0, 0);pixels.setPixelColor (13, 0, 0, 0);
}
// Zbledi
for (int s = 1; s <= koraki; s ++) {
tmpR = (R * s) /
koraki; // Najprej pomnožite, da se izognete napakam pri obrezovanju
tmpG = (G * s) / koraki;
tmpB = (B * s) / koraki;
za (int i = 0;
jaz
pixels.setPixelColor (7, tmpR, tmpG, tmpB+44);pixels.setPixelColor (8, tmpR, tmpG, tmpB+44);
}
piksli.show ();
zamuda (delayval);
}
// Zmanjšaj
for (int s = koraki; s> 0; s--) {
tmpR = (R * s) / koraki; // Najprej pomnožite, da se izognete skrajšanju
napake
tmpG = (G * s) / koraki;
tmpB = (B * s) / koraki;
za (int i = 0; i
pixels.setPixelColor (7, tmpR, tmpG, tmpB);
pixels.setPixelColor (8, tmpR, tmpG, tmpB);
}
piksli.show ();
zamuda (1);
}
// Zmanjšaj
for (int s = koraki; s> 0; s--) {
tmpR = (R * s) / koraki; // Najprej pomnožite, da se izognete skrajšanju
napake
tmpG = (G * s) / koraki;
tmpB = (B * s) / koraki;
za (int i = 0; i
pixels.setPixelColor (6, tmpR, tmpG, tmpB);
pixels.setPixelColor (9, tmpR, tmpG, tmpB);
}
piksli.show ();
zamuda (1);
}
// Zmanjšaj
for (int s = koraki; s> 0; s--) {
tmpR = (R * s) / koraki; // Najprej pomnožite, da se izognete skrajšanju
napake
tmpG = (G * s) / koraki;
tmpB = (B * s) / koraki;
za (int i = 0; i
pixels.setPixelColor (5, tmpR, tmpG, tmpB);
pixels.setPixelColor (10, tmpR, tmpG, tmpB);
}
piksli.show ();
zamuda (2);
}
// Zmanjšaj
for (int s = koraki; s> 0; s--) {
tmpR = (R * s) / koraki; // Najprej pomnožite, da se izognete skrajšanju
napake
tmpG = (G * s) / koraki;
tmpB = (B * s) / koraki;
za (int i = 0; i
pixels.setPixelColor (4, tmpR, tmpG, tmpB);
pixels.setPixelColor (11, tmpR, tmpG, tmpB);
}
piksli.show ();
zamuda (2);
}
// Zmanjšaj
for (int s = koraki; s> 0; s--) {
tmpR = (R * s) / koraki; // Najprej pomnožite, da se izognete skrajšanju
napake
tmpG = (G * s) / koraki;
tmpB = (B * s) / koraki;
za (int i = 0; i
pixels.setPixelColor (3, tmpR, tmpG, tmpB);
pixels.setPixelColor (12, tmpR, tmpG, tmpB);
}
piksli.show ();
zamuda (3);
}
// Zmanjšaj
for (int s = koraki; s> 0; s--) {
tmpR = (R * s) / koraki; //
Najprej pomnožite, da se izognete napakam pri obrezovanju
tmpG = (G * s) / koraki;
tmpB = (B * s) / koraki;
za (int i = 0; i
pixels.setPixelColor (2, tmpR, tmpG, tmpB);
pixels.setPixelColor (13, tmpR, tmpG, tmpB);
}
piksli.show ();
zamuda (3);
}
// Zmanjšaj
for (int s = koraki; s> 0; s--) {
tmpR = (R * s) / koraki; // Najprej pomnožite, da se izognete skrajšanju
napake
tmpG = (G * s) / koraki;
tmpB = (B * s) / koraki;
za (int i = 0; i
pixels.setPixelColor (1, tmpR, tmpG, tmpB);
pixels.setPixelColor (14, tmpR, tmpG, tmpB);
}
piksli.show ();
zamuda (4);
}
// Zmanjšaj
for (int s = koraki; s> 0; s--) {
tmpR = (R * s) / koraki; // Najprej pomnožite, da se izognete skrajšanju
napake
tmpG = (G * s) / koraki;
tmpB = (B * s) / koraki;
za (int i = 0; i
pixels.setPixelColor (0, tmpR, tmpG, tmpB);
pixels.setPixelColor (15, tmpR, tmpG, tmpB);
}
piksli.show ();
zamuda (4);
}
}
5. korak: Vse sestavite skupaj:
Lahko pustite vse svoje žice povezane z vašo mizo ali PVC, to je odvisno od vas (jaz sem se odločil, da na arduino položim PVC, tako lepo in lepo).
Naslednji korak je, da okrog vseh žic položite toplotno skrčljive cevi, da bo manj nereda.
Če ste se odločili za uporabo PVC -ja, bi morali do zdaj že vse skupaj spajkati.
Nato obroče neopiksela položite na zunanjo stran očal (prepričajte se, da so svetleče diode poravnane na dnu) in jih pritrdite s trakom ali lepilom (jaz sem uporabil trak).
Lahko se odločite, da senzor fsr pritrdite na elastični trak z nekaj trakom ali pa ga pustite sami.
Uživajte v očalih:)
Priporočena:
Pametna očala (pod 10 USD !!!): 8 korakov (s slikami)
Pametna očala (pod 10 USD !!!): Pozdravljeni! Vsi poznamo pametna očala, kot je tista z imenom E.D.I.T.H. izdelal naš ljubljeni lik Tony Stark, ki ga je kasneje posredoval Peter Parker. Danes bom zgradil eno tako pametno steklo, ki bo tudi pod 10 USD! Niso ravno
Očala za nočno opazovanje za Google Cardboard: 10 korakov (s slikami)
Očala za nočno opazovanje za Google Cardboard: Zavrnitev odgovornosti: Uporaba te naprave je namenjena samo zabavi, izobraževanju in znanstveni uporabi; ne za vohunjenje in/ali nadzor. &Quot; vohunski pripomoček " funkcije so bile dodane v aplikacijo samo za zabavo in ne bi imele praktičnega namena za
Očala s tekočimi kristali za ambliopijo (očala za izmenično okluzijo) [ATtiny13]: 10 korakov (s slikami)
Očala s tekočimi kristali za ambliopijo (očala za izmenično okluzijo) [ATtiny13]: ambliopija (leno oko), motnja vida, ki prizadene približno 3% prebivalstva, običajno pa se zdravi s preprostimi očesnimi očesi ali kapljicami atropina. Na žalost te metode zdravljenja dolgotrajno in neprekinjeno zapirajo močnejše oči, ne
Olympus Evolt E510 Oddaljeni kabel za sprostitev: 12 korakov
Olympus Evolt E510 Remote Cable Release: Za tiste, ki ne poznate Remote Cable Release, ta naprava omogoča fotografu, da posname sliko, ne da bi se dotaknil kamere. Uporaba daljinskega upravljalnika zagotavlja, da se fotoaparat med osvetlitvijo ne premakne. To je še posebej uporabno pri jemanju ma
Nosilec za sprostitev kabla za digitalni fotoaparat Olympus SP-350: 11 korakov
Nosilec za sprostitev kabla za digitalni fotoaparat Olympus SP-350: Ta fotoaparat je odličen za kopiranje dokumentov in je veliko hitrejši od uporabe optičnega bralnika z ravnim ležiščem. Zanima me predvsem hitro kopiranje natisnjenih ali ročno napisanih strani za ustvarjanje berljivih digitalnih slik, ne pa za ustvarjanje podob visoke kakovosti