![Arduino eshik qo'ng'irog'i: 4 qadam Arduino eshik qo'ng'irog'i: 4 qadam](https://i.howwhatproduce.com/images/001/image-756-j.webp)
Mundarija:
2025 Muallif: John Day | [email protected]. Oxirgi o'zgartirilgan: 2025-01-23 15:14
![Arduino eshik qo'ng'irog'i Arduino eshik qo'ng'irog'i](https://i.howwhatproduce.com/images/001/image-756-1-j.webp)
Bugun men sizga Arduino yordamida eshik qo'ng'irog'ini yasashni ko'rsataman. Bu eshik qo'ng'irog'i qo'shiqlar kutubxonasidan tasodifiy ohangni ijro etadi. Siz eshik qo'ng'irog'ini sozlashingiz va undan ham ko'proq qo'shiq qo'shishingiz mumkin. Uni yotoqxonangiz, sinfingiz, ofisingiz yoki hatto old eshigingizdan tashqariga o'rnating!
Ta'minot:
- Arduino Uno (boshqa turlarning ko'pchiligi shunday qiladi)
- Dasturlash uchun Arduino IDE o'rnatilgan kompyuter
- Arduino dasturlash uchun USB-A-USB-B kabeli
- Non paneli
- 4x o'tish simlari
- Tugma yoki boshqa tugma
- 10 kOhm qarshilik
- Passiv signal (masalan, piezoelektrik karnay)
-
Doimiy o'rnatish uchun:
- Arduino -ni quvvatlantirish uchun 9V shahar quvvat manbai yoki 9V batareya
- Tashqi eshikni ulash tugmasi uchun 2x uzun simlar
1 -qadam: Uskuna sozlamalari
![Uskunani sozlash Uskunani sozlash](https://i.howwhatproduce.com/images/001/image-756-2-j.webp)
![Uskunani sozlash Uskunani sozlash](https://i.howwhatproduce.com/images/001/image-756-3-j.webp)
![Uskunani sozlash Uskunani sozlash](https://i.howwhatproduce.com/images/001/image-756-4-j.webp)
Birinchidan, biz uskunani o'rnatamiz. Biz passiv signal signalidan (ya'ni karnay) boshlaymiz. Biz passiv buzzerning ijobiy uchini ("+" belgisi bilan belgilanadi) Arduino -dagi raqamli 8 -pin bilan bog'lamoqchimiz. Biz passize signalining ikkinchi uchini erga ulaymiz.
Keyinchalik, biz eshik qo'ng'irog'i uchun tugmachani o'rnatamiz. Biz kalit uchun 10 kOhm tashqi ochiladigan qarshilikdan foydalanamiz, shuning uchun Arduino kirishiga suzuvchi kuchlanish yoki beqaror holat yo'q. Ochiladigan rezistor yordamida Arduino tugma bosilmasa, kuchlanish 0V, tugma bosilganda 5V bo'ladi. Yuk ko'taruvchi yoki ochiladigan rezistorlar haqida ko'proq ma'lumot olish uchun siz ushbu maqolani o'qishingiz mumkin:
Biz tugmachaning bir tomonini 5V ga ulaymiz. Tugmachaning boshqa tomoni erga 10 kOm kuchlanishli rezistor orqali ulanadi. Esingizda bo'lsin: tugmachalar gorizontal ravishda ichkariga ulanadi. Ular faqat bosilganda vertikal ravishda ulanadi. Qo'shimcha ma'lumot ushbu maqolada keltirilgan:
2 -qadam: dasturiy ta'minotni sozlash
Barcha kod biriktirilgan. Quyida kodning oniy tasvirlari bilan har bir funksiyaning tavsifi berilgan.
sozlash:
Setup () funktsiyasida biz tugmachamiz va karnayimiz uchun raqamli pinlarni sozlamoqchimiz. Biz 2 -pinni tugmachamiz uchun kirish sifatida, 8 -pinni dinamik uchun chiqish sifatida sozlamoqchimiz.
Shuningdek, biz kimdir eshik qo'ng'irog'ini chalganda tasodifiy ohangni tanlash uchun tasodifiy sonlar generatorini "urug'lantirmoqchimiz". Bizning tasodifiy sonlar generatorini ekish, uni tasodifiy kiritishni anglatadi. Biz tasodifiy raqamlar generatorini analog kirish 0 ga kuchlanish qiymati bilan joylashtiramiz. Bu kirishga hech narsa ulanmaganligi uchun, bu tasmada tasodifiy sonlar generatorini har xil qiymatlarga ega bo'lgan "tasodifiy" o'zgaruvchan kuchlanish bo'ladi. Bu bizning eshik qo'ng'irog'imiz uchun qo'shiq tanlashning boshqa tartibiga ega bo'lishimizni ta'minlaydi. Arduino random () funktsiyasi haqida qo'shimcha ma'lumot olish uchun bu erga kiring:
#"pitch.h" ni qo'shing
#include "songs.h" #deutine BUTTON_PIN 2 #deffine SPEAKER_PIN 8/ * funktsiyani sozlash */void setup () {// pinMode kirish/chiqish pinlarini yoqish (BUTTON_PIN, INPUT); pinMod (SPEAKER_PIN, OUTPUT); // urug 'random () funktsiyasi, shuning uchun biz boshqa tartibni olamiz randomSeed (analogRead (0)); }
pastadir:
Loop () funktsiyasida biz tugma bosilganligini tekshiramiz (raqamli pin 2 baland). Agar pin baland bo'lsa, biz 50 ms kutamiz va u hali ham balandligini tekshirish uchun yana tekshiramiz. Bu tugma bosilishini ta'minlaydi va raqamli kirish pinidagi noto'g'ri shovqin noto'g'ri pozitivlikni keltirib chiqaradi.
Tugma bosilganligini tasdiqlaganimizdan so'ng, biz tasodifiy sonlar generatoridan foydalanib, switch iborasi yordamida 5 ta qo'shiqdan birini tanlaymiz. Bu qo'shiqlar haqidagi ma'lumotlar "songs.h" da saqlanadi va "pitches.h" da ovoz haqidagi ma'lumotlar saqlanadi. Qo'shiqni tanlagandan so'ng, biz bu ma'lumotni play_song () funktsiyasiga o'tkazamiz.
/ * main while loop funktsiyasi */
void loop () {// tugmasi bosilganligini tekshiring, agar (digitalRead (BUTTON_PIN) == HIGH) {// 50 ms kechiktirilsa, u hali ham bosilganligiga ishonch hosil qiling // har qanday adashib o'qishni kechiktirishdan saqlaydi (50); if (digitalRead (BUTTON_PIN) == HIGH) {// tasodifiy qo'shiqni tanlang int song_choice = tasodifiy (5); // qaysi qo'shiqni ijro etishini tanlang (song_choice) {0 holat: play_song (haircutLength, haircut, haircutDurations, haircutTTEMO); tanaffus; 1 -holat: play_song (marioLength, mario, marioDurations, marioTempo); tanaffus; 2 -holat: play_song (miiLength, mii, miiDurations, miiTempo); tanaffus; 3 -holat: play_song (hpLength, hp, hPDurations, hpTempo); tanaffus; 4 -holat: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); tanaffus; standart: play_song (miiLength, mii, miiDurations, miiTempo); tanaffus; }}}}
play_song:
play_song () 4 ta dalilni oladi: qo'shiqdagi notalarning butun soni, ohangdagi tovushlarning butun soni, davomiylikning butun sonli massivi va o'sha qo'shiq uchun butun sonli temp. Siz ijro etishni xohlagan har bir qo'shiq uchun ularning har birini belgilashingiz kerak. Arduino ohang funksiyalaridan foydalanish haqida qo'shimcha ma'lumot olish uchun siz ushbu qo'llanmani ko'rishingiz mumkin: https://www.arduino.cc/en/Tutorial/ToneMelody. Men nuqta qo'yilgan yozuvlar uchun ushbu qo'llanmaning ustiga ba'zi funktsiyalarni qo'shdim. Agar eslatma davomiyligidagi qiymat manfiy bo'lsa, demak u nuqta (uzunlik 1,5 barobar katta).
/ * qo'shiqni ijro etadi */
void play_song (int num_notes, int melodiya , int noteDurations , int temp) {// o'tish va barcha yozuvlarni ijro etish (int i = 0; i 0) {muddati = temp / noteDurations ; } // agar bu manfiy son bo'lsa, nuqta yozilgan degan ma'noni anglatadi // boshqa nuqtali yozuvlar uchun davomiylikni ikki baravar oshiradi, agar (noteDurations <0) {duration = temp / abs (noteDurations ) * 1.5; } ohang (SPEAKER_PIN, ohang , davomiyligi); // eslatmalarni farqlash uchun ular orasidagi minimal vaqtni belgilang. // eslatmaning davomiyligi + 30% yaxshi ishlayotganga o'xshaydi: int pauseBetweenNotes = muddati * 1.30; kechikish (pauseBetweenNotes); // ohang ijro etilishini to'xtatish: noTone (SPEAKER_PIN); }}
Qo'shiqlar namunasi: h:
Quyida "songs.h" dagi qo'shiqlardan birining namunasi keltirilgan. Eslatmalar "pitches.h" da aniqlangan makrolardir. Raqamlar gerts (Hz) dagi yozuvlarning chastotalariga mos keladi. Notalarning davomiyligi quyidagicha aniqlanadi: 1 = butun nota, 2 = yarim nota, 4 = chorak eslatma, 8 = sakkizinchi eslatma, -4 = nuqta chorakli eslatma va boshqalar. Uzunlik qo'shiqdagi yozuvlarning umumiy soni. Temp - bu qo'shiq tezligini ajratuvchi (yuqori raqam sekinroq tempni bildiradi). Sizga yoqqan tempni olmaguningizcha, bu raqam bilan o'ynashingiz kerak bo'ladi.
/* Garri Potter */
int hp = {NOTE_D4, NOTE_G4, NOTE_AS4, NOTE_A4, NOTE_G4, NOTE_D5, NOTE_C5, NOTE_A4, NOTE_G4, NOTE_AS4, NOTE_A4, NOTE_F4, NOTE_GS4, NOTE_D4}; int hpDurations = {4, -4, 8, 4, 2, 4, -2, -2, -4, 8, 4, 2, 4, 1}; int hpLength = 14; int hpTempo = 1050;
3 -qadam: Tiking
Yana qo'shiqlar qo'shing! "Songs.h" da ko'rsatilgan formatga rioya qiling va yordam uchun o'quv qo'llanmasidan foydalaning: https://www.arduino.cc/en/Tutorial/ToneMelody. Siz qo'shgan har bir yangi qo'shiq uchun switch iborasiga yangi harf qo'shishni va tasodifiy () funktsiyangiz yaratishi mumkin bo'lgan maksimal sonni ko'paytirishni unutmang. Baxtli kodlash!
4 -qadam: Boshqa loyihalar
Boshqa loyihalar uchun sahifalarimga tashrif buyuring:
- https://dargen.io/
- https://github.com/mjdargen
- https://www.instructables.com/member/mjdargen/
Tavsiya:
Sensorsiz eshik qo'ng'irog'ini qanday qilish kerak, tana haroratini aniqlash, GY-906, 433MHz Arduino yordamida: 3 qadam
![Sensorsiz eshik qo'ng'irog'ini qanday qilish kerak, tana haroratini aniqlash, GY-906, 433MHz Arduino yordamida: 3 qadam Sensorsiz eshik qo'ng'irog'ini qanday qilish kerak, tana haroratini aniqlash, GY-906, 433MHz Arduino yordamida: 3 qadam](https://i.howwhatproduce.com/images/001/image-194-12-j.webp)
Sensorsiz eshik qo'ng'irog'ini qanday qilish kerak, tana haroratini aniqlash, GY-906, 433MHz Arduino yordamida: Bugun biz sensorli bo'lmagan eshik qo'ng'irog'ini qilamiz, u sizning tana haroratini aniqlaydi. Hozirgi vaziyatda, kimdir tepganda, kimningdir tana harorati me'yordan yuqori ekanligini bilish juda muhim
Maxsus eshik tagligi, eshik qo'ng'irog'i: 6 qadam
![Maxsus eshik tagligi, eshik qo'ng'irog'i: 6 qadam Maxsus eshik tagligi, eshik qo'ng'irog'i: 6 qadam](https://i.howwhatproduce.com/preview/how-it-works/10382809-custom-door-mat-triggered-door-bell-6-steps.webp)
Maxsus eshik tagligi eshikni qo'ng'irog'i. Salom! Mening ismim Jastin, men o'rta maktabda kichikman va bu ko'rsatma sizga kimdir eshik to'shagini bosganda qanday qo'ng'iroq qilish kerakligini ko'rsatib beradi va siz xohlagan ohang yoki qo'shiq bo'lishi mumkin! Eshik tagligi eshikni qo'zg'atgani uchun
Video eshik qo'ng'irog'ini raqamli qo'shiq qo'ng'irog'iga moslashtirish: 5 qadam
![Video eshik qo'ng'irog'ini raqamli qo'shiq qo'ng'irog'iga moslashtirish: 5 qadam Video eshik qo'ng'irog'ini raqamli qo'shiq qo'ng'irog'iga moslashtirish: 5 qadam](https://i.howwhatproduce.com/images/001/image-1816-28-j.webp)
Video eshik qo'ng'irog'ini raqamli qo'shiq qo'ng'irog'iga moslashtirish: Qisqasi, Best Buy menga Simplisafe eshik qo'ng'irog'ini qo'shiq ohangli eshik jiringlagichi bilan o'rnatolmasligimni aytdi. Yuzlab xabarlarni o'qib, buni amalga oshirish mumkin emasligini aytdi. Simplisafe buni amalga oshirish mumkin emasligini aytdi, lekin baribir to'plamni etkazib berdi. Ulagichlar to'plami bar uchun mo'ljallangan
IFTTT yordamida simli eshik qo'ng'irog'ini aqlli eshik qo'ng'irog'iga aylantiring: 8 qadam
![IFTTT yordamida simli eshik qo'ng'irog'ini aqlli eshik qo'ng'irog'iga aylantiring: 8 qadam IFTTT yordamida simli eshik qo'ng'irog'ini aqlli eshik qo'ng'irog'iga aylantiring: 8 qadam](https://i.howwhatproduce.com/images/003/image-6429-9-j.webp)
IFTTT yordamida simli eshik qo'ng'irog'ini aqlli eshik qo'ng'irog'iga aylantiring: WiFi eshik qo'ng'irog'i sizning mavjud simli eshik qo'ng'irog'ingizni aqlli eshik qo'ng'irog'iga aylantiradi. https://www.fireflyelectronix.com/product/wifidoor
Uy yordamchisi yordamida simli eshik qo'ng'irog'ini aqlli eshik qo'ng'irog'iga aylantiring: 6 qadam
![Uy yordamchisi yordamida simli eshik qo'ng'irog'ini aqlli eshik qo'ng'irog'iga aylantiring: 6 qadam Uy yordamchisi yordamida simli eshik qo'ng'irog'ini aqlli eshik qo'ng'irog'iga aylantiring: 6 qadam](https://i.howwhatproduce.com/images/005/image-13963-22-j.webp)
Uy yordamchisi yordamida simli eshik qo'ng'irog'ini aqlli eshik qo'ng'irog'iga aylantiring: mavjud simli eshik qo'ng'irog'ini aqlli eshik qo'ng'irog'iga aylantiring. Kimdir sizning qo'ng'irog'ingizga qo'ng'iroq qilganda, fotosurat yoki video ogohlantirishni olish uchun telefoningizga yoki oldingi old kamerangiz bilan bog'laning