תוכן עניינים:
2025 מְחַבֵּר: John Day | [email protected]. שונה לאחרונה: 2025-01-13 06:57
עץ אינטראקטיבי עם טבעת LED בחלקו העליון, זמזם להשמעת קול וחיישן מגע שבוי בפנים שמשנה את הצבע בעת נגיעה בו. כדי להפוך את הדבר הקטן והמהנה הזה תצטרך את הדברים הבאים:
אלקטרוניקה:- 1x Arduino Uno
- 15x כבלים
- 1x מלחם עם קצה עגול
- 1x מגע שבוי Adafruit בעל 8 מפתחות (CAP1188)
- 1x כבל מתח Arduino
- 1x 8 טבעת LED
- זמזם 1x
- 1x אקדח דבק חם
-הורד את הספרייה של CAP1188
- הורד את הספרייה של Adafruit Neopixel
תוספת (מעטפת):
- גדם עץ אחד
- מקל 1x לפנים
- מגש עץ להנחת הכל על/פנימה
- מלית חיות ממולאת מבחוץ
אתה יכול גם להשתמש במשהו אחר כמו בחוץ, להיות יצירתי!
עכשיו נתחיל…
שלב 1: שלב 1: טבעת LED עם מגע שבוי
עכשיו אם יש לך מזל טבעת ה- LED שלך כבר מחוברת אליו. אם לא הגיע הזמן להלחם!
הדברים בהם נשתמש לפרויקט זה הם:
- DI (קלט דיגיטלי, סיכה 6 ~
- 5V (עבור כוח, סיכת 5V)
- GND (הקרקע, סיכת GND)
זוהי טבעת ה- LED בינתיים. עכשיו המגע השבוי.
הניחו אותו בלוח לחם וחברו הכל כדלקמן: SDA/MISO בנעץ (אנלוגי ב) A4SCK בסיכה (אנלוגי ב) A5VIN ב (מתח) 5VGND בכבל GND pin1x ב C1 (במגע Captive עצמו)
עכשיו כדי לבדוק העלה את הקוד הבא ל- Arduino שלך:
// ג'וליה אמינק // קוד אור ומגע לעץ האינטראקטיבי 19 /// מיוצר בשימוש במגע Adafruit Neopixel ו- Adafruit captive (CAP1188) (יש להתקין) והנורית מהבהבת ללא דיחוי
// NEOPIXEL ~~~~~~~~~~~~~~~~~~~
#לִכלוֹל
#define PIXELSPIN 6 // היכן חיברת את טבעת ה- LED
#define NUMPIXELS 8 // כמות הנורות הנמצאות בטבעת שלך #define CALIBRATIONTIME 20000
Adafruit_NeoPixel פיקסלים = Adafruit_NeoPixel (NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);
פיקסלים ארוכים ללא סימן מרווח = 500; // הזמן שאנחנו צריכים לחכות
colorWipePreviousMillis ארוך ללא חתימה = 0; תיאטרון ארוך לא חתוםChasePreviousMillis = 0; קשת ארוכה לא חתומהPreviousMillis = 0; rainbowCyclesPreviousMillis לא חתום ללא סימן;
int theaterChaseQ = 0;
uint16_t currentPixel = 0; // באיזה פיקסל אנחנו פועלים
// TOUCH ~~~~~~~~~~~~~~~~~~~~~~~
#include #include #include
// איפוס סיכה משמש ל- I2C או SPI
#הגדר CAP1188_RESET 9
// סיכת CS משמשת לתוכנות או חומרי SPI
#הגדר CAP1188_CS 10
// אלה מוגדרים עבור תוכנת SPI, עבור חומרת SPI, בדוק את
// סיכות SPI של הלוח בתיעוד של Arduino #הגדר CAP1188_MOSI 11 #הגדר CAP1188_MISO 12 #הגדר CAP1188_CLK 13
// השתמש ב- I2C, אין סיכת איפוס!
Adafruit_CAP1188 cap = Adafruit_CAP1188 ();
הגדרת בטל () {
// NEOPIXEL ~~~~~~~~~~~~~~~~~~ currentPixel = 0; פיקסלים.התחל (); // זה מאתחל את ספריית NeoPixel. pixels.show (); // פעולה זו שולחת את צבע הפיקסל המעודכן לחומרה.
// מגע ~~~~~~~~~~~~~~~~~~~~~~~
Serial.begin (300); Serial.println ("מבחן CAP1188!");
אם (! cap.begin ()) {
Serial.println ("CAP1188 לא נמצא"); בעוד (1); } Serial.println ("CAP1188 נמצא!"); }
לולאת חלל () {
// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~ uint8_t touched = cap.touched (); if (נגע == 0) {if ((לא חתום ארוך) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (פיקסלים. צבע (0, 255, 125)); }} אחר {if ((לא חתום ארוך) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (פיקסלים. צבע (100, 0, 150)); }}
}
void colorWipe (uint32_t c) {
// NEOPIXEL ~~~~~~~~~~~~~~~~~~ // נפטר מהצבע פיקסלים. setPixelColor (currentPixel, c); pixels.setPixelColor (currentPixel - 1, pixels. Color (0, 0, 0)); pixels.show (); currentPixel ++; אם (currentPixel == NUMPIXELS) {currentPixel = 0; pixels.setPixelColor (7, pixels. Color (0, 0, 0));
}
}
נסה את זה ותהנה! כפי שאתה רואה כאשר אתה נוגע בכבל C1 הצבע משתנה. (אם זו לא הפעם הראשונה, נתק את ה- Arduino שלך וחבר אותו למחשב שלך.)
שלב 2: שלב 2: הוספת סאונד
בעזרת הדרכה שימושית הכנתי את זה. ההדרכה להלן:
github.com/xitangg/-Pirates-of-the-Caribbe…
הגיע הזמן לתפוס את הבאזר שלך! שים את (-) של הזמזם באחד מסיכות ה- GND ואת (+) בסיכה 10 ~
זהו בערך, עכשיו הגיע הזמן להריץ שוב את הקוד ולשמוע את המנגינה הנהדרת של שודדי הקאריביים! עכשיו תיהנו מהבדיקות!
// ג'וליה אמינק // קוד אור, מגע ומוסיקה לעץ האינטראקטיבי 2018-01-19 // מיוצר בשימוש ב- Adafruit Neopixel ו- Captive Touch (CAP1188) (יש להתקין) והנורית מהבהבת ללא דיחוי
// NEOPIXEL ~~~~~~~~~~~~~~~~~~~ כולל#
#define PIXELSPIN 6
#הגדר NUMPIXELS 8 #הגדר זמן כיול 20000
Adafruit_NeoPixel פיקסלים = Adafruit_NeoPixel (NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);
פיקסלים ארוכים ללא סימן מרווח = 500; // הזמן שאנחנו צריכים לחכות
colorWipePreviousMillis ארוך ללא חתימה = 0; תיאטרון ארוך לא חתוםChasePreviousMillis = 0; קשת ארוכה לא חתומהPreviousMillis = 0; rainbowCyclesPreviousMillis לא חתום ללא סימן;
int theaterChaseQ = 0;
uint16_t currentPixel = 0; // באיזה פיקסל אנחנו עובדים
// מוזיקה ~~~~~~~~~~~~~~~~~~~~~~~
זמזם int int = 10; // הגדר סיכה 10, יכול להשתמש בסיכות PWM אחרות (5, 6 או 9) // לא ניתן להשתמש בסיכות 3 ו -11 בעת שימוש בפונקציית הטון ב- Arduino Uno const int songspeed = 1.5; // שנה ל -2 לגרסה איטית יותר של השיר, ככל שהמספר גדול יותר כך השיר איטי יותר // ************************** ************** #define NOTE_C4 262 // הגדרת תדר הערה #הגדר NOTE_D4 294 #הגדר NOTE_E4 330 #הגדר NOTE_F4 349 #הגדר NOTE_G4 392 #הגדר NOTE_A4 440 #הגדר NOTE_B4 494 #הגדר NOTE_C5 523 #הגדר NOTE_D5 587 #הגדר NOTE_E5 659 #הגדר NOTE_F5 698 #הגדר NOTE_G5 784 #הגדר NOTE_A5 880 #הגדר NOTE_B5 988 // *********************** ****************** int notes = {// הערה של השיר, 0 הוא מנוחה/דופק NOTE_E4, NOTE_G4, NOTE_A4, NOTE_A4, 0, NOTE_A4, NOTE_B4, NOTE_C5, NOTE_C5, 0, NOTE_C5, NOTE_D5, NOTE_B4, NOTE_B4, 0, NOTE_A4, NOTE_G4, NOTE_A4, 0}; // ************************************** int duration = { / /משך כל הערה (ב- ms) הערת רבע מוגדרת ל- 250 ms 125, 125, 250, 125, 125, 125, 250, 125, 125, 125, 125, 125, 125, 125, 125, 125, 375, 125};
// TOUCH ~~~~~~~~~~~~~~~~~~~~~~~
#include #include #include
// איפוס סיכה משמש ל- I2C או SPI
#הגדר CAP1188_RESET 9
// סיכת CS משמשת לתוכנות או חומרי SPI
#הגדר CAP1188_CS 10
// אלה מוגדרים עבור תוכנת SPI, עבור חומרת SPI, בדוק את
// סיכות SPI של הלוח בתיעוד של Arduino #הגדר CAP1188_MOSI 11 #הגדר CAP1188_MISO 12 #הגדר CAP1188_CLK 13
// השתמש ב- I2C, אין סיכת איפוס!
Adafruit_CAP1188 cap = Adafruit_CAP1188 ();
הגדרת בטל () {
// MUSIC ~~~~~~~~~~~~~~~~~~~~~~ for (int i = 0; i <203; i ++) {// 203 הוא המספר הכולל של תו מוסיקה ב- השיר int wait = משך * מהירות השירים; טון (זמזם, הערות , המתן); // צליל (סיכה, תדירות, משך);} // נעשה שימוש בפיגור כך שהוא לא יעבור ללולאה הבאה לפני שהצליל יושמע // תוכל ללחוץ על אפס ב- Arduino כדי להפעיל את השיר מחדש // NEOPIXEL ~~~ ~~~~~~~~~~~~~~~ currentPixel = 0; פיקסלים.התחל (); // זה מאתחל את ספריית NeoPixel. pixels.show (); // פעולה זו שולחת את צבע הפיקסל המעודכן לחומרה.
// מגע ~~~~~~~~~~~~~~~~~~~~~~~
Serial.begin (300); Serial.println ("מבחן CAP1188!"); if (! cap.begin ()) {Serial.println ("CAP1188 לא נמצא"); בעוד (1); } Serial.println ("CAP1188 נמצא!");
}
לולאת חלל () {
// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~ uint8_t touched = cap.touched (); if (נגע == 0) {if ((ללא סימן ארוך) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (פיקסלים. צבע (0, 255, 125)); }} אחר {if ((לא חתום ארוך) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (פיקסלים. צבע (100, 0, 150)); }}
עבור (int i = 0; i = pixelsInterval) {
colorWipePreviousMillis = millis (); colorWipe (פיקסלים. צבע (0, 255, 125)); }} אחר {if ((לא חתום ארוך) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis (); colorWipe (פיקסלים. צבע (100, 0, 150)); }}
עיכוב (המתנה);
}
}
void colorWipe (uint32_t c) {
// NEOPIXEL ~~~~~~~~~~~~~~~~~~ // נפטר מהצבע פיקסלים. setPixelColor (currentPixel, c); pixels.setPixelColor (currentPixel-1, pixels. Color (0, 0, 0)); pixels.show (); currentPixel ++; אם (currentPixel == NUMPIXELS) {currentPixel = 0; pixels.setPixelColor (7, pixels. Color (0, 0, 0));
}
}
שלב 3: שלב נוסף: הפיכת הגדם ל'ארדואינו מוכן '
אם אתה מחליט להשתמש בגדם עץ, עליך לבצע את הפעולות הבאות.
- קבל גדם עץ (קיבלתי אחד מעץ חג המולד הישן בחינם)
- מדוד את הארדואינו שלך וראה כיצד אתה רוצה שהחיווט יהיה בתוך גדם העץ
- חלול את הגדם (השתמשתי במכונת מקדחה מבית הספר)
- משייפים את הקצוות המחוספסים
- הוסף פרטים קטנים ומהנים
פרטים שהוספתי היה לוגו קטן שיצרתי בעזרת חותך לייזר. ערמתי גם את כל מוצרי האלקטרוניקה שלי על מקל בתוך העץ שלי והוספתי ממולאים של בעלי חיים מבחוץ כדי לתת לאור לעבור ולתת את הרכות הנוספת הקטנה הזו.