תוכן עניינים:

משקפי הרפיה - ITTT: 5 שלבים (עם תמונות)
משקפי הרפיה - ITTT: 5 שלבים (עם תמונות)

וִידֵאוֹ: משקפי הרפיה - ITTT: 5 שלבים (עם תמונות)

וִידֵאוֹ: משקפי הרפיה - ITTT: 5 שלבים (עם תמונות)
וִידֵאוֹ: השילוב🍭המושלם #רולאפס 2024, יולי
Anonim
משקפי הרפיה - ITTT
משקפי הרפיה - ITTT
משקפי הרפיה - ITTT
משקפי הרפיה - ITTT
משקפי הרפיה - ITTT
משקפי הרפיה - ITTT

פרויקט HKU - ITTT (אם זה אז) - ג'וליה ברקוואר, 1B

האם אי פעם הרגשת לחוץ ואתה פשוט לא יודע איך להרגיע את עצמך, אז כדאי שתנסה את משקפי ההרפיה האלה! אתה שם אותם ועוצם את העיניים, ואז תתנגן דפוס נשימה. על ידי ביצוע דפוס נשימה זה מקצב הנשימה שלך יורד לנשום פנימה והחוצה 6 פעמים בדקה. פעולה זו משחררת מתח יומיומי.

אתה יכול גם לעקוב אחר עוצמת הנשימה שלך על ידי הפעלת מתג באמצעות חיישן fsr.

עם טוטוריאל זה אני אלווה אותך בבניית משקפי הרפיה משלך צעד אחר צעד.

שלב 1: חומרים וחלקים הדרושים:

חומרים וחלקים הדרושים
חומרים וחלקים הדרושים
חומרים וחלקים הדרושים
חומרים וחלקים הדרושים
חומרים וחלקים הדרושים
חומרים וחלקים הדרושים

חומרים:

1x arduino uno;

1xbreadboard או PCV;

נגדים 3x 10k

חוטים (רצוי בצבעים שונים כך שקל יותר לדעת אילו דברים יורדים לקרקע ואילו הולכים לסיכות שונות וכו ');

כמה צינורות מכווצי חום;

2x טבעת NeoPixel - 16 x 5050 RGB LED עם מנהלי התקנים משולבים;

מתג 1x;

1x חיישן FSR;

1x משקפי SteamPunk (אתה יכול לקנות את זה בחנות מסיבות, הם קלים לשימוש מכיוון שטבעת הניאופיקסל מתאימה בצורה מושלמת למשקפיים. אתה תמיד מנסה להשתמש במשקפיים אחרים או ליצור משלך).

1x סוג של רצועת (אלסטיק) לשים סביב החזה שלך.

כלים: -לפטופ

-מלחם

-תוכנת Arduino IDE

תראה שני כפתורים ומתג על ה- pvc שלי, אני משתמש רק בלחצן השמאלי כדי לחבר אותו למתג, אני לא משתמש בכפתור השני מימין לתמונה. שמתי את הכפתורים על ה- pvc לפני שהבנתי שאני לא צריך אותם והייתי צריך להשתמש במתג במקום.

להלן תראה תמונות של כל מה שהשתמשתי בו:

שלב 2: טבעות Neopixel

טבעות ניאופיקסל
טבעות ניאופיקסל

החוט הלבן מחובר לקרקע בחלק האחורי של טבעת הניאופיקסל.

החוט הכתום מחובר ל- 5V.

והחוט החום מחובר לקלט הנתונים

שלב 3: חיבורים

חיבורים
חיבורים
חיבורים
חיבורים

כך נראה קרש הלחם שלי בעת אב טיפוס, אתה יכול להשתמש בזה כהפניה.

הכנתי גם פריסה של החיווט של איך הוא אמור להיראות עם כפתור אחד בלבד.

שלב 4: הקוד:

זה כנראה לא הקוד היעיל ביותר, אבל זה עובד בשבילי. אתגר את עצמך ונסה להפוך אותו ליעיל יותר; P

#לִכלוֹל

// איזה

סיכה ב- Arduino מחוברת ל- NeoPixels?

#לְהַגדִיר

PIN 6

// איזה

סיכה ב- Arduino מחוברת לכפתור

#לְהַגדִיר

BUTTON_PIN 9

// איך

הרבה NeoPixels מחוברים ל- Arduino?

#לְהַגדִיר

NUMPIXELS 16

// מתי

אנו מקימים את ספריית NeoPixel, אנו מספרים לה כמה פיקסלים, ובאיזה סיכה להשתמש כדי לשלוח אותות.

// הערה

כי עבור רצועות NeoPixel ישנות יותר ייתכן שיהיה עליך לשנות את הפרמטר השלישי-עיין במבחן הגדיל

//

דוגמא למידע נוסף על ערכים אפשריים.

Adafruit_NeoPixel

פיקסלים = Adafruit_NeoPixel (NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

int pause

= 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);

פיקסלים.התחל (); // זה מאתחל את

ספריית NeoPixel.

pixels.show ();

}

בול

לחצו על כפתור (int pin) {

החזר digitalRead (סיכה);

}

בָּטֵל

loop () {// קורא אם קלט הסיכה נכון או לא נכון

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);

}

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);

}

אם (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);

}

אם (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);

}

אם (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);

}

}

אַחֵר{

breathe_blue (20, 100, 0, 1, 1); // רגיל

השפעה

}

}

// הפסקה

= עיכוב בין מעברים

// שלבים

= מספר השלבים

// R, G, B = ערכי RGB מלאים

// De void breathe is voor het licht effect as de

fsrsensor לא משמש. חלל זה הופך להיות בלולאה בטלה () שוב aangeroepen.

void breathe_blue (int pause, int steps, by R, by G, בת ב ') {

int

tmpR, tmpG, tmpB; // ערכי טמפ '

// לדעוך

עבור (int s = 1; s <= צעדים; s ++) {

tmpR = (R * s) /

צעדים; // הכפל תחילה כדי להימנע משגיאות קיצוץ

tmpG = (G * s) / צעדים;

tmpB = (B * s) / צעדים;

עבור (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 * s) /

צעדים; // הכפל תחילה כדי להימנע משגיאות קיצוץ

tmpG = (G * s) / צעדים;

tmpB = (B * s) / צעדים;

עבור (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 * s) /

צעדים; // הכפל תחילה כדי להימנע משגיאות קיצוץ

tmpG = (G * s) / צעדים;

tmpB = (B * s) / צעדים;

עבור (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 * s) /

צעדים; // הכפל תחילה כדי להימנע משגיאות קיצוץ

tmpG = (G * s) / צעדים;

tmpB = (B * s) / צעדים;

עבור (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 * s) /

צעדים; // הכפל תחילה כדי להימנע משגיאות קיצוץ

tmpG = (G * s) / צעדים;

tmpB = (B * s) / צעדים;

עבור (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 * s) /

צעדים; // הכפל תחילה כדי להימנע משגיאות קיצוץ

tmpG = (G * s) / צעדים;

tmpB = (B * s) / צעדים;

עבור (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 * s) /

צעדים; // הכפל תחילה כדי להימנע משגיאות קיצוץ

tmpG = (G * s) / צעדים;

tmpB = (B * s) / צעדים;

עבור (int i = 0;

אניpixels.setPixelColor (6, tmpR, tmpG+2, tmpB+40);

pixels.setPixelColor (9, tmpR, tmpG+2, tmpB+40);

}

pixels.show ();

עיכוב (delayval);

}

עבור (int i = 0;

אניpixels.setPixelColor (2, 0, 0, 0);pixels.setPixelColor (13, 0, 0, 0);

}

// לדעוך

עבור (int s = 1; s <= צעדים; s ++) {

tmpR = (R * s) /

צעדים; // הכפל תחילה כדי להימנע משגיאות קיצוץ

tmpG = (G * s) / צעדים;

tmpB = (B * s) / צעדים;

עבור (int i = 0;

אני

pixels.setPixelColor (7, tmpR, tmpG, tmpB+44);pixels.setPixelColor (8, tmpR, tmpG, tmpB+44);

}

pixels.show ();

עיכוב (delayval);

}

// לדעוך

עבור (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);

}

// לדעוך

עבור (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);

}

// לדעוך

עבור (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);

}

// לדעוך

עבור (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);

}

// לדעוך

עבור (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);

}

// לדעוך

עבור (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);

}

// לדעוך

עבור (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);

}

// לדעוך

עבור (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 על גבי הארדואינו זה נחמד ומסודר ככה).

השלב הבא הוא לשים צינורות מכווצי חום סביב כל החוטים כך שזה יהיה פחות בלגן.

אם בחרת להשתמש ב- PVC אז היית צריך להלחם הכל ביחד עד עכשיו.

אחרי זה אתה שם את טבעות הניאופיקסל בצד החיצוני של המשקפיים (ודא שהנורות מיושרות בחלק התחתון) ומאבטח אותן במקומן בעזרת סרט דבק או דבק (השתמשתי בקלטת).

אתה יכול לבחור להדביק את חיישן ה- fsr לרצועת האלסטיות בעזרת סרט קלטת או פשוט להשאיר אותו לבד.

תהנה ממשקפי המשקפיים שלך:)

מוּמלָץ: