Mundarija:

Arduino MusicStump: Yorug'lik, tutqun teginish va buzzer: 3 qadam
Arduino MusicStump: Yorug'lik, tutqun teginish va buzzer: 3 qadam

Video: Arduino MusicStump: Yorug'lik, tutqun teginish va buzzer: 3 qadam

Video: Arduino MusicStump: Yorug'lik, tutqun teginish va buzzer: 3 qadam
Video: Stomp Shield for Arduino 2024, Noyabr
Anonim
Arduino MusicStump: Yorug'lik, tutqun teginish va buzzer
Arduino MusicStump: Yorug'lik, tutqun teginish va buzzer

Yuqorida LED halqali interaktiv daraxt, ovoz chiqaruvchi signal va signalni ushlab turadigan sensor, uning rangi o'zgaradi. Kichkina narsani qiziqarli qilish uchun sizga quyidagilar kerak bo'ladi:

Elektronika:- 1 marta Arduino Uno

- 15x kabel

- dumaloq uchi bo'lgan 1x lehim temir

- 1 ta Adafruit 8 tugmachali tutqich (CAP1188)

- 1 ta Arduino quvvat kabeli

- 1x8 LED halqa

- 1x buzzer

- 1x issiq yopishtiruvchi qurol

-CAP1188 kutubxonasini yuklab oling

- Adafruit Neopixel kutubxonasini yuklab oling

Qo'shimcha (korpus):

- 1x daraxt novdasi

- Ichkariga 1x tayoq

- barchasini joylashtirish/joylashtirish uchun yog'och lagan

- Tashqi tomondan to'ldirilgan hayvonlarni to'ldirish

Siz boshqa narsani tashqarida ishlatishingiz mumkin, ijodiy bo'ling!

Endi boshlaylik…

1 -qadam: 1 -qadam: Tutqichli sensorli LED halqa

1 -qadam: Tutqichli sensorli LED halqa
1 -qadam: Tutqichli sensorli LED halqa

Agar omadingiz bo'lsa, sizning LED halqangizga allaqachon pinlar o'rnatilgan. Aks holda, payvandlash vaqti keldi!

Biz ushbu loyihada foydalanadigan narsalar:

- DI (Raqamli kirish, pin 6 ~

- 5V (quvvat uchun, 5V pin)

- GND (yer, GND pin)

Hozircha bu LED halqa.

Uni taxtaga joylashtiring va hamma narsani quyidagicha ulang: SDA/MISO pinli (analogli) A4SCK pinli (analogli) A5VINli (quvvatli) 5VGNDli GND pin1x kabelli C1 (Captive touch -ning o'zida)

Endi test qilish uchun Arduino -ga quyidagi kodni yuklang:

// Julia Emmink // Interaktiv daraxt uchun yorug'lik va sensorli kod 19 /// Adafruit Neopixel va Adafruit asir sensorlari (CAP1188) yordamida o'rnatiladi (LED o'rnatiladi) va kechiktirmasdan miltillaydi.

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

#qo'shing

#dexin PIXELSPIN 6 // LED halqasini ulagan joy

#Depine NUMPIXELS 8 // Sizning halqangizdagi LEDlar sonini belgilang #CALIBRATIONTIME 20000 ni aniqlang

Adafruit_NeoPixel piksellari = Adafruit_NeoPixel (NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);

belgisiz uzun piksellar oralig'i = 500; // biz kutishimiz kerak bo'lgan vaqt

belgisiz uzun rangWipePreviousMillis = 0; imzosiz uzun teatrChasePreviousMillis = 0; imzosiz uzun kamalakPreviousMillis = 0; belgisiz uzun kamalakCyclesPreviousMillis = 0;

int teatrChaseQ = 0;

uint16_t currentPixel = 0; // biz qaysi piksel ustida ishlayapmiz

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

#qo'shish #qo'shish #qo'shish

// PIN -kodni tiklash I2C yoki SPI uchun ishlatiladi

#ta'rifi CAP1188_RESET 9

// CS pin dasturiy ta'minot yoki apparat SPI uchun ishlatiladi

#ta'rif CAP1188_CS 10

// Bular SPI dasturiy ta'minoti uchun, SPI apparati uchun aniqlangan

// Arduino hujjatlaridagi boshqaruv kengashi SPI pinlari #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// I2C -dan foydalaning, qayta tiklash pimi yo'q!

Adafruit_CAP1188 qopqoq = Adafruit_CAP1188 ();

bo'sh o'rnatish () {

// NEOPIXEL ~~~~~~~~~~~~~~~~~ currentPixel = 0; piksel.begin (); // Bu NeoPixel kutubxonasini ishga tushiradi. piksel.show (); // Bu yangilangan piksel rangini uskunaga yuboradi.

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

Serial.begin (300); Serial.println ("CAP1188 testi!");

agar (! cap.begin ()) {

Serial.println ("CAP1188 topilmadi"); vaqt (1); } Serial.println ("CAP1188 topildi!"); }

void loop () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~~~ uint8_t touch = cap.touched (); if (tegilgan == 0) {if ((imzosiz uzun) (millis () - colorWipePreviousMillis)> = piksellar oralig'i) {colorWipePreviousMillis = millis (); colorWipe (piksel. Rang (0, 255, 125)); }} boshqa {agar ((imzosiz uzun) (millis () - colorWipePreviousMillis)> = piksellar oralig'i) {colorWipePreviousMillis = millis (); colorWipe (piksel. Rang (100, 0, 150)); }}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~ // Rangli piksellardan qutuladi.setPixelColor (currentPixel, c); pixel.setPixelColor (currentPixel - 1, piksel. Color (0, 0, 0)); piksel.show (); currentPixel ++; agar (currentPixel == NUMPIXELS) {currentPixel = 0; piksel.setPixelColor (7, piksel. Color (0, 0, 0));

}

}

Sinab ko'ring va zavqlaning! Ko'rib turganingizdek, C1 simini tekkizganingizda rang o'zgaradi. (Agar birinchi marta bunday bo'lmasa, Arduino -ni rozetkadan chiqarib, qayta kompyuteringizga ulang.)

2 -qadam: 2 -qadam: Ovoz qo'shish

Qo'llanmani ishlatib, men buni qildim. Qo'llanma quyida keltirilgan:

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

Buzzerni olish vaqti keldi! Buzzerning (-) belgisini GND pinlaridan biriga va (+) pin 10 ~ ga qo'ying

Gap shundaki, endi kodni qayta ishga tushirish va Karib dengizi qaroqchilari qo'shig'ini eshitish vaqti keldi! Endi qiziqarli sinovdan o'ting!

// Julia Emmink // Interaktiv daraxt uchun yorug'lik, teginish va musiqa kodlari 2018-01-19 // Adafruit Neopixel va Captive Touch (CAP1188) yordamida o'rnatiladi (LED o'rnatiladi) va kechiktirmasdan miltillaydi.

// NEOPIXEL ~~~~~~~~~~~~~~~~~#o'z ichiga oladi

#PIXELSPIN 6 ni aniqlang

#define NUMPIXELS 8 #CALIBRATIONTIME 20000 ni aniqlang

Adafruit_NeoPixel piksellari = Adafruit_NeoPixel (NUMPIXELS, PIXELSPIN, NEO_GRB + NEO_KHZ800);

belgisiz uzun piksellar oralig'i = 500; // biz kutishimiz kerak bo'lgan vaqt

belgisiz uzun rangWipePreviousMillis = 0; imzosiz uzun teatrChasePreviousMillis = 0; imzosiz uzun kamalakPreviousMillis = 0; belgisiz uzun kamalakCyclesPreviousMillis = 0;

int teatrChaseQ = 0;

uint16_t currentPixel = 0; // biz qaysi piksel ustida ishlaymiz

// MUSIQA ~~~~~~~~~~~~~~~~~~~~~~

const int buzzer = 10; // 10 -pinni belgilang, boshqa PWM pinlarini ishlatishi mumkin (5, 6 yoki 9) // Arduino Uno const int songspeed = 1.5 da ohang funktsiyasidan foydalanganda 3 va 11 -eslatma pinlarini ishlatib bo'lmaydi; // Qo'shiqning sekin versiyasi uchun 2 ga o'zgartiring, qanchalik ko'p bo'lsa, qo'shiq sekinroq bo'ladi // *************************** ************** #ta'rifi NOTE_C4 262 // Eslatmalar chastotasini belgilash #ta'rifi NOTE_D4 294 #foydalanish NOTE_E4 330 #foydalanish NOTE_F4 349 #ta'riflash NOTE_G4 392 #ta'rifi NOTE_A4 440 #belgilash NOTE_B4 494 #ta'rifi NOTE_C5 523 #fikr NOTE_D5 587 #ta'rif NOTE_E5 659 #fikr NOTE_F5 698 #devetine NOTE_G5 784 #devetine NOTE_A5 880 #devetine NOTE_B5 988 // *********************** ****************** int notes = {// Qo'shiqning eslatmasi, 0 - dam olish/zarba 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 muddati = { / /har bir eslatmaning davomiyligi (msda) Choraklik eslatma 250 ms 125, 125, 250, 125, 125, 125, 125, 250, 125, 125, 125, 125, 125, 250, 125, 125, 125, 125, 375, 125};

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

#qo'shish #qo'shish #qo'shish

// PIN -kodni tiklash I2C yoki SPI uchun ishlatiladi

#ta'rifi CAP1188_RESET 9

// CS pin dasturiy ta'minot yoki apparat SPI uchun ishlatiladi

#ta'rif CAP1188_CS 10

// Bular SPI dasturiy ta'minoti uchun, SPI apparati uchun aniqlangan

// Arduino hujjatlaridagi boshqaruv kengashining SPI pinlari #define CAP1188_MOSI 11 #define CAP1188_MISO 12 #define CAP1188_CLK 13

// I2C -dan foydalaning, qayta tiklash pimi yo'q!

Adafruit_CAP1188 qopqoq = Adafruit_CAP1188 ();

bo'sh o'rnatish () {

// MUSIC ~~~~~~~~~~~~~~~~~~~~~~ for for (int i = 0; i <203; i ++) {// 203 - bu musiqiy notalarning umumiy soni. qo'shiq int kutish = davomiyligi * qo'shiq tezligi; ohang (buzzer, eslatmalar , kuting); // ohang (pin, chastota, davomiylik);} // kechiktirish ishlatiladi, shuning uchun ohang ijro etilmaguncha keyingi tsiklga o'tmaydi // Qo'shiqni qayta ijro etish uchun Arduino -da reset tugmasini bosishingiz mumkin // NEOPIXEL ~~~ ~~~~~~~~~~~~~~~~ currentPixel = 0; piksel.begin (); // Bu NeoPixel kutubxonasini ishga tushiradi. piksel.show (); // Bu yangilangan piksel rangini uskunaga yuboradi.

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

Serial.begin (300); Serial.println ("CAP1188 testi!"); if (! cap.begin ()) {Serial.println ("CAP1188 topilmadi"); vaqt (1); } Serial.println ("CAP1188 topildi!");

}

void loop () {

// TOUCH + NEOPIXEL ~~~~~~~~~~~~~~~~~~~~~~~ uint8_t touch = cap.touched (); if (tegilgan == 0) {if ((imzosiz uzun) (millis () - colorWipePreviousMillis)> = piksellar oralig'i) {colorWipePreviousMillis = millis (); colorWipe (piksel. Rang (0, 255, 125)); }} boshqa {agar ((imzosiz uzun) (millis () - colorWipePreviousMillis)> = piksellar oralig'i) {colorWipePreviousMillis = millis (); colorWipe (piksel. Rang (100, 0, 150)); }}

uchun (int i = 0; i = piksellar oralig'i) {

colorWipePreviousMillis = millis (); colorWipe (piksel. Rang (0, 255, 125)); }} boshqa {agar ((imzosiz uzun) (millis () - colorWipePreviousMillis)> = piksellar oralig'i) {colorWipePreviousMillis = millis (); colorWipe (piksel. Rang (100, 0, 150)); }}

kechikish (kutish);

}

}

void colorWipe (uint32_t c) {

// NEOPIXEL ~~~~~~~~~~~~~~~~~ // Rangli piksellardan qutuladi.setPixelColor (currentPixel, c); piksel.setPixelColor (currentPixel-1, piksellar. Color (0, 0, 0)); piksel.show (); currentPixel ++; agar (currentPixel == NUMPIXELS) {currentPixel = 0; piksel.setPixelColor (7, piksel. Color (0, 0, 0));

}

}

3 -qadam: Qo'shimcha qadam: "Arduino" ni qoqib qo'yish

Qo'shimcha qadam: "Arduino tayog'ini" tayyorlash
Qo'shimcha qadam: "Arduino tayog'ini" tayyorlash
Qo'shimcha qadam: "Arduino tayog'ini" tayyorlash
Qo'shimcha qadam: "Arduino tayog'ini" tayyorlash
Qo'shimcha qadam: "Arduino tayog'ini" tayyorlash
Qo'shimcha qadam: "Arduino tayog'ini" tayyorlash

Agar siz daraxt shoxidan foydalanishga qaror qilsangiz, quyidagilarni qilishingiz kerak.

  • Daraxt novdasini oling (men eski Rojdestvo daraxtidan tekin oldim)
  • Arduino -ni o'lchab ko'ring va daraxt shoxida qanday qilib sim o'tkazishni xohlayotganingizni ko'ring
  • Qopqog'ini oching (men maktabdan burg'ulash mashinasini ishlatardim)
  • Qirrali qirralarni qumlang
  • Qiziqarli kichik tafsilotlarni qo'shing

Men qo'shgan tafsilotlar - bu kichik logotip, men uni lazerni kesuvchi bilan yasaganman. Shuningdek, men o'zimning barcha elektron jihozlarimni daraxtim ichidagi tayoqchaga joylashtirdim va tashqariga to'ldirilgan hayvonlarni to'ldirib qo'ydim, shunda yorug'lik o'tib ketadi va bu mayda qo'shimcha yumshoqlik beradi.

Tavsiya: