Obsah:
- Krok 1: Potrebné materiály a diely:
- Krok 2: Neopixelové prstene
- Krok 3: Pripojenia
- Krok 4: Kód:
- Krok 5: Spojenie všetkého dohromady:
Video: Relaxačné okuliare - ITTT: 5 krokov (s obrázkami)
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 12:00
Projekt HKU - ITTT (Ak to potom, potom) - Julia Berkouwer, 1B
Už ste sa niekedy cítili vystresovaní a jednoducho neviete, ako sa upokojiť, potom by ste mali vyskúšať tieto relaxačné okuliare! Nasaďte si ich a zatvorte oči, potom sa spustí dychový vzor. Pri nasledovaní tohto dychového rytmu dýcha váš rytmus 6 krát za minútu. Tým sa uvoľní každodenný stres.
Intenzitu dýchania môžete sledovať aj prepnutím vypínača pomocou senzora fsr.
V tomto príbehu vás krok za krokom prevediem budovaním vlastných relaxačných okuliarov.
Krok 1: Potrebné materiály a diely:
Materiály:
1x arduino uno;
1x chlebová doska alebo PCV;
3x 10k odpory
Drôty (Výhodne rôzne farby, aby bolo jednoduchšie určiť, ktoré veci idú na zem a ktoré na rôzne kolíky atď.);
Niektoré rúrky zmršťujúce teplo;
2x NeoPixel Ring - 16 x 5050 RGB LED s integrovanými ovládačmi;
1x prepínač;
1x snímač FSR;
1x okuliare SteamPunk (Môžete si ich kúpiť v obchode s párty vecami, ich použitie je veľmi jednoduché, pretože neopixel krúžok na okuliare perfektne sedí. Vždy sa snažte použiť iné okuliare alebo si vytvorte vlastné.);
1x nejaký druh (elastickej) pásky, ktorá sa dá okolo hrudníka.
Nástroje: -Laptop
-Spájkovačka
-Software Arduino IDE
Na mojom pvc uvidíte dve tlačidlá a vypínač, na pripojenie k prepínaču používam iba ľavé tlačidlo, druhé tlačidlo na pravej strane obrázku nepoužívam. Umiestnil som tlačidlá na PVC skôr, ako som si uvedomil, že ich nepotrebujem a namiesto toho som potreboval použiť prepínač.
Tu nižšie uvidíte obrázky všetkého, čo som použil:
Krok 2: Neopixelové prstene
Biely drôt je spojený so zemou na zadnej strane neopixelového prstenca.
Oranžový vodič je pripojený k 5V.
A hnedý drôt je pripojený k vstupu údajov
Krok 3: Pripojenia
Takto vyzeral môj breadboard pri prototypovaní, môžete to použiť ako referenciu.
Jedným tlačidlom som tiež urobil rozloženie zapojenia, ako to má vyzerať.
Krok 4: Kód:
Pravdepodobne to nie je najefektívnejší kód, ale funguje to pre mňa. Vyzvite sa a skúste to zefektívniť; P
#zahrnúť
// Ktorý
pin na Arduine je pripojený k NeoPixels?
#definuj
PIN 6
// Ktorý
pin na Arduino je pripojený k tlačidlu
#definuj
BUTTON_PIN 9
// Ako
je k Arduinu pripojených veľa NeoPixelov?
#definuj
NUMPIXELY 16
// Kedy
nastavíme knižnicu NeoPixel, povieme jej, koľko pixelov a ktorý pin použiť na odosielanie signálov.
// Poznámka
že pre staršie pásy NeoPixel budete možno musieť zmeniť tretí parameter-pozrite sa na strandtest
//
príklad pre ďalšie informácie o možných hodnotách.
Adafruit_NeoPixel
pixelov = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int pauza
= 1; // zdržanie2
int
pauza2 = 80; // klesá, keď sa používa fsr
int
pauza3 = 150; // robenie, keď sa používa fsr
int
delayval = 4; // zdržanie1
int
fsrPin = 0; // rozbaľovacia ponuka FSR a 10K sú spojené s a0
int
fsrReading;
prázdny
nastaviť() {
pinMode (BUTTON_PIN, INPUT);
Serial.begin (9600);
pixely.begin (); // Tým sa inicializuje súbor
Knižnica NeoPixel.
pixely.show ();
}
bool
stlačené tlačidlo (vnútorný pin) {
vrátiť digitalRead (pin);
}
prázdny
loop () {// číta, či je pinový vstup pravdivý alebo nepravdivý
fsrReading = analogRead (fsrPin);
Serial.print ("Analógové čítanie =");
Serial.print (fsrReading);
ak (stlačené tlačidlo (BUTTON_PIN) == true) {
// svetelný efekt pri použití snímača fsr
if (fsrReading> 50) {
pixely.setPixelColor (0, 1, 0, 1);
pixelov.setPixelColor (15, 1, 0, 1);
pixely.setPixelColor (1, 1, 0, 1);
pixely.setPixelColor (14, 1, 0, 1);
pixely.show ();
oneskorenie (pause3);
}
if (fsrReading <52) {
pixely.setPixelColor (0, 0, 0, 0);
pixely.setPixelColor (15, 0, 0, 0);
pixely.setPixelColor (1, 0, 0, 0);
pixely.setPixelColor (14, 0, 0, 0);
pixely.show ();
oneskorenie (pause2);
}
if (fsrReading> 57) {
pixely.setPixelColor (2, 1, 0, 1);
pixely.setPixelColor (13, 1, 0, 1);
pixely.setPixelColor (3, 1, 0, 1);
pixely.setPixelColor (12, 1, 0, 1);
pixely.show ();
oneskorenie (pause3);
}
if (fsrReading <59) {
pixely.setPixelColor (2, 0, 0, 0);
pixely.setPixelColor (13, 0, 0, 0);
pixely.setPixelColor (3, 0, 0, 0);
pixely.setPixelColor (12, 0, 0, 0);
pixely.show ();
oneskorenie (pause2);
}
if (fsrReading> 65) {
pixely.setPixelColor (4, 1, 0, 1);
pixely.setPixelColor (11, 1, 0, 1);
pixely.setPixelColor (5, 1, 0, 1);
pixely.setPixelColor (10, 1, 0, 1);
pixely.show ();
oneskorenie (pause3);
}
if (fsrReading <67) {
pixely.setPixelColor (4, 0, 0, 0);
pixely.setPixelColor (11, 0, 0, 0);
pixely.setPixelColor (5, 0, 0, 0);
pixely.setPixelColor (10, 0, 0, 0);
pixely.show ();
oneskorenie (40);
}
if (fsrReading> 79) {
pixely.setPixelColor (6, 1, 0, 1);
pixely.setPixelColor (9, 1, 0, 1);
pixely.setPixelColor (7, 1, 0, 1);
pixely.setPixelColor (8, 1, 0, 1);
pixely.show ();
oneskorenie (pause3);
}
if (fsrReading <85) {
pixely.setPixelColor (6, 0, 0, 0);
pixely.setPixelColor (9, 0, 0, 0);
pixely.setPixelColor (7, 0, 0, 0);
pixely.setPixelColor (8, 0, 0, 0);
pixely.show ();
oneskorenie (20);
}
}
inak {
dýchať_modré (20, 100, 0, 1, 1); // normalne
účinok
}
}
// Pauza
= oneskorenie medzi prechodmi
// Kroky
= počet krokov
// R, G, B = Plné hodnoty RGB
// De void dýchanie je váš veľký het licht efekt tiež
fsrsensor niet gebruikt wordt. Deze void wordt in de void loop () weer aangeroepen.
neplatné dýchanie_modrej (int pauza, int kroky, bajt R, bajt G, bajt B) {
int
tmpR, tmpG, tmpB; // Teplotné hodnoty
// Fade up
pre (int s = 1; s <= kroky; s ++) {
tmpR = (R * s) /
kroky; // Najprv vynásobte, aby ste sa vyhli chybám pri skrátení
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pre (int i = 0;
ipixely.setPixelColor (0, tmpR, tmpG+1, tmpB);
pixely.setPixelColor (15, tmpR, tmpG+1, tmpB);
}
pixely.show ();
oneskorenie (4);
}
// Fade up
pre (int s = 1; s <= kroky; s ++) {
tmpR = (R * s) /
kroky; // Najprv vynásobte, aby ste sa vyhli chybám skrátenia
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pre (int i = 0;
ipixely.setPixelColor (1, tmpR, tmpG+1, tmpB);pixely.setPixelColor (14, tmpR, tmpG+1, tmpB);
}
pixely.show ();
oneskorenie (4);
}
// Fade up
pre (int s = 1; s <= kroky; s ++) {
tmpR = (R * s) /
kroky; // Najprv vynásobte, aby ste sa vyhli chybám pri skrátení
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pre (int i = 0;
ipixely.setPixelColor (2, tmpR, tmpG+2, tmpB);pixely.setPixelColor (13, tmpR, tmpG+2, tmpB);
}
pixely.show ();
oneskorenie (3,5);
}
// Fade up
pre (int s = 1; s <= kroky; s ++) {
tmpR = (R * s) /
kroky; // Najprv vynásobte, aby ste sa vyhli chybám pri skrátení
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pre (int i = 0;
ipixely.setPixelColor (3, tmpR, tmpG+3, tmpB+5);pixely.setPixelColor (12, tmpR, tmpG+3, tmpB+5);
}
pixely.show ();
oneskorenie (3);
}
pre (int i = 0;
ipixely.setPixelColor (0, 0, 0, 0);pixely.setPixelColor (15, 0, 0, 0);
}
// Fade up
pre (int s = 1; s <= kroky; s ++) {
tmpR = (R * s) /
kroky; // Najprv vynásobte, aby ste sa vyhli chybám skrátenia
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pre (int i = 0;
i
pixelov.setPixelColor (4, tmpR, tmpG+3, tmpB+15);pixelov.setPixelColor (11, tmpR, tmpG+3, tmpB+15);
}
pixely.show ();
oneskorenie (3);
}
// Fade up
pre (int s = 1; s <= kroky; s ++) {
tmpR = (R * s) /
kroky; // Najprv vynásobte, aby ste sa vyhli chybám pri skrátení
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pre (int i = 0;
ipixelov.setPixelColor (5, tmpR, tmpG+4, tmpB+20);pixelov.setPixelColor (10, tmpR, tmpG+4, tmpB+20);
}
pixely.show ();
oneskorenie (2);
}
pre (int i = 0;
ipixely.setPixelColor (1, 0, 0, 0);
pixely.setPixelColor (14, 0, 0, 0);
}
// Fade up
pre (int s = 1; s <= kroky; s ++) {
tmpR = (R * s) /
kroky; // Najprv vynásobte, aby ste sa vyhli chybám skrátenia
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pre (int i = 0;
ipixelov.setPixelColor (6, tmpR, tmpG+2, tmpB+40);
pixelov.setPixelColor (9, tmpR, tmpG+2, tmpB+40);
}
pixely.show ();
delay (delayval);
}
pre (int i = 0;
ipixely.setPixelColor (2, 0, 0, 0);pixely.setPixelColor (13, 0, 0, 0);
}
// Fade up
pre (int s = 1; s <= kroky; s ++) {
tmpR = (R * s) /
kroky; // Najprv vynásobte, aby ste sa vyhli chybám pri skrátení
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pre (int i = 0;
i
pixely.setPixelColor (7, tmpR, tmpG, tmpB+44);pixely.setPixelColor (8, tmpR, tmpG, tmpB+44);
}
pixely.show ();
delay (delayval);
}
// Zmizne
pre (int s = kroky; s> 0; s--) {
tmpR = (R * s) / kroky; // Najprv vynásobte, aby ste sa vyhli skráteniu
chyby
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pre (int i = 0; i
pixely.setPixelColor (7, tmpR, tmpG, tmpB);
pixely.setPixelColor (8, tmpR, tmpG, tmpB);
}
pixely.show ();
oneskorenie (1);
}
// Zmizne
pre (int s = kroky; s> 0; s--) {
tmpR = (R * s) / kroky; // Najprv vynásobte, aby ste sa vyhli skráteniu
chyby
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pre (int i = 0; i
pixely.setPixelColor (6, tmpR, tmpG, tmpB);
pixely.setPixelColor (9, tmpR, tmpG, tmpB);
}
pixely.show ();
oneskorenie (1);
}
// Zmizne
pre (int s = kroky; s> 0; s--) {
tmpR = (R * s) / kroky; // Najprv vynásobte, aby ste sa vyhli skráteniu
chyby
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pre (int i = 0; i
pixely.setPixelColor (5, tmpR, tmpG, tmpB);
pixely.setPixelColor (10, tmpR, tmpG, tmpB);
}
pixely.show ();
oneskorenie (2);
}
// Zmizne
pre (int s = kroky; s> 0; s--) {
tmpR = (R * s) / kroky; // Najprv vynásobte, aby ste sa vyhli skráteniu
chyby
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pre (int i = 0; i
pixely.setPixelColor (4, tmpR, tmpG, tmpB);
pixely.setPixelColor (11, tmpR, tmpG, tmpB);
}
pixely.show ();
oneskorenie (2);
}
// Zmizne
pre (int s = kroky; s> 0; s--) {
tmpR = (R * s) / kroky; // Najprv vynásobte, aby ste sa vyhli skráteniu
chyby
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pre (int i = 0; i
pixely.setPixelColor (3, tmpR, tmpG, tmpB);
pixely.setPixelColor (12, tmpR, tmpG, tmpB);
}
pixely.show ();
oneskorenie (3);
}
// Zmizne
pre (int s = kroky; s> 0; s--) {
tmpR = (R * s) / kroky; //
Najprv vynásobte, aby ste sa vyhli chybám pri skrátení
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pre (int i = 0; i
pixely.setPixelColor (2, tmpR, tmpG, tmpB);
pixely.setPixelColor (13, tmpR, tmpG, tmpB);
}
pixely.show ();
oneskorenie (3);
}
// Zmizne
pre (int s = kroky; s> 0; s--) {
tmpR = (R * s) / kroky; // Najprv vynásobte, aby ste sa vyhli skráteniu
chyby
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pre (int i = 0; i
pixely.setPixelColor (1, tmpR, tmpG, tmpB);
pixely.setPixelColor (14, tmpR, tmpG, tmpB);
}
pixely.show ();
oneskorenie (4);
}
// Zmizne
pre (int s = kroky; s> 0; s--) {
tmpR = (R * s) / kroky; // Najprv vynásobte, aby ste sa vyhli skráteniu
chyby
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pre (int i = 0; i
pixely.setPixelColor (0, tmpR, tmpG, tmpB);
pixely.setPixelColor (15, tmpR, tmpG, tmpB);
}
pixely.show ();
oneskorenie (4);
}
}
Krok 5: Spojenie všetkého dohromady:
Môžete nechať všetky svoje káble pripojené k vášmu nepájivému stolu alebo k PVC, to je na vás (rozhodol som sa dať arduino na vrch PVC, je to tak pekné a upravené).
Ďalším krokom je položiť teplom zmrštiteľné trubice okolo všetkých drôtov, aby nevznikol žiadny neporiadok.
Ak ste sa rozhodli použiť PVC, potom by ste už mali všetko spájkovať.
Potom na vonkajšiu stranu okuliarov umiestnite neopixelové krúžky (uistite sa, že sú diódy zarovnané v spodnej časti) a zaistite ich na mieste páskou alebo lepidlom (použil som pásku).
Môžete sa rozhodnúť prilepiť snímač fsr k elastickému pásu pomocou pásky, alebo ho nechajte sami.
Užite si okuliare:)
Odporúča:
Inteligentné okuliare (pod 10 dolárov !!!): 8 krokov (s obrázkami)
Inteligentné okuliare (pod 10 dolárov !!!): Dobrý deň! Všetci poznáme inteligentné okuliare, ako sú tie s názvom E.D.I.T.H. vyrobila naša milovaná postava Tony Stark, ktorá bola neskôr odovzdaná Petrovi Parkerovi. Dnes budem stavať jedno také inteligentné sklo, ktoré bude pod 10 dolárov! Nie sú celkom
Okuliare na nočné videnie pre Google Cardboard: 10 krokov (s obrázkami)
Okuliare Night Vision pre Google Cardboard: Vylúčenie zodpovednosti: Použitie tohto zariadenia je určené len na zábavu, vzdelávanie a vedecké účely; nie na špehovanie a/alebo sledovanie. „Špionážny gadget“funkcie boli do aplikácie pridané len pre zábavu a neslúžia žiadnemu praktickému účelu pre
Radarové okuliare: 14 krokov (s obrázkami)
Radarové okuliare: Minulé leto sme na dovolenke v Maine stretli ďalší pár: Mike a Linda. Linda bola slepá a bola slepá od narodenia (myslím) ich prvého dieťaťa. Boli naozaj milí a veľa sme sa spolu nasmiali. Potom, čo sme prišli domov, som nemohol
Tréningové okuliare na striedavé oklúzie vysokého napätia [ATtiny13]: 5 krokov (s obrázkami)
Tréningové okuliare na striedavé oklúzie vysokého napätia [ATtiny13]: V mojom prvom návode som popísal, ako zostrojiť zariadenie, ktoré by malo byť celkom nápomocné pre niekoho, kto chce liečiť tupozrakosť (lenivé oko). Konštrukcia bola veľmi zjednodušená a mala určité nevýhody (vyžadovalo použitie dvoch batérií a kvapalného
Okuliare z tekutých kryštálov pre amblyopiu (tréningové okuliare so striedavou oklúziou) [ATtiny13]: 10 krokov (s obrázkami)
Okuliare z tekutých kryštálov pre amblyopiu (tréningové okuliare s alternatívnou oklúziou) [ATtiny13]: amblyopia (lenivé oko), porucha zraku, ktorá postihuje približne 3% populácie, zvyčajne sa lieči jednoduchými páskami na oči alebo kvapkami atropínu. Bohužiaľ, tieto metódy liečby zatvárajú silnejšie oko na dlhé, neprerušované časové obdobia, nie