Mundarija:
- 1 -qadam: 1 -qadam: Tutqichli sensorli LED halqa
- 2 -qadam: 2 -qadam: Ovoz qo'shish
- 3 -qadam: Qo'shimcha qadam: "Arduino" ni qoqib qo'yish
Video: Arduino MusicStump: Yorug'lik, tutqun teginish va buzzer: 3 qadam
2024 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2024-01-30 13:28
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
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
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:
YN160 Pro LED yoritgichli yorug'lik chiroqlari, o'zgaruvchan toklar va yorug'lik chiroqlari: 8 qadam
YN160 Pro LED yoritgichli yorug'lik manbai (AC)
Sirli yorug'lik qutisi (tungi yorug'lik): 4 qadam
Sirli yorug'lik qutisi (tungi yorug'lik): Va bu juda oson qiziqarli loyiha, bu loyiha https://www.instructables.com/id/Arduino-Traffic-L…, lekin men allaqachon Men asl saytning tuzilishini o'zgartirdim, men qo'shimcha yoritgichlar qo'shaman va uni to'plash uchun poyabzal qutisini ishlataman
O'zgaruvchan yorug'lik sezuvchi tungi yorug'lik: 8 qadam (rasmlar bilan)
O'zgaruvchan yorug'lik sezgichli tungi yorug'lik: Bu ko'rsatma qo'lda o'chirish uchun tungi yorug'lik sensori qanday buzilganligini ko'rsatadi. Diqqat bilan o'qing, har qanday ochiq sxemalarni yodda tuting va agar kerak bo'lsa, birlikni sinovdan o'tkazishdan oldin o'z hududingizni o'chiring
Yorug'lik sensori bilan harakatni faollashtiradigan yorug'lik tugmasi: 5 qadam
Yorug'lik sensori bilan harakatni faollashtiradigan yorug'lik tugmasi: Harakatlanuvchi yorug'lik tugmasi uyda ham, ofisda ham juda ko'p qo'llanmalarga ega. Biroq, bu yorug'lik sensori bilan jihozlanishning qo'shimcha afzalliklari bo'lib, bu yorug'lik faqat tunda yoqilishi mumkin
Yorug'lik va tovush effektlari bilan Arduino asosidagi yorug'lik chiroqlari: 14 qadam (rasmlar bilan)
Yorug'lik va tovush effektlari bilan Arduino asosidagi Lightsaber: Salom jedi! Bu ko'rsatma kinofilmda bo'lgani kabi ko'rinadigan, ovoz chiqaradigan va bajaradigan chiroqni yasash haqida. Yagona farq - bu metallni kesolmaydi: (Bu qurilma Arduino platformasiga asoslangan va men unga juda ko'p funktsiyalar va funktsiyalarni beraman, u