جدول المحتويات:

Arduino MusicStump: خفيف ، لمسة أسيرة وجرس: 3 خطوات
Arduino MusicStump: خفيف ، لمسة أسيرة وجرس: 3 خطوات

فيديو: Arduino MusicStump: خفيف ، لمسة أسيرة وجرس: 3 خطوات

فيديو: Arduino MusicStump: خفيف ، لمسة أسيرة وجرس: 3 خطوات
فيديو: 21 November 2022 2024, شهر نوفمبر
Anonim
Arduino MusicStump: خفيف ، لمسة أسيرة وجرس
Arduino MusicStump: خفيف ، لمسة أسيرة وجرس

شجرة تفاعلية مع حلقة LED في الأعلى وجرس لإصدار صوت ومستشعر لمس أسير بالداخل يغير اللون عند لمسه. لجعل هذا الشيء الصغير الممتع ، ستحتاج إلى ما يلي:

الإلكترونيات: - 1x Arduino Uno

- كبلات 15

- 1x لحام الحديد برأس مستدير

- 1x Adafruit 8-key captive touch (CAP1188)

- 1x كابل طاقة اردوينو

- حلقة LED 1x 8

- 1x الجرس

- 1x مسدس الغراء الساخن

- قم بتنزيل مكتبة CAP1188

- قم بتنزيل مكتبة Adafruit Neopixel

إضافي (غلاف):

- 1x جذع شجرة

- 1x عصا للداخل

- طبق خشبي لوضعه كله على / في

- حشوة حيوانات محشية للخارج

يمكنك أيضًا استخدام شيء آخر مثل الخارج ، كن مبدعًا!

لنبدأ الآن …

الخطوة 1: الخطوة 1: حلقة LED بلمسة أسيرة

الخطوة 1: حلقة LED بلمسة أسيرة
الخطوة 1: حلقة LED بلمسة أسيرة

الآن إذا كنت محظوظًا ، فإن حلقة LED الخاصة بك بها بالفعل دبابيس متصلة بها. إذا لم يكن الأمر كذلك ، فقد حان وقت اللحام!

الأشياء التي سنستخدمها لهذا المشروع هي:

- DI (دخل رقمي ، دبوس 6 ~

- 5 فولت (للطاقة ، 5 فولت دبوس)

- GND (الأرض ، دبوس GND)

هذه هي حلقة LED الآن اللمسة الأسيرة.

ضعه في لوح التجارب وقم بتوصيل كل شيء على النحو التالي: SDA / MISO في دبوس (تمثيلي في) A4SCK في دبوس (تناظري في) A5VIN في (طاقة) 5VGND في كابل GND pin1x في C1 (على اللمس الأسير نفسه)

الآن للاختبار ، قم بتحميل الكود التالي إلى Arduino الخاص بك:

// Julia Emmink // رمز الضوء واللمس للشجرة التفاعلية 19 /// مصنوع باستخدام Adafruit Neopixel و Adafruit captive touch (CAP1188) (سيتم تثبيته) ويومض LED بدون تأخير

// NEOPIXEL ~~~~~~~~~~~~~~~~~~

#يشمل

#define PIXELSPIN 6 // مكان توصيل حلقة LED

#define NUMPIXELS 8 // كمية المصابيح الموجودة على حلقتك #define CALIBRATIONTIME 20000

Adafruit_NeoPixel pixels = Adafruit_NeoPixel (NUMPIXELS، PIXELSPIN، NEO_GRB + NEO_KHZ800) ؛

عدد البكسلات الطويلة غير الموقعة: الفاصل الزمني = 500 ؛ // الوقت الذي نحتاجه للانتظار

colorWipePreviousMillis طويلة بدون توقيع = 0 ؛ theatreChasePreviousMillis طويلة غير موقعة = 0 ؛ قوس قزح طويل بدون توقيع قوس قزح طويل بدون توقيع

int theatreChaseQ = 0 ؛

uint16_t currentPixel = 0 ؛ // ما البكسل الذي نعمل عليه

// TOUCH ~~~~~~~~~~~~~~~~~~~~~~

# تضمين # تضمين # تضمين

// يتم استخدام إعادة تعيين رقم التعريف الشخصي لـ I2C أو SPI

#define CAP1188_RESET 9

// يستخدم CS pin للبرامج أو الأجهزة SPI

#define CAP1188_CS 10

// تم تعريفها لـ Software SPI ، بالنسبة لـ SPI للأجهزة ، تحقق من

// دبابيس SPI للوحة في وثائق Arduino #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// استخدم I2C ، بدون إعادة تعيين دبوس!

Adafruit_CAP1188 cap = Adafruit_CAP1188 () ؛

الإعداد باطل() {

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ currentPixel = 0 ؛ pixels.begin () ، // يؤدي هذا إلى تهيئة مكتبة NeoPixel. pixels.show () ، // هذا يرسل لون البكسل المحدث إلى الجهاز.

// TOUCH ~~~~~~~~~~~~~~~~~~~~~~

Serial.begin (300) ؛ Serial.println ("اختبار CAP1188!") ؛

إذا (! cap.begin ()) {

Serial.println ("CAP1188 غير موجود") ؛ بينما (1) ؛ } Serial.println ("تم العثور على CAP1188!")؛ }

حلقة فارغة () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~~ uint8_t touched = cap.touched () ؛ إذا (تم اللمس == 0) {if ((بدون توقيع طويل) (ميليس () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis () ؛ مسح اللون (بكسل ، لون (0 ، 255 ، 125)) ؛ }} else {if ((بدون توقيع طويل) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis ()؛ مسح اللون (بكسل.اللون (100 ، 0 ، 150)) ؛ }}

}

لون باطل مسح (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 ، بكسل ، اللون (0 ، 0 ، 0)) ؛

}

}

اختبرها واستمتع! كما ترى عندما تلمس سلك C1 يتغير اللون. (إذا لم تكن هذه هي المرة الأولى ، فافصل بطاقة Arduino وأعد توصيلها بجهاز الكمبيوتر.)

الخطوة الثانية: الخطوة الثانية: إضافة الصوت

باستخدام برنامج تعليمي مفيد صنعت هذا. البرنامج التعليمي أدناه:

github.com/xitangg/-Pirates-of-the-Caribbe…

حان الوقت للاستيلاء على الجرس الخاص بك! ضع (-) الجرس في أحد دبابيس GND و (+) في السن 10 ~

هذا كل ما في الأمر ، حان الوقت الآن لتشغيل الكود مرة أخرى والاستماع إلى نغمة Pirates of the Caribbean الجميلة! الآن استمتع بالاختبار!

// Julia Emmink // رمز الضوء واللمس والموسيقى للشجرة التفاعلية 2018-01-19 // مصنوع باستخدام Adafruit Neopixel and Captive Touch (CAP1188) (سيتم تثبيته) ويومض LED بدون تأخير

// NEOPIXEL ~~~~~~~~~~~~~~~~~~ # تشمل

#define PIXELSPIN 6

#define NUMPIXELS 8 #define CALIBRATIONTIME 20000

Adafruit_NeoPixel pixels = Adafruit_NeoPixel (NUMPIXELS، PIXELSPIN، NEO_GRB + NEO_KHZ800) ؛

عدد البكسلات الطويلة غير الموقعة: الفاصل الزمني = 500 ؛ // الوقت الذي نحتاجه للانتظار

colorWipePreviousMillis طويلة بدون توقيع = 0 ؛ theatreChasePreviousMillis طويلة غير موقعة = 0 ؛ قوس قزح طويل بدون توقيع قوس قزح طويل بدون توقيع

int theatreChaseQ = 0 ؛

uint16_t currentPixel = 0 ؛ // ما البكسل الذي نعمل عليه

// MUSIC ~~~~~~~~~~~~~~~~~~~~~~

جرس كثافة العمليات = 10 ؛ // تحديد دبوس 10 ، يمكن استخدام دبابيس PWM أخرى (5 أو 6 أو 9) // لا يمكن استخدام دبابيس الملاحظة 3 و 11 عند استخدام وظيفة النغمة في Arduino Uno const int songspeed = 1.5 ؛ // غيّر إلى 2 لنسخة أبطأ من الأغنية ، فكلما زاد الرقم كانت الأغنية أبطأ // ***************************** **************** #define NOTE_C4 262 // تحديد تردد الملاحظة #define NOTE_D4 294 #define NOTE_E4 330 #define NOTE_F4 349 #define NOTE_G4 392 #define NOTE_A4 440 #define NOTE_B4 494 #define NOTE_C5 523 #define NOTE_D5 587 #define NOTE_E5 659 #define NOTE_F5 698 #define NOTE_G5 784 #define NOTE_A5 880 #define NOTE_B5 988 // ************************* ******************** ملاحظات int = {// ملاحظة الأغنية ، 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}؛ // ******************************************* مدة كثافة العمليات = {/ / مدة كل ملاحظة (بالمللي ثانية) يتم تعيين ربع ملاحظة على 250 مللي ثانية 125 ، 125 ، 250 ، 125 ، 125 ، 125 ، 125 ، 250 ، 125 ، 125 ، 125 ، 125 ، 250 ، 125 ، 125 ، 125 ، 125 ، 375 ، 125} ؛

// TOUCH ~~~~~~~~~~~~~~~~~~~~~~

# تضمين # تضمين # تضمين

// يتم استخدام إعادة تعيين رقم التعريف الشخصي لـ I2C أو SPI

#define CAP1188_RESET 9

// يستخدم CS pin للبرامج أو الأجهزة SPI

#define CAP1188_CS 10

// تم تعريفها لـ Software SPI ، بالنسبة لـ SPI للأجهزة ، تحقق من

// دبابيس SPI للوحة في وثائق Arduino #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// استخدم I2C ، بدون إعادة تعيين دبوس!

Adafruit_CAP1188 cap = Adafruit_CAP1188 () ؛

الإعداد باطل() {

// MUSIC ~~~~~~~~~~~~~~~~~~~~~~ لـ (int i = 0؛ i <203؛ i ++) {// 203 هو إجمالي عدد النوتات الموسيقية في الأغنية انتظرت = المدة * songspeed ؛ نغمة (جرس ، ملاحظات ، انتظر) ؛ // tone (pin ، التردد ، المدة) ؛} // يتم استخدام التأخير حتى لا تنتقل إلى الحلقة التالية قبل انتهاء تشغيل النغمة // يمكنك النقر فوق إعادة تعيين على Arduino لإعادة تشغيل الأغنية // NEOPIXEL ~~~ ~~~~~~~~~~~~~~~ currentPixel = 0 ؛ pixels.begin () ، // يؤدي هذا إلى تهيئة مكتبة NeoPixel. pixels.show () ، // هذا يرسل لون البكسل المحدث إلى الجهاز.

// TOUCH ~~~~~~~~~~~~~~~~~~~~~~

Serial.begin (300) ؛ Serial.println ("اختبار CAP1188!") ؛ if (! cap.begin ()) {Serial.println ("CAP1188 غير موجود")؛ بينما (1) ؛ } Serial.println ("تم العثور على CAP1188!")؛

}

حلقة فارغة () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~~ uint8_t touched = cap.touched () ؛ إذا (تم اللمس == 0) {if ((بدون توقيع طويل) (ميليس () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis () ؛ مسح اللون (بكسل ، لون (0 ، 255 ، 125)) ؛ }} else {if ((بدون توقيع طويل) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis ()؛ مسح اللون (بكسل.اللون (100 ، 0 ، 150)) ؛ }}

لـ (int i = 0 ؛ i = pixelsInterval) {

colorWipePreviousMillis = ميلي () ، مسح اللون (بكسل ، لون (0 ، 255 ، 125)) ؛ }} else {if ((بدون توقيع طويل) (millis () - colorWipePreviousMillis)> = pixelsInterval) {colorWipePreviousMillis = millis ()؛ مسح اللون (بكسل.اللون (100 ، 0 ، 150)) ؛ }}

تأخير (انتظر) ؛

}

}

لون باطل مسح (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 ، بكسل ، اللون (0 ، 0 ، 0)) ؛

}

}

الخطوة 3: خطوة إضافية: جعل الجذع جاهزًا لـ Arduino

خطوة إضافية: جعل الجذع جاهزًا لـ Arduino
خطوة إضافية: جعل الجذع جاهزًا لـ Arduino
خطوة إضافية: جعل الجذع جاهزًا لـ Arduino
خطوة إضافية: جعل الجذع جاهزًا لـ Arduino
خطوة إضافية: جعل الجذع جاهزًا لـ Arduino
خطوة إضافية: جعل الجذع جاهزًا لـ Arduino

إذا قررت استخدام جذع شجرة ، فعليك القيام بما يلي.

  • احصل على جذع شجرة (حصلت على واحدة من شجرة عيد الميلاد القديمة مجانًا)
  • قم بقياس Arduino الخاص بك وشاهد كيف تريد الحصول على الأسلاك في جذع الشجرة
  • أجوف الجذع (استخدمت آلة حفر من المدرسة)
  • صنفر الحواف الخشنة
  • أضف تفاصيل صغيرة ممتعة

التفاصيل التي أضفتها كان شعارًا صغيرًا صنعته باستخدام أداة القطع بالليزر. لقد قمت أيضًا بتكديس جميع أجهزتي الإلكترونية بالداخل على عصا داخل شجرتى وأضفت حشوة حيوانات محشوة من الخارج للسماح بمرور الضوء وإضفاء نعومة إضافية صغيرة.

موصى به: