תוכן עניינים:
- שלב 1: חומרים וחלקים הדרושים:
- שלב 2: טבעות Neopixel
- שלב 3: חיבורים
- שלב 4: הקוד:
- שלב 5: חיבור הכל יחד:
וִידֵאוֹ: משקפי הרפיה - ITTT: 5 שלבים (עם תמונות)
2024 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2024-01-30 09:17
פרויקט 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 לרצועת האלסטיות בעזרת סרט קלטת או פשוט להשאיר אותו לבד.
תהנה ממשקפי המשקפיים שלך:)
מוּמלָץ:
משקפי ראיית לילה לקרטון Google: 10 שלבים (עם תמונות)
משקפי ראיית לילה לקרטון Google: כתב ויתור: השימוש במכשיר זה מיועד לבידור, חינוך ושימוש מדעי בלבד; לא לצורך ריגול ו/או מעקב. גאדג'ט הריגול " תכונות נוספו לאפליקציה רק בשביל הכיף ולא ישמשו שום מטרה מעשית עבור
עשה זאת בעצמך - משקפי RGB: 3 שלבים (עם תמונות)
עשה זאת בעצמך | משקפי RGB: היי! הכנתי משקפי RGB באמצעות נוריות WS2812B ו- Arduino Nano. למשקפיים יש הנפשות רבות שניתן לשלוט בהן באמצעות אפליקציה לנייד. האפליקציה יכולה לתקשר עם arduino באמצעות מודול Bluetooth
מתג אור מבוקר-עיניים באמצעות משקפי ראש המחקים של Shota Aizawa (גיבור האקדמיה שלי): 8 שלבים (עם תמונות)
מתג אור מבוקר-עיניים באמצעות משקפי ראש המחקים של Shota Aizawa (גיבור האקדמיה שלי): אם אתה קורא את המנגה של הגיבור האקדמי שלי או צופה באנימה של הגיבורה האקדמית שלי, אתה חייב להכיר דמות בשם shota aizawa. Shota Aizawa הידוע גם בשם ראש המחק, הוא גיבור מקצוען ומורה לחדר השיעורים של U.A. הקווירק של שוטה נותן לו את ה ab
משקפי LED ותלבושת: 4 שלבים (עם תמונות)
משקפי לד ותלבושת: האם אתה אוהב להיראות מרחוק בחושך? האם אתה רוצה משקפיים מהודרים כמו של אלטון? אם כך, המדריך הזה הוא בשבילך !!! תלמד כיצד להכין תחפושת LED וכוסות אור מונפשות
משקפי קריסטל נוזליים לאמבליופיה (משקפי אימון לסירוגין) [ATtiny13]: 10 שלבים (עם תמונות)
משקפי קריסטל נוזליים לאמבליופיה (משקפי אימון לסירוגין) [ATtiny13]: אמבליופיה (עין עצלה), הפרעת ראייה שמשפיעה על כ -3% מהאוכלוסייה, בדרך כלל מטופלים באמצעות כתמי עיניים פשוטים או טיפות אטרופין. למרבה הצער, שיטות טיפול אלו חותמות עין חזקה יותר לפרקי זמן ארוכים ללא הפרעה, לא