Բովանդակություն:
- Քայլ 1: Անհրաժեշտ նյութեր և մասեր
- Քայլ 2: Neopixel մատանիներ
- Քայլ 3: Կապեր
- Քայլ 4: Կոդ
- Քայլ 5: Ամեն ինչ միասին հավաքելը
Video: Հանգստացնող ակնոցներ - ITTT. 5 քայլ (նկարներով)
2024 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2024-01-30 09:51
HKU Project - ITTT (If This Then That) - Julուլիա Բերկուվեր, 1 Բ
Երբևէ զգացե՞լ եք, որ սթրեսի մեջ եք, և պարզապես չգիտեք ինչպես հանգստացնել ինքներդ ձեզ, ապա պետք է փորձեք հանգստանալու այս ակնոցները: Դուք դրանք հագնում և փակում եք ձեր աչքերը, ապա շնչառական կաղապարը կխաղա: Այս շնչառական օրինակին հետևելով ՝ ձեր շնչառական ռիթմը կիջնի շնչառության և ելքի րոպեում 6 անգամ: Դա անելով դա ազատում է ամենօրյա սթրեսը:
Կարող եք նաև հետևել ձեր շնչառության ինտենսիվությանը ՝ անջատիչը շրջելով ՝ օգտագործելով fsr սենսոր:
Այս տոտուրիալով ես ձեզ կառաջնորդեմ քայլ առ քայլ կառուցել ձեր սեփական հանգստացնող ակնոցները:
Քայլ 1: Անհրաժեշտ նյութեր և մասեր
Նյութեր:
1x arduino uno;
1xbreadboard կամ PCV;
3x 10k դիմադրիչներ
Լարեր (feանկալի է տարբեր գույներ, այնպես որ ավելի հեշտ է ասել, թե որ իրերն են գետնին գնում, և որոնք են տարբեր կապում և այլն);
Ջերմության նվազեցման որոշ խողովակներ;
2x NeoPixel Ring - 16 x 5050 RGB LED ինտեգրված վարորդներով;
1x անջատիչ;
1x FSR սենսոր;
1x SteamPunk ակնոց (դրանք կարող եք գնել երեկույթների խանութում, դրանք հեշտ է օգտագործել, քանի որ նեոպիքսելային մատանին հիանալի տեղավորվում է ակնոցների վրա: Դուք միշտ փորձում եք օգտագործել այլ ակնոցներ կամ ստեղծել ձեր սեփականը);
1 անգամ մի տեսակ (առաձգական) ժապավեն, որը պետք է դրվի կրծքին:
Գործիքներ.-Նոթբուք
-oldոդման երկաթ
-Arduino IDE ծրագրակազմ
Իմ pvc- ի վրա կտեսնեք երկու կոճակ և անջատիչ, ես միայն ձախ կոճակն եմ օգտագործում այն անջատիչին միացնելու համար, ես չեմ օգտագործում նկարի աջ կողմում գտնվող երկրորդ կոճակը: Ես կոճակները դրեցի pvc- ի վրա, նախքան հասկանալը, որ դրանք ինձ պետք չեն, և դրա փոխարեն պետք էր անջատիչ օգտագործել:
Ստորև այստեղ կտեսնեք այն ամենի նկարները, ինչ ես օգտագործել եմ.
Քայլ 2: Neopixel մատանիներ
Սպիտակ մետաղալարը միացված է գետնին ՝ նեոպիքսելային օղակի հետևի մասում:
Նարնջագույն մետաղալարը միացված է 5V- ին:
Իսկ շագանակագույն մետաղալարը միացված է տվյալների մուտքագրմանը
Քայլ 3: Կապեր
Ահա, թե ինչ տեսք ուներ իմ տախտակը նախատիպ պատրաստելիս, կարող եք սա օգտագործել որպես հղում:
Ես նաև կազմեցի էլեկտրագծերի դասավորությունը, թե ինչ տեսք ունի այն ընդամենը մեկ կոճակով:
Քայլ 4: Կոդ
Հավանաբար, դա ամենաարդյունավետ ծածկագիրը չէ, բայց այն աշխատում է ինձ համար: Մարտահրավեր նետեք ինքներդ ձեզ և փորձեք այն ավելի արդյունավետ դարձնել; Պ
#ներառում
// Որը
Arduino- ի կապը միացված է NeoPixels- ին?
#սահմանել
PIN 6
// Որը
Arduino- ի քորոցը միացված է կոճակին
#սահմանել
BUTTON_PIN 9
// Ինչպես
շատ NeoPixels կցված են Arduino- ին?
#սահմանել
ԹՈ NUMՄԱՆԱԿՆԵՐ 16
// Երբ
մենք կարգավորում ենք NeoPixel գրադարանը, մենք ասում ենք նրան, թե քանի պիքսել և որ քորոցն օգտագործել ազդանշաններ ուղարկելու համար:
// Նշում
որ ավելի հին NeoPixel շերտերի համար կարող է անհրաժեշտ լինել փոխել երրորդ պարամետրը
//
օրինակ `հնարավոր արժեքների մասին լրացուցիչ տեղեկությունների համար:
Adafruit_NeoPixel
պիքսել = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);
int դադար
= 1; // հետաձգում 2
ներ
դադար 2 = 80; // իջնում է, երբ fsr- ն օգտագործվում է
ներ
դադար 3 = 150; // կատարելը, երբ fsr- ն օգտագործվում է
ներ
ուշացում = 4; // հետաձգում 1
ներ
fsrPin = 0; // FSR և 10K քաշքշուկները միացված են a0- ին
ներ
fsr Կարդում;
դատարկ
կարգավորում () {
pinMode (BUTTON_PIN, INPUT);
Serial.begin (9600);
pixels.begin (); // Սա նախաստորագրում է
NeoPixel գրադարան:
pixels.show ();
}
բուլ
սեղմված (int pin) {
վերադարձնել digitalRead (քորոց);
}
դատարկ
loop () {// կարդում է, թե արդյոք pin- ի մուտքագրումը ճիշտ է կամ սխալ
fsrReading = analogRead (fsrPin);
Serial.print ("Անալոգային ընթերցում =");
Serial.print (fsrReading);
եթե (սեղմված (BUTTON_PIN) == ճշմարիտ) {
// լույսի էֆեկտ fsr տվիչ օգտագործելիս
եթե (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);
}
եթե (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);
}
եթե (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);
}
եթե (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);
}
եթե (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);
}
եթե (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);
}
եթե (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);
}
եթե (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 void breathe is voor het licht effect als de
fsrsensor niet gebruikt wordt. Deze void wordt de de void loop () weer aangeroepen- ում:
void breathe_blue (int դադար, int քայլեր, բայթ R, բայտ G, բայթ Բ) {
ներ
tmpR, tmpG, tmpB; // Temp արժեքներ
// մարել
համար (int s = 1; s <= քայլեր; s ++) {
tmpR = (R * վ) /
քայլեր; // Նախ բազմապատկեք ՝ կրճատման սխալներից խուսափելու համար
tmpG = (G * ներ) / քայլեր;
tmpB = (B * ներ) / քայլեր;
համար (int i = 0;
եսpixels.setPixelColor (0, tmpR, tmpG+1, tmpB);
pixels.setPixelColor (15, tmpR, tmpG+1, tmpB);
}
pixels.show ();
ուշացում (4);
}
// մարել
համար (int s = 1; s <= քայլեր; s ++) {
tmpR = (R * վ) /
քայլեր; // Նախ բազմապատկեք ՝ կրճատման սխալներից խուսափելու համար
tmpG = (G * ներ) / քայլեր;
tmpB = (B * ներ) / քայլեր;
համար (int i = 0;
եսpixels.setPixelColor (1, tmpR, tmpG+1, tmpB);pixels.setPixelColor (14, tmpR, tmpG+1, tmpB);
}
pixels.show ();
ուշացում (4);
}
// մարել
համար (int s = 1; s <= քայլեր; s ++) {
tmpR = (R * վ) /
քայլեր; // Նախ բազմապատկեք ՝ կրճատման սխալներից խուսափելու համար
tmpG = (G * ներ) / քայլեր;
tmpB = (B * ներ) / քայլեր;
համար (int i = 0;
եսpixels.setPixelColor (2, tmpR, tmpG+2, tmpB);pixels.setPixelColor (13, tmpR, tmpG+2, tmpB);
}
pixels.show ();
ուշացում (3.5);
}
// մարել
համար (int s = 1; s <= քայլեր; s ++) {
tmpR = (R * վ) /
քայլեր; // Նախ բազմապատկեք ՝ կրճատման սխալներից խուսափելու համար
tmpG = (G * ներ) / քայլեր;
tmpB = (B * ներ) / քայլեր;
համար (int i = 0;
եսpixels.setPixelColor (3, tmpR, tmpG+3, tmpB+5);pixels.setPixelColor (12, tmpR, tmpG+3, tmpB+5);
}
pixels.show ();
ուշացում (3);
}
համար (int i = 0;
եսpixels.setPixelColor (0, 0, 0, 0);pixels.setPixelColor (15, 0, 0, 0);
}
// մարել
համար (int s = 1; s <= քայլեր; s ++) {
tmpR = (R * վ) /
քայլեր; // Նախ բազմապատկեք ՝ կրճատման սխալներից խուսափելու համար
tmpG = (G * ներ) / քայլեր;
tmpB = (B * ներ) / քայլեր;
համար (int i = 0;
ես
pixels.setPixelColor (4, tmpR, tmpG+3, tmpB+15);pixels.setPixelColor (11, tmpR, tmpG+3, tmpB+15);
}
pixels.show ();
ուշացում (3);
}
// մարել
համար (int s = 1; s <= քայլեր; s ++) {
tmpR = (R * վ) /
քայլեր; // Նախ բազմապատկեք ՝ կրճատման սխալներից խուսափելու համար
tmpG = (G * ներ) / քայլեր;
tmpB = (B * ներ) / քայլեր;
համար (int i = 0;
եսpixels.setPixelColor (5, tmpR, tmpG+4, tmpB+20);pixels.setPixelColor (10, tmpR, tmpG+4, tmpB+20);
}
pixels.show ();
ուշացում (2);
}
համար (int i = 0;
եսpixels.setPixelColor (1, 0, 0, 0);
pixels.setPixelColor (14, 0, 0, 0);
}
// մարել
համար (int s = 1; s <= քայլեր; s ++) {
tmpR = (R * վ) /
քայլեր; // Նախ բազմապատկեք ՝ կրճատման սխալներից խուսափելու համար
tmpG = (G * ներ) / քայլեր;
tmpB = (B * ներ) / քայլեր;
համար (int i = 0;
եսpixels.setPixelColor (6, tmpR, tmpG+2, tmpB+40);
pixels.setPixelColor (9, tmpR, tmpG+2, tmpB+40);
}
pixels.show ();
ուշացում (ուշացում);
}
համար (int i = 0;
եսpixels.setPixelColor (2, 0, 0, 0);pixels.setPixelColor (13, 0, 0, 0);
}
// մարել
համար (int s = 1; s <= քայլեր; s ++) {
tmpR = (R * վ) /
քայլեր; // Նախ բազմապատկեք ՝ կրճատման սխալներից խուսափելու համար
tmpG = (G * ներ) / քայլեր;
tmpB = (B * ներ) / քայլեր;
համար (int i = 0;
ես
pixels.setPixelColor (7, tmpR, tmpG, tmpB+44);pixels.setPixelColor (8, tmpR, tmpG, tmpB+44);
}
pixels.show ();
ուշացում (ուշացում);
}
// Մարել
համար (int s = քայլեր; s> 0; s--) {
tmpR = (R * s) / քայլեր; // Նախ բազմապատկել ՝ կրճատումից խուսափելու համար
սխալներ
tmpG = (G * ներ) / քայլեր;
tmpB = (B * ներ) / քայլեր;
համար (int i = 0; i
pixels.setPixelColor (7, tmpR, tmpG, tmpB);
pixels.setPixelColor (8, tmpR, tmpG, tmpB);
}
pixels.show ();
ուշացում (1);
}
// Մարել
համար (int s = քայլեր; s> 0; s--) {
tmpR = (R * s) / քայլեր; // Նախ բազմապատկել ՝ կրճատումից խուսափելու համար
սխալներ
tmpG = (G * ներ) / քայլեր;
tmpB = (B * ներ) / քայլեր;
համար (int i = 0; i
pixels.setPixelColor (6, tmpR, tmpG, tmpB);
pixels.setPixelColor (9, tmpR, tmpG, tmpB);
}
pixels.show ();
ուշացում (1);
}
// Մարել
համար (int s = քայլեր; s> 0; s--) {
tmpR = (R * s) / քայլեր; // Նախ բազմապատկել ՝ կրճատումից խուսափելու համար
սխալներ
tmpG = (G * ներ) / քայլեր;
tmpB = (B * ներ) / քայլեր;
համար (int i = 0; i
pixels.setPixelColor (5, tmpR, tmpG, tmpB);
pixels.setPixelColor (10, tmpR, tmpG, tmpB);
}
pixels.show ();
ուշացում (2);
}
// Մարել
համար (int s = քայլեր; s> 0; s--) {
tmpR = (R * s) / քայլեր; // Նախ բազմապատկել ՝ կրճատումից խուսափելու համար
սխալներ
tmpG = (G * ներ) / քայլեր;
tmpB = (B * ներ) / քայլեր;
համար (int i = 0; i
pixels.setPixelColor (4, tmpR, tmpG, tmpB);
pixels.setPixelColor (11, tmpR, tmpG, tmpB);
}
pixels.show ();
ուշացում (2);
}
// Մարել
համար (int s = քայլեր; s> 0; s--) {
tmpR = (R * s) / քայլեր; // Նախ բազմապատկել ՝ կրճատումից խուսափելու համար
սխալներ
tmpG = (G * ներ) / քայլեր;
tmpB = (B * ներ) / քայլեր;
համար (int i = 0; i
pixels.setPixelColor (3, tmpR, tmpG, tmpB);
pixels.setPixelColor (12, tmpR, tmpG, tmpB);
}
pixels.show ();
ուշացում (3);
}
// Մարել
համար (int s = քայլեր; s> 0; s--) {
tmpR = (R * s) / քայլեր; //
Սկզբում բազմապատկեք ՝ կրճատման սխալներից խուսափելու համար
tmpG = (G * ներ) / քայլեր;
tmpB = (B * ներ) / քայլեր;
համար (int i = 0; i
pixels.setPixelColor (2, tmpR, tmpG, tmpB);
pixels.setPixelColor (13, tmpR, tmpG, tmpB);
}
pixels.show ();
ուշացում (3);
}
// Մարել
համար (int s = քայլեր; s> 0; s--) {
tmpR = (R * s) / քայլեր; // Նախ բազմապատկել ՝ կրճատումից խուսափելու համար
սխալներ
tmpG = (G * ներ) / քայլեր;
tmpB = (B * ներ) / քայլեր;
համար (int i = 0; i
pixels.setPixelColor (1, tmpR, tmpG, tmpB);
pixels.setPixelColor (14, tmpR, tmpG, tmpB);
}
pixels.show ();
ուշացում (4);
}
// Մարել
համար (int s = քայլեր; s> 0; s--) {
tmpR = (R * s) / քայլեր; // Նախ բազմապատկել ՝ կրճատումից խուսափելու համար
սխալներ
tmpG = (G * ներ) / քայլեր;
tmpB = (B * ներ) / քայլեր;
համար (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 ստվարաթղթի համար. 10 քայլ (նկարներով)
Գիշերային տեսողության ակնոցներ Google ստվարաթղթի համար. Հրաժարում. Այս սարքի օգտագործումը նախատեսված է միայն ժամանցի, կրթության և գիտական օգտագործման համար. լրտեսության և (կամ) հսկողության համար չէ: «Լրտեսական գաջեթը» գործառույթները հավելվածին ավելացվել են պարզապես զվարճանալու համար և գործնական նշանակություն չեն ունենա
Ակնոցներ կարդալիս (և չայրել աչքերս) խավարումը դիտել. 4 քայլ (նկարներով)
Ընթերցանության ակնոցների միջով խավարում դիտելը (և աչքերս չայրող). Հայրս նույնպես այդպես վարվեց, երբ երեկ զբոսնում էինք հին Մոնտրով, նա հանեց իր ակնոցները և ցույց տվեց, թե ինչպես տեսնել, թե ինչպես տեսնել խավարումը, ինչպես կարծում էին նրա ընթերցանության ակնոցները: Այսպիսով, ամեն ինչ
Բարձր լարման այլընտրանքային խցանման ուսուցման ակնոցներ [ATtiny13] ՝ 5 քայլ (նկարներով)
Բարձր լարման այլընտրանքային օկուլյացիայի ուսուցման ակնոցներ [ATtiny13]. Իմ առաջին ուսանելի ուսուցման ընթացքում ես նկարագրեցի, թե ինչպես կարելի է կառուցել մի սարք, որը պետք է բավականին օգտակար լինի մեկին, ով ցանկանում է բուժել ամբլիոպիան (ծույլ աչք): Դիզայնը շատ պարզեցված էր և ուներ որոշ թերություններ (դրա համար անհրաժեշտ էր օգտագործել երկու մարտկոց և հեղուկ
Հեղուկ բյուրեղյա ակնոցներ ամբլիոպիայի համար (Այլընտրանքային արգելափակման ուսուցման բաժակներ) [ATtiny13]. 10 քայլ (նկարներով)
Հեղուկ բյուրեղյա ակնոցներ ամբլյոպիայի համար (Այլընտրանքային արգելափակման ուսուցման ակնոցներ) [ATtiny13]. Ամբլիոպիա (ծույլ աչք), տեսողության խանգարում, որը ազդում է բնակչության մոտ 3% -ի վրա, սովորաբար բուժվում է պարզ աչքերով կամ ատրոպինի կաթիլներով: Unfortunatelyավոք, բուժման այդ մեթոդները փակում են ուժեղ աչքը երկար, անխափան ժամանակահատվածների համար, ոչ