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

יד קצב: 6 שלבים
יד קצב: 6 שלבים

וִידֵאוֹ: יד קצב: 6 שלבים

וִידֵאוֹ: יד קצב: 6 שלבים
וִידֵאוֹ: רכב יד שניה - 7 דברים שחייבים לעשות לפני שקונים רכב משומש 2024, יולי
Anonim
קצב יד
קצב יד

הציברלובב הזה עוסק בביצוע הצעד הנכון ברגע הנכון.

האורות עוברים מהזרוע (המרפק) לידך וכאשר האורות מגיעים לידך עליך ללחוץ על אצבעותיך על תא הצילום המיני.

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

שלב 1: אסוף חומרים

  • כפפה
  • בד להאריך את הכפפה
  • רצועת LED WS2812B
  • חוטים
  • ארדואינו
  • מיני פוטושל

שלב 2: יצירת מעגלים

יצירת מעגלים
יצירת מעגלים
יצירת מעגלים
יצירת מעגלים

תחילה חבר את רצועת הלד לארדואינו. אתה יכול לעשות זאת על ידי חיבור ה- +5v ל- 5v בארדואינו. הדין חייב להיות מחובר ל- A0 על הארדואינו וה- GND חייב להיות מחובר ל- GND על הארדואינו.

כמו כן, עליך לחבר את תא הצילום למיני הארדואינו באמצעות חיבור לחוט 5V מפס הלד ומאותו מקור המתחבר עם חוט ל- PIN 6 בארדואינו. הצד השני מהצילום המיני חייב להיות מחובר לחוט ה- GND מפס הלד

שלב 3: עיצוב הכפפה

עיצוב הכפפה
עיצוב הכפפה

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

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

תא הצילום המיני נתפר בתוך הכפפה כך שהוא יישאר במקומו.

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

שלב 4: הלחמה

הַלחָמָה
הַלחָמָה

כעת תוכל לאבטח את חוטי החיבור מהמעגל באמצעות הלחמה.

שלב 5: קידוד

סִמוּל
סִמוּל
סִמוּל
סִמוּל
סִמוּל
סִמוּל

// תכנית בסיסית לבדיקת רצועות NeoPixel.

// הפרקטיקות הטובות ביותר של NEOPIXEL לפעולה הכי אמינה: // - הוסף 1000 uF CAPACITOR בין חיבורי + ו- - של רצועת NeoPixel. // - מזעור אורך החיווט בין לוח המיקרו לפיקסל הראשון. //-ה- DATA-IN של NeoPixel strip צריך לעבור דרך 300-500 OHM RESISTOR. // - הימנע מחיבור NeoPixels ב- LIVE CIRCUIT. אם אתה חייב, תמיד / תחבר תחילה את GROUND (-), ואז +, ואז נתונים. //-בעת שימוש במיקרו-בקר 3.3V עם פס NeoPixel המופעל על ידי 5V, // מומלצת בחומרה ממיר LOGIC-LEVEL בקו הנתונים. // (דילוג על אלה עשוי לעבוד כשורה על שולחן העבודה שלך אך עלול להיכשל בשטח)

#include #ifdef _AVR_ #include // נדרש עבור תכשיט Adafruit 16 MHz #endif

// איזו סיכה ב- Arduino מחוברת ל- NeoPixels? // ב- Trinket או Gemma אנו מציעים לשנות זאת ל- 1: #define LED_PIN 6

// כמה NeoPixels מחוברים ל- Arduino? #הגדר LED_COUNT 60

// הצהירו על אובייקט רצועת NeoPixel שלנו: רצועת Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // צבע לבן, עבור ברירת המחדל bool clickCorrectly = false; // ארגומנט 1 = מספר הפיקסלים ברצועת NeoPixel // ארגומנט 2 = מספר סיכה Arduino (רובם תקפים) // ארגומנט 3 = דגלים מסוג פיקסל, הוסיפו יחד לפי הצורך: // NEO_KHZ800 800 KHz bitstream (רוב מוצרי NeoPixel w/ נוריות WS2812) // NEO_KHZ400 400 KHz ('v1' קלאסי (לא v2) פיקסלים של FLORA, מנהלי התקנים WS2811) // NEO_GRB פיקסלים מחוברים ל- bitstream GRB (רוב מוצרי NeoPixel) // NEO_RGB פיקסלים מחוברים ל- RGB bitstream (v1 FLORA פיקסלים, לא v2) // NEO_RGBW פיקסלים מחוברים עבור זרם סיביות RGBW (מוצרי NeoPixel RGBW)

// פונקציית setup ()-פועל פעם אחת בעת ההפעלה --------------------------------

הגדרת void () {// שורות אלה נועדו במיוחד לתמיכה ב- Adafruit Trinket 5V 16 MHz. // כל לוח אחר, אתה יכול להסיר חלק זה (אך בלי לפגוע בו): #if מוגדר (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // END של קוד ספציפי ל- Trinket.

pinMode (A0, INPUT); strip.begin (); // התחל אובייקט רצועת NeoPixel (חובה) strip.show (); // כבה את כל הפיקסלים ASAP strip.setBrightness (10); // הגדר את הבהירות לכ- 1/5 (מקסימום = 255)}

הפונקציה // loop ()-פועל שוב ושוב כל עוד הלוח מופעל ---------------

לולאת void () {clickedCorrectly = theaterChaseOne (color); אם (נלחץ נכון) {color = strip. Color (0, 255, 0); } אחרת {color = strip. Color (255, 0, 0); }}

// כמה פונקציות משלנו ליצירת אפקטים מונפשים -----------------

// אורות מרדף בסגנון תיאטרון. העבר בצבע (ערך 32 סיביות, // a la strip. צבע (r, g, b) כפי שצוין לעיל), וזמן עיכוב (ב- ms) // בין מסגרות. bool theaterChaseOne (uint32_t color) {bool correct = false; bool clickedWrong = false; עבור (int index = 0; index 800) {// value light sensor if (index <16) {// 2 leds before end ואז תוכל ללחוץ color = strip. Color (255, 0, 0); // נוריות בצבע אדום clickedWrong = true; // לחצו לא נכון ואז נוריות הופכות לאדומות} אחרת אם (! clickedWrong) {// אם לא טועה color = strip. Color (0, 255, 0); // נוריות צבע ירוק נכונות = נכון; // נלחץ נכון ואז הנורות הופכות לירוק}} strip.clear (); strip.setPixelColor (17 - אינדקס, צבע); // שורה ראשונה אורות led strip.setPixelColor (18 + אינדקס, צבע); // שורה שנייה led LED strip.setPixelColor (53 - אינדקס, צבע); // שורה שלישית אורות led strip.show (); עיכוב (300); } החזר נכון; }

שלב 6: שינויים

שינויים
שינויים
שינויים
שינויים
שינויים
שינויים

ביצעתי כמה שינויים. ראשית הסתרתי את הארדואינו כדי שיהיה נוח יותר להשתמש ב"יד הקצב "ושנית שיניתי מעט את הקוד. שיניתי את הקוד כך שכאשר אתה לוחץ ברגע הנכון הצבע הופך לירוק והלדים נעים מהר יותר. על ידי כך Swill LED הופך 10% מהר יותר מאשר בעבר. זה הופך את המשחק למעניין יותר

ככה הקוד עכשיו:

// תוכנית בסיסית לבדיקת רצועות NeoPixel. // הפרקטיקות הטובות ביותר של NEOPIXEL לפעולה האמינה ביותר: // - הוסף 1000 uF CAPACITOR בין חיבורי + ו- - של רצועת NeoPixel. // - מזעור אורך החיווט בין לוח המיקרו לפיקסל הראשון. //-ה- DATA-IN של NeoPixel strip צריך לעבור דרך 300-500 OHM RESISTOR. // - הימנע מחיבור NeoPixels ב- LIVE CIRCUIT. אם אתה חייב, תמיד / תחבר תחילה את GROUND (-), ואז +, ואז נתונים. //-בעת שימוש במיקרו-בקר 3.3V עם פס NeoPixel המופעל על ידי 5V, // מומלצת בחומרה ממיר LOGIC-LEVEL בקו הנתונים. // (דילוג על אלה עשוי לפעול בסדר על שולחן העבודה שלך אך עלול להיכשל בשטח) #include #ifdef _AVR_ #include // נדרש עבור תכשיט Adafruit 16 MHz #endif // איזה סיכה בארדואינו מחובר ל- NeoPixels? // ב- Trinket או Gemma אנו מציעים לשנות זאת ל- 1: #define LED_PIN 6 // כמה NeoPixels מחוברים ל- Arduino? #define LED_COUNT 60 // הצהיר על אובייקט רצועת NeoPixel שלנו: רצועת Adafruit_NeoPixel (LED_COUNT, LED_PIN, NEO_GRB + NEO_KHZ800); uint32_t color = strip. Color (127, 127, 127); // צבע לבן, עבור ברירת המחדל bool clickCorrectly = false; מדד int = 0; מרווח int = 300; תוצאה int = 0; מס 'הקודם ארוך לא חתום = מיליס (); // ארגומנט 1 = מספר הפיקסלים ברצועת NeoPixel // ארגומנט 2 = מספר סיכה Arduino (רובם תקפים) // ארגומנט 3 = דגלים מסוג פיקסל, הוסיפו יחד לפי הצורך: // NEO_KHZ800 800 KHz bitstream (רוב מוצרי NeoPixel w/ נוריות WS2812) // NEO_KHZ400 400 KHz ('v1' קלאסי (לא v2) פיקסלים של FLORA, מנהלי התקנים WS2811) // NEO_GRB פיקסלים מחוברים ל- bitstream GRB (רוב מוצרי NeoPixel) // NEO_RGB פיקסלים מחוברים ל- RGB bitstream (v1 FLORA פיקסלים, לא v2) // NEO_RGBW פיקסלים מחוברים עבור זרם ביט RGBW (מוצרי NeoPixel RGBW) // פונקציית setup ()-פועל פעם אחת בעת ההפעלה -------------------- ------------ הגדרת void () {// שורות אלה נועדו במיוחד לתמיכה ב- Adafruit Trinket 5V 16 MHz. // כל לוח אחר, אתה יכול להסיר את החלק הזה (אבל בלי לפגוע בו): #if מוגדר (_ AVR_ATtiny85_) && (F_CPU == 16000000) clock_prescale_set (clock_div_1); #endif // END של קוד ספציפי ל- Trinket. Serial.begin (9600); בעוד (! סדרתי) {; // המתן לחיבור יציאה טורית. דרוש ליציאת USB מקורית בלבד} pinMode (A0, INPUT); strip.begin (); // התחל אובייקט רצועת NeoPixel (חובה) strip.show (); // כבה את כל הפיקסלים בהקדם האפשרי strip.setBrightness (10); // הגדר את הבהירות לכ 1/5 (מקסימום = 255)} // לולאה () פונקציה-פועל שוב ושוב כל עוד הלוח מופעל --------------- לולאת חלל () {current current ms ms = millis (); // קבלת ערך int הזמן הנוכחי = analogRead (A0); // קריאת חיישן האור הנוכחי אם (ערך> 900 && result == 0) {// אם לוחצים על החיישן ועדיין לא נרשמה תוצאה, הפעילו לכידת תוצאות אם (index = interval) {// בדוק אם הזרם הנוכחי לולאה חורגת מהמרווח קודם Ms = currentMs; // הגדר את המרווח החדש לזמן הנוכחי + מדד מרווחים + = 1; // הגדר את הלדים צעד אחד קדימה בלולאה אם (אינדקס> 17) {// מפעיל אינדקס טיפול בלולאה של סוף הלולאה = 0; if (result == 2) {// על מרווח תוצאות נכון = (int) max ((מרווח * 0.95), 50); // להאיץ ב- 10%, עד למרווח של 50ms/ color = strip. Color (0, 255, 0); // הגדר את הנורות לירוק} else if (result == 1) {// במרווח תוצאות שגוי = 300; // אפס את צבע המרווח = strip. Color (255, 0, 0); // הגדר את הנורות לאדום} אחר {// על תוצאה שלא נלכדה color = strip. Color (255, 0, 0); // הגדר את הלדים לאדום} result = 0; // אפס את התוצאה ללולאה הבאה} theaterChaseOne (צבע, אינדקס); // הדליקו את הנורות לתצוגה. }}} // כמה פונקציות משלנו ליצירת אפקטים מונפשים ----------------- // אורות מרדפים בסגנון תיאטרון. העבר בצבע (ערך 32 סיביות, // a la strip. צבע (r, g, b) כפי שצוין לעיל), וזמן עיכוב (ב- ms) // בין מסגרות. void theaterChaseOne (uint32_t color, int index) {strip.clear (); strip.setPixelColor (17 - אינדקס, צבע); // שורה ראשונה אורות led strip.setPixelColor (18 + אינדקס, צבע); // שורה שנייה led LED strip.setPixelColor (53 - אינדקס, צבע); // שורה שלישית אורות led strip.show (); }

מוּמלָץ: