Съдържание:
- Стъпка 1: Необходими материали и части:
- Стъпка 2: Неопикселови пръстени
- Стъпка 3: Връзки
- Стъпка 4: Кодът:
- Стъпка 5: Съберете всичко заедно:
Видео: Очила за релаксация - ITTT: 5 стъпки (със снимки)
2024 Автор: John Day | [email protected]. Последно модифициран: 2024-01-30 07:54
HKU Project - ITTT (If This Then That) - Julia Berkouwer, 1B
Чувствали ли сте се стресирани и просто не знаете как да се успокоите, тогава трябва да опитате тези очила за релаксация! Слагате ги и затваряте очи, след това ще играе модел на дишане. Като следвате този модел на дишане, вашият дихателен ритъм ще се сведе до вдишване и издишване 6 пъти в минута. Правейки това, това освобождава ежедневния стрес.
Можете също да проследите интензивността на дишането си, като натиснете превключвател, като използвате fsr-сензор.
С този toturial ще ви насоча стъпка по стъпка към изграждането на ваши собствени очила за релаксация.
Стъпка 1: Необходими материали и части:
Материали:
1x arduino uno;
1x платка или PCV;
3x 10k резистори
Проводи (за предпочитане различни цветове, така че е по -лесно да се каже кои неща вървят към земята и кои към различни щифтове и т.н.);
Някои термосвиващи се тръби;
2x NeoPixel пръстен - 16 x 5050 RGB LED с вградени драйвери;
1x превключвател;
1x FSR сензор;
1x очила SteamPunk (Можете да ги купите в парти магазин, те са лесни за използване, тъй като неопикселовият пръстен пасва идеално на очилата. Винаги се опитвате да използвате други очила или да създадете свои собствени.);
1x един вид (еластична) лента, която да поставите около гърдите си.
Инструменти: -Лаптоп
-поялник
-Arduino IDE софтуер
Ще видите два бутона и превключвател на моя pvc, използвам само левия бутон, за да го свържа с превключвателя, не използвам втория бутон отдясно на снимката. Сложих бутоните на pvc, преди да осъзная, че нямам нужда от тях и вместо това трябваше да използвам превключвател.
По -долу тук ще видите снимки на всичко, което използвах:
Стъпка 2: Неопикселови пръстени
Белият проводник е свързан към земята на гърба на неопикселовия пръстен.
Оранжевият проводник е свързан към 5V.
Кафявият проводник е свързан към входа за данни
Стъпка 3: Връзки
Ето как изглеждаше моята дъска по време на прототипирането, можете да използвате това като справка.
Направих и оформление на окабеляването на това, което трябва да изглежда само с един бутон.
Стъпка 4: Кодът:
Вероятно не е най -ефективният код, но при мен работи. Предизвикайте себе си и се опитайте да го направите по -ефективен; P
#включва
// Който
щифт на Arduino е свързан с NeoPixels?
#дефинирайте
ПИН 6
// Който
щифт на Arduino е свързан с бутона
#дефинирайте
BUTTON_PIN 9
// Как
много NeoPixels са свързани към Arduino?
#дефинирайте
НУМПИКСЕЛИ 16
// Кога
ние настройваме библиотеката NeoPixel, казваме й колко пиксела и кой щифт да използваме за изпращане на сигнали.
// Забележка
че за по-старите ленти NeoPixel може да се наложи да промените третия параметър-вижте strandtest
//
пример за повече информация относно възможните стойности.
Adafruit_NeoPixel
пиксели = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int пауза
= 1; // забавяне2
int
пауза2 = 80; // слизане, когато се използва fsr
int
пауза3 = 150; // свършвам, когато се използва fsr
int
delayval = 4; // забавяне1
int
fsrPin = 0; // падащото меню FSR и 10K са свързани към a0
int
fsrReading;
невалиден
настройвам() {
pinMode (BUTTON_PIN, INPUT);
Serial.begin (9600);
pixels.begin (); // Това инициализира
Библиотека на NeoPixel.
pixels.show ();
}
bool
натиснат бутон (int pin) {
връщане digitalRead (пин);
}
невалиден
loop () {// чете дали въвеждането на пин е вярно или невярно
fsrReading = analogRead (fsrPin);
Serial.print ("Аналогово четене =");
Serial.print (fsrReading);
if (бутон натиснат (BUTTON_PIN) == вярно) {
// светлинен ефект при използване на 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);
pixels.show ();
забавяне (пауза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 ();
забавяне (пауза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 ();
забавяне (пауза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 ();
забавяне (пауза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);
pixels.show ();
забавяне (пауза3);
}
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);
pixels.show ();
забавяне (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 ();
забавяне (пауза3);
}
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);
pixels.show ();
забавяне (20);
}
}
иначе {
дишане_синьо (20, 100, 0, 1, 1); // нормално
ефект
}
}
// Пауза
= забавяне между преходите
// Стъпки
= брой стъпки
// R, G, B = Пълни RGB стойности
// De voidreathe е voor het licht ефект als de
fsrsensor niet gebruikt wordt. Deze void wordt в de void loop () weer aangeroepen.
voidreathe_blue (int пауза, int стъпки, байт R, байт G, байт В) {
int
tmpR, tmpG, tmpB; // Темп стойности
// Избледняване
for (int s = 1; s <= стъпки; s ++) {
tmpR = (R * s) /
стъпки; // Умножете първо, за да избегнете отрязване на грешки
tmpG = (G * s) / стъпки;
tmpB = (B * s) / стъпки;
за (int i = 0;
ipixels.setPixelColor (0, tmpR, tmpG+1, tmpB);
pixels.setPixelColor (15, tmpR, tmpG+1, tmpB);
}
pixels.show ();
забавяне (4);
}
// Избледняване
for (int s = 1; s <= стъпки; s ++) {
tmpR = (R * s) /
стъпки; // Умножете първо, за да избегнете отрязване на грешки
tmpG = (G * s) / стъпки;
tmpB = (B * s) / стъпки;
за (int i = 0;
ipixels.setPixelColor (1, tmpR, tmpG+1, tmpB);pixels.setPixelColor (14, tmpR, tmpG+1, tmpB);
}
pixels.show ();
забавяне (4);
}
// Избледняване
for (int s = 1; s <= стъпки; s ++) {
tmpR = (R * s) /
стъпки; // Умножете първо, за да избегнете отрязване на грешки
tmpG = (G * s) / стъпки;
tmpB = (B * s) / стъпки;
за (int i = 0;
ipixels.setPixelColor (2, tmpR, tmpG+2, tmpB);pixels.setPixelColor (13, tmpR, tmpG+2, tmpB);
}
pixels.show ();
забавяне (3.5);
}
// Избледняване
for (int s = 1; s <= стъпки; s ++) {
tmpR = (R * s) /
стъпки; // Умножете първо, за да избегнете отрязване на грешки
tmpG = (G * s) / стъпки;
tmpB = (B * s) / стъпки;
за (int i = 0;
ipixels.setPixelColor (3, tmpR, tmpG+3, tmpB+5);pixels.setPixelColor (12, tmpR, tmpG+3, tmpB+5);
}
pixels.show ();
забавяне (3);
}
за (int i = 0;
ipixels.setPixelColor (0, 0, 0, 0);pixels.setPixelColor (15, 0, 0, 0);
}
// Избледняване
for (int s = 1; s <= стъпки; s ++) {
tmpR = (R * s) /
стъпки; // Умножете първо, за да избегнете отрязване на грешки
tmpG = (G * s) / стъпки;
tmpB = (B * s) / стъпки;
за (int i = 0;
i
pixels.setPixelColor (4, tmpR, tmpG+3, tmpB+15);pixels.setPixelColor (11, tmpR, tmpG+3, tmpB+15);
}
pixels.show ();
забавяне (3);
}
// Избледняване
for (int s = 1; s <= стъпки; s ++) {
tmpR = (R * s) /
стъпки; // Умножете първо, за да избегнете отрязване на грешки
tmpG = (G * s) / стъпки;
tmpB = (B * s) / стъпки;
за (int i = 0;
ipixels.setPixelColor (5, tmpR, tmpG+4, tmpB+20);pixels.setPixelColor (10, tmpR, tmpG+4, tmpB+20);
}
pixels.show ();
забавяне (2);
}
за (int i = 0;
ipixels.setPixelColor (1, 0, 0, 0);
pixels.setPixelColor (14, 0, 0, 0);
}
// Избледняване
for (int s = 1; s <= стъпки; s ++) {
tmpR = (R * s) /
стъпки; // Умножете първо, за да избегнете отрязване на грешки
tmpG = (G * s) / стъпки;
tmpB = (B * s) / стъпки;
за (int i = 0;
ipixels.setPixelColor (6, tmpR, tmpG+2, tmpB+40);
pixels.setPixelColor (9, tmpR, tmpG+2, tmpB+40);
}
pixels.show ();
забавяне (delayval);
}
за (int i = 0;
ipixels.setPixelColor (2, 0, 0, 0);pixels.setPixelColor (13, 0, 0, 0);
}
// Избледняване
for (int s = 1; s <= стъпки; s ++) {
tmpR = (R * s) /
стъпки; // Умножете първо, за да избегнете отрязване на грешки
tmpG = (G * s) / стъпки;
tmpB = (B * s) / стъпки;
за (int i = 0;
i
pixels.setPixelColor (7, tmpR, tmpG, tmpB+44);pixels.setPixelColor (8, tmpR, tmpG, tmpB+44);
}
pixels.show ();
забавяне (delayval);
}
// Изчезване
for (int s = стъпки; s> 0; s--) {
tmpR = (R * s) / стъпки; // Умножете първо, за да избегнете отрязването
грешки
tmpG = (G * s) / стъпки;
tmpB = (B * s) / стъпки;
за (int i = 0; i
pixels.setPixelColor (7, tmpR, tmpG, tmpB);
pixels.setPixelColor (8, tmpR, tmpG, tmpB);
}
pixels.show ();
забавяне (1);
}
// Изчезване
for (int s = стъпки; s> 0; s--) {
tmpR = (R * s) / стъпки; // Умножете първо, за да избегнете отрязването
грешки
tmpG = (G * s) / стъпки;
tmpB = (B * s) / стъпки;
за (int i = 0; i
pixels.setPixelColor (6, tmpR, tmpG, tmpB);
pixels.setPixelColor (9, tmpR, tmpG, tmpB);
}
pixels.show ();
забавяне (1);
}
// Изчезване
for (int s = стъпки; s> 0; s--) {
tmpR = (R * s) / стъпки; // Умножете първо, за да избегнете отрязването
грешки
tmpG = (G * s) / стъпки;
tmpB = (B * s) / стъпки;
за (int i = 0; i
pixels.setPixelColor (5, tmpR, tmpG, tmpB);
pixels.setPixelColor (10, tmpR, tmpG, tmpB);
}
pixels.show ();
забавяне (2);
}
// Изчезване
for (int s = стъпки; s> 0; s--) {
tmpR = (R * s) / стъпки; // Умножете първо, за да избегнете отрязването
грешки
tmpG = (G * s) / стъпки;
tmpB = (B * s) / стъпки;
за (int i = 0; i
pixels.setPixelColor (4, tmpR, tmpG, tmpB);
pixels.setPixelColor (11, tmpR, tmpG, tmpB);
}
pixels.show ();
забавяне (2);
}
// Изчезване
for (int s = стъпки; s> 0; s--) {
tmpR = (R * s) / стъпки; // Умножете първо, за да избегнете отрязването
грешки
tmpG = (G * s) / стъпки;
tmpB = (B * s) / стъпки;
за (int i = 0; i
pixels.setPixelColor (3, tmpR, tmpG, tmpB);
pixels.setPixelColor (12, tmpR, tmpG, tmpB);
}
pixels.show ();
забавяне (3);
}
// Изчезване
for (int s = стъпки; s> 0; s--) {
tmpR = (R * s) / стъпки; //
Умножете първо, за да избегнете отрязване на грешки
tmpG = (G * s) / стъпки;
tmpB = (B * s) / стъпки;
за (int i = 0; i
pixels.setPixelColor (2, tmpR, tmpG, tmpB);
pixels.setPixelColor (13, tmpR, tmpG, tmpB);
}
pixels.show ();
забавяне (3);
}
// Изчезване
for (int s = стъпки; s> 0; s--) {
tmpR = (R * s) / стъпки; // Умножете първо, за да избегнете отрязването
грешки
tmpG = (G * s) / стъпки;
tmpB = (B * s) / стъпки;
за (int i = 0; i
pixels.setPixelColor (1, tmpR, tmpG, tmpB);
pixels.setPixelColor (14, tmpR, tmpG, tmpB);
}
pixels.show ();
забавяне (4);
}
// Изчезване
for (int s = стъпки; s> 0; s--) {
tmpR = (R * s) / стъпки; // Умножете първо, за да избегнете отрязването
грешки
tmpG = (G * s) / стъпки;
tmpB = (B * s) / стъпки;
за (int i = 0; i
pixels.setPixelColor (0, tmpR, tmpG, tmpB);
pixels.setPixelColor (15, tmpR, tmpG, tmpB);
}
pixels.show ();
забавяне (4);
}
}
Стъпка 5: Съберете всичко заедно:
Можете просто да оставите всичките си проводници свързани към вашата дъска или PVC, това зависи от вас (избрах да поставя PVC върху arduino, така е хубаво и спретнато).
Следващата стъпка е да поставите термосвиваеми тръби около всички проводници, така че да е по -малко бъркотия.
Ако сте избрали да използвате PVC, тогава вече трябваше да сте запоели всичко заедно.
След това поставете неопикселовите пръстени от външната страна на очилата (уверете се, че светодиодите са подравнени в долната част) и ги закрепете на място с някаква лента или лепило (използвах лента).
Можете да изберете да залепите fsr-сензора към еластичната лента с някаква лента или просто да го оставите сами.
Насладете се на очилата си:)
Препоръчано:
Умни очила (под $ 10 !!!): 8 стъпки (със снимки)
Умни очила (под $ 10 !!!): Здравейте! Всички сме запознати с интелигентните очила като тези на име E.D.I.T.H. направено от нашия любим герой Тони Старк, което по -късно беше предадено на Питър Паркър. Днес ще построя едно такова умно стъкло, което също под 10 долара! Те не са съвсем
Очила за нощно виждане за Google Cardboard: 10 стъпки (със снимки)
Очила за нощно виждане за Google Cardboard: Отказ от отговорност: Използването на това устройство е предназначено само за забавление, образование и научна употреба; не за шпионаж и/или наблюдение. „Шпионската притурка“функции бяха добавени към приложението само за забавление и няма да служат на практическа цел за
Направи си сам - RGB очила: 3 стъпки (със снимки)
Направи си сам | RGB очила: Хей! Направих RGB очила, използвайки светодиоди WS2812B и Arduino Nano. Очилата имат много анимации, които могат да се управляват с помощта на мобилно приложение. Приложението може да комуникира с arduino чрез Bluetooth модул
Контролиран превключвател на светлината с мигане на очите с помощта на очила за гума на Shota Aizawa (My Hero Academia): 8 стъпки (със снимки)
Контролирано превключване на светлината с мигащи очи с помощта на очила за изтриване на Shota Aizawa (My Hero Academia): Ако четете моята манга от героите на академията или гледате анимето на моята академия от герои, трябва да знаете персонаж на име shota aizawa. Шота Айзава, известна още като гумата на гумата, е професионален герой и учител по домашните стаи на клас 1-А на САЩ. Странността на Шота му дава аб
Очила с течни кристали за амблиопия (Очила за редуване на оклузия) [ATtiny13]: 10 стъпки (със снимки)
Очила с течни кристали за амблиопия (Очила за редуване на оклузия) [ATtiny13]: Амблиопия (мързеливо око), нарушение на зрението, което засяга приблизително 3% от населението, обикновено се лекува с обикновени очила или капки атропин. За съжаление, тези методи на лечение блокират по -силно око за дълги, непрекъснати периоди от време, не