Obsah:
- Krok 1: Potřebné materiály a součásti:
- Krok 2: Neopixelové prsteny
- Krok 3: Připojení
- Krok 4: Kód:
- Krok 5: Dát vše dohromady:
Video: Relaxační brýle - ITTT: 5 kroků (s obrázky)
2024 Autor: John Day | [email protected]. Naposledy změněno: 2024-01-30 08:23
Projekt HKU - ITTT (If This Then That) - Julia Berkouwer, 1B
Cítili jste se někdy ve stresu a prostě nevíte, jak se uklidnit, pak byste měli vyzkoušet tyto relaxační brýle! Když si je obléknete a zavřete oči, začne hrát dechový vzor. Při dodržování tohoto dechového schématu se váš dýchací rytmus 6krát za minutu zhluboka nadechne a vydechne. Tím se uvolní každodenní stres.
Intenzitu dýchání můžete také sledovat přepnutím přepínače pomocí senzoru fsr.
S tímto toturiálem vás krok za krokem provedu budováním vlastních relaxačních brýlí.
Krok 1: Potřebné materiály a součásti:
Materiály:
1x arduino uno;
1xbreadboard nebo PCV;
3x 10k odpory
Dráty (nejlépe různé barvy, aby bylo snazší zjistit, které věci směřují k zemi a které do různých kolíků atd.);
Některé trubice smršťující teplo;
2x NeoPixel Ring - 16 x 5050 RGB LED s integrovanými ovladači;
1x přepínač;
1x snímač FSR;
1x brýle SteamPunk (Můžete si je koupit v obchodě s party, snadno se používají, protože neopixel prsten na brýle perfektně sedí. Vždy zkuste použít jiné brýle nebo si vytvořte vlastní.);
1x nějaký druh (elastického) pásku, který si dáte kolem hrudníku.
Nástroje: -Laptop
-Páječka
-Arduino IDE software
Na mém pvc uvidíte dvě tlačítka a přepínač, já k připojení k přepínači používám pouze levé tlačítko, druhé tlačítko na pravé straně obrázku nepoužívám. Dal jsem tlačítka na pvc, než jsem si uvědomil, že je nepotřebuji a místo toho jsem potřeboval použít přepínač.
Níže uvidíte obrázky všeho, co jsem použil:
Krok 2: Neopixelové prsteny
Bílý vodič je připojen k zemi na zadní straně neopixelového prstence.
Oranžový vodič je připojen k 5V.
A hnědý vodič je připojen ke vstupu dat
Krok 3: Připojení
Takto vypadal můj prkénko při prototypování, můžete to použít jako referenci.
Jediným tlačítkem jsem také provedl rozvržení kabeláže, jak to má vypadat.
Krok 4: Kód:
Pravděpodobně to není nejúčinnější kód, ale funguje to pro mě. Vyzvěte se a zkuste to zefektivnit; P
#zahrnout
// Který
je pin na Arduinu připojen k NeoPixels?
#definovat
PIN 6
// Který
pin na Arduinu je připojen k tlačítku
#definovat
BUTTON_PIN 9
// Jak
je k Arduinu připojeno mnoho NeoPixelů?
#definovat
NUMPIXELY 16
// Když
nastavíme knihovnu NeoPixel, řekneme jí, kolik pixelů a jaký pin použít k odesílání signálů.
// Poznámka
že u starších proužků NeoPixel budete možná muset změnit třetí parametr-viz strandtest
//
příklad pro více informací o možných hodnotách.
Adafruit_NeoPixel
pixely = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int pauza
= 1; // zpoždění2
int
pause2 = 80; // jde dolů, když se používá fsr
int
pause3 = 150; // dělá to, když se používá fsr
int
delayval = 4; // zpoždění1
int
fsrPin = 0; // FSR a 10K pulldown jsou připojeny k a0
int
fsrReading;
prázdné
založit() {
pinMode (BUTTON_PIN, INPUT);
Serial.begin (9600);
pixely.begin (); // Tím se inicializuje
Knihovna NeoPixel.
pixely.show ();
}
bool
stisknutí tlačítka (int pin) {
vrátit digitalRead (pin);
}
prázdné
loop () {// čte, zda je pinový vstup true nebo false
fsrReading = analogRead (fsrPin);
Serial.print ("Analogové čtení =");
Serial.print (fsrReading);
if (buttonpressed (BUTTON_PIN) == true) {
// světelný efekt při použití snímače fsr
if (fsrReading> 50) {
pixely.setPixelColor (0, 1, 0, 1);
pixely.setPixelColor (15, 1, 0, 1);
pixely.setPixelColor (1, 1, 0, 1);
pixely.setPixelColor (14, 1, 0, 1);
pixely.show ();
zpoždění (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 ();
zpoždění (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 ();
zpoždění (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 ();
zpoždění (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 ();
zpoždění (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 ();
zpoždění (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 ();
zpoždění (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 ();
zpoždění (20);
}
}
jiný{
dýchat_modrou (20, 100, 0, 1, 1); // normální
účinek
}
}
// Pauza
= zpoždění mezi přechody
// Kroky
= počet kroků
// R, G, B = Plné hodnoty RGB
// De void dýchání je váš velký het licht účinek také
fsrsensor niet gebruikt wordt. Deze void wordt in de void loop () weer aangeroepen.
neplatné Breathe_blue (int pauza, int kroky, byte R, byte G, byte B) {
int
tmpR, tmpG, tmpB; // Teplotní hodnoty
// Fade up
pro (int s = 1; s <= kroky; s ++) {
tmpR = (R * s) /
kroky; // Nejprve vynásobte, abyste se vyhnuli chybám zkrácení
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pro (int i = 0;
jápixely.setPixelColor (0, tmpR, tmpG+1, tmpB);
pixely.setPixelColor (15, tmpR, tmpG+1, tmpB);
}
pixely.show ();
zpoždění (4);
}
// Fade up
pro (int s = 1; s <= kroky; s ++) {
tmpR = (R * s) /
kroky; // Nejprve vynásobte, abyste se vyhnuli chybám zkrácení
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pro (int i = 0;
jápixely.setPixelColor (1, tmpR, tmpG+1, tmpB);pixely.setPixelColor (14, tmpR, tmpG+1, tmpB);
}
pixely.show ();
zpoždění (4);
}
// Fade up
pro (int s = 1; s <= kroky; s ++) {
tmpR = (R * s) /
kroky; // Nejprve vynásobte, abyste se vyhnuli chybám zkrácení
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pro (int i = 0;
jápixely.setPixelColor (2, tmpR, tmpG+2, tmpB);pixely.setPixelColor (13, tmpR, tmpG+2, tmpB);
}
pixely.show ();
zpoždění (3,5);
}
// Fade up
pro (int s = 1; s <= kroky; s ++) {
tmpR = (R * s) /
kroky; // Nejprve vynásobte, abyste se vyhnuli chybám zkrácení
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pro (int i = 0;
jápixely.setPixelColor (3, tmpR, tmpG+3, tmpB+5);pixely.setPixelColor (12, tmpR, tmpG+3, tmpB+5);
}
pixely.show ();
zpoždění (3);
}
pro (int i = 0;
jápixely.setPixelColor (0, 0, 0, 0);pixely.setPixelColor (15, 0, 0, 0);
}
// Fade up
pro (int s = 1; s <= kroky; s ++) {
tmpR = (R * s) /
kroky; // Nejprve vynásobte, abyste se vyhnuli chybám zkrácení
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pro (int i = 0;
já
pixely.setPixelColor (4, tmpR, tmpG+3, tmpB+15);pixely.setPixelColor (11, tmpR, tmpG+3, tmpB+15);
}
pixely.show ();
zpoždění (3);
}
// Fade up
pro (int s = 1; s <= kroky; s ++) {
tmpR = (R * s) /
kroky; // Nejprve vynásobte, abyste se vyhnuli chybám zkrácení
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pro (int i = 0;
jápixely.setPixelColor (5, tmpR, tmpG+4, tmpB+20);pixely.setPixelColor (10, tmpR, tmpG+4, tmpB+20);
}
pixely.show ();
zpoždění (2);
}
pro (int i = 0;
jápixely.setPixelColor (1, 0, 0, 0);
pixely.setPixelColor (14, 0, 0, 0);
}
// Fade up
pro (int s = 1; s <= kroky; s ++) {
tmpR = (R * s) /
kroky; // Nejprve vynásobte, abyste se vyhnuli chybám zkrácení
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pro (int i = 0;
jápixely.setPixelColor (6, tmpR, tmpG+2, tmpB+40);
pixely.setPixelColor (9, tmpR, tmpG+2, tmpB+40);
}
pixely.show ();
delay (delayval);
}
pro (int i = 0;
jápixely.setPixelColor (2, 0, 0, 0);pixely.setPixelColor (13, 0, 0, 0);
}
// Fade up
pro (int s = 1; s <= kroky; s ++) {
tmpR = (R * s) /
kroky; // Nejprve vynásobte, abyste se vyhnuli chybám zkrácení
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pro (int i = 0;
já
pixely.setPixelColor (7, tmpR, tmpG, tmpB+44);pixely.setPixelColor (8, tmpR, tmpG, tmpB+44);
}
pixely.show ();
delay (delayval);
}
// Zmizí
pro (int s = kroky; s> 0; s--) {
tmpR = (R * s) / kroky; // Nejprve vynásobte, abyste se vyhnuli zkrácení
chyby
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pro (int i = 0; i
pixely.setPixelColor (7, tmpR, tmpG, tmpB);
pixely.setPixelColor (8, tmpR, tmpG, tmpB);
}
pixely.show ();
zpoždění (1);
}
// Zmizí
pro (int s = kroky; s> 0; s--) {
tmpR = (R * s) / kroky; // Nejprve vynásobte, abyste se vyhnuli zkrácení
chyby
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pro (int i = 0; i
pixely.setPixelColor (6, tmpR, tmpG, tmpB);
pixely.setPixelColor (9, tmpR, tmpG, tmpB);
}
pixely.show ();
zpoždění (1);
}
// Zmizí
pro (int s = kroky; s> 0; s--) {
tmpR = (R * s) / kroky; // Nejprve vynásobte, abyste se vyhnuli zkrácení
chyby
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pro (int i = 0; i
pixely.setPixelColor (5, tmpR, tmpG, tmpB);
pixely.setPixelColor (10, tmpR, tmpG, tmpB);
}
pixely.show ();
zpoždění (2);
}
// Zmizí
pro (int s = kroky; s> 0; s--) {
tmpR = (R * s) / kroky; // Nejprve vynásobte, abyste se vyhnuli zkrácení
chyby
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pro (int i = 0; i
pixely.setPixelColor (4, tmpR, tmpG, tmpB);
pixely.setPixelColor (11, tmpR, tmpG, tmpB);
}
pixely.show ();
zpoždění (2);
}
// Zmizí
pro (int s = kroky; s> 0; s--) {
tmpR = (R * s) / kroky; // Nejprve vynásobte, abyste se vyhnuli zkrácení
chyby
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pro (int i = 0; i
pixely.setPixelColor (3, tmpR, tmpG, tmpB);
pixely.setPixelColor (12, tmpR, tmpG, tmpB);
}
pixely.show ();
zpoždění (3);
}
// Zmizí
pro (int s = kroky; s> 0; s--) {
tmpR = (R * s) / kroky; //
Nejprve vynásobte, abyste se vyhnuli chybám zkrácení
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pro (int i = 0; i
pixely.setPixelColor (2, tmpR, tmpG, tmpB);
pixely.setPixelColor (13, tmpR, tmpG, tmpB);
}
pixely.show ();
zpoždění (3);
}
// Zmizí
pro (int s = kroky; s> 0; s--) {
tmpR = (R * s) / kroky; // Nejprve vynásobte, abyste se vyhnuli zkrácení
chyby
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pro (int i = 0; i
pixely.setPixelColor (1, tmpR, tmpG, tmpB);
pixely.setPixelColor (14, tmpR, tmpG, tmpB);
}
pixely.show ();
zpoždění (4);
}
// Zmizí
pro (int s = kroky; s> 0; s--) {
tmpR = (R * s) / kroky; // Nejprve vynásobte, abyste se vyhnuli zkrácení
chyby
tmpG = (G * s) / kroky;
tmpB = (B * s) / kroky;
pro (int i = 0; i
pixely.setPixelColor (0, tmpR, tmpG, tmpB);
pixely.setPixelColor (15, tmpR, tmpG, tmpB);
}
pixely.show ();
zpoždění (4);
}
}
Krok 5: Dát vše dohromady:
Můžete nechat všechny své vodiče připojené k prkénku nebo PVC, to je na vás (rozhodl jsem se dát PVC na arduino, je to tak pěkné a čisté).
Dalším krokem je umístit teplem smršťovací bužírky kolem všech vodičů, aby nevznikl žádný nepořádek.
Pokud jste se rozhodli použít PVC, měli byste už nyní pájet vše dohromady.
Poté na vnější stranu brýlí nasadíte neopixelové kroužky (ujistěte se, že jsou diody zarovnané v dolní části) a zajistěte je na místě páskou nebo lepidlem (použil jsem pásku).
Můžete se rozhodnout přilepit snímač fsr k elastickému pásku páskou, nebo jej nechat samostatně.
Užijte si brýle:)
Doporučuje:
Chytré brýle (pod 10 $ !!!): 8 kroků (s obrázky)
Chytré brýle (pod 10 $ !!!): Dobrý den! Všichni jsme obeznámeni s inteligentními brýlemi, jako jsou ty s názvem E.D.I.T.H. vyrobila naše milovaná postava Tony Stark, která byla později předána Peteru Parkerovi. Dnes budu stavět jedno takové chytré sklo, které bude pod 10 dolarů! Nejsou úplně
Brýle pro noční vidění pro Google Cardboard: 10 kroků (s obrázky)
Noční brýle pro Google Cardboard: Prohlášení: Použití tohoto zařízení je určeno pouze pro zábavu, vzdělávání a vědecké účely; ne pro špionáž a/nebo sledování. „Špionážní gadget“funkce byly do aplikace přidány jen pro zábavu a neměly by žádný praktický účel pro
Radarové brýle: 14 kroků (s obrázky)
Radarové brýle: Loni v létě jsme na dovolené v Maine potkali další pár: Mike a Linda. Linda byla slepá a byla slepá od narození (myslím) jejich prvního dítěte. Byli opravdu milí a hodně jsme se spolu zasmáli. Poté, co jsme přišli domů, jsem nemohl
Laserové ukazovátko montované na brýle pro osoby s pohybovým postižením: 9 kroků (s obrázky)
Laserové ukazovátko namontované na brýlích pro osoby s pohybovým postižením: Lidé s těžkým pohybovým postižením, jako jsou lidé způsobení mozkovou obrnou, mají často složité komunikační potřeby. Může se od nich vyžadovat, aby používali tabule s abecedou nebo běžně používaná slova vytištěná na pomoc při komunikaci. Nicméně, mnoho
Brýle z tekutých krystalů pro amblyopii (tréninkové brýle se střídavou okluzí) [ATtiny13]: 10 kroků (s obrázky)
Brýle z tekutých krystalů pro amblyopii (tréninkové brýle pro střídavou okluzi) [ATtiny13]: Amblyopia (líné oko), porucha zraku, která postihuje přibližně 3% populace, obvykle se léčí jednoduchými pastami na oči nebo atropinovými kapkami. Tyto metody léčby bohužel na dlouhou dobu nepřerušují silnější oko, ne