
Բովանդակություն:
2025 Հեղինակ: John Day | [email protected]. Վերջին փոփոխված: 2025-01-23 14:48

Այսօր ես ձեզ ցույց կտամ, թե ինչպես կարելի է դռան զանգ կատարել Arduino- ի միջոցով: Այս դռան զանգը պատահական մեղեդի է նվագում երգերի գրադարանից: Դուք կարող եք հարմարեցնել ձեր դռան զանգը և ավելացնել նույնիսկ ավելի շատ երգեր: Տեղադրեք այն ձեր ննջասենյակից, դասարանից, գրասենյակից կամ նույնիսկ ձեր առջևի դռնից դուրս:
Պարագաներ:
- Arduino Uno (շատ այլ տեսակներ կանեն)
- Computerրագրավորման համար համակարգիչ Arduino IDE- ով
- USB-A- ից USB-B մալուխ Arduino- ի ծրագրավորման համար
- Breadboard
- 4x jumper լարեր
- Pushbutton կամ այլ անջատիչ
- 10 կՕմ դիմադրություն
- Պասիվ ազդանշան (այսինքն ՝ պիոզոէլեկտրական բարձրախոս)
-
Մշտական տեղադրման համար.
- Arduino- ին սնուցելու համար 9V DC սնուցման աղբյուր կամ 9V մարտկոց
- 2x երկար լարեր դռան արտաքին լարերի կոճակի համար
Քայլ 1: Սարքավորման կարգավորում



Նախ, մենք կկարգավորենք սարքավորումները: Մենք կսկսենք պասիվ ազդանշանից (այսինքն ՝ բարձրախոսից): Մենք ցանկանում ենք պասիվ ազդանշանի դրական վերջը (նշվում է «+» նշանով) Arduino- ի թվային 8 -րդ կապի հետ: Պասիվ ազդանշանի մյուս ծայրը մենք կկապենք գետնին:
Հաջորդը, մենք կտեղադրենք դռան զանգի կոճակը: Անջատիչի համար մենք կօգտագործենք 10 kOhm արտաքին ձգվող դիմադրություն, այնպես որ Arduino- ի մուտքի վրա լողացող լարման կամ անկայուն վիճակ չկա: Օգտագործելով քաշքշուկի դիմադրիչը, Arduino- ն լարումը կարդում է որպես 0 Վ, երբ կոճակը սեղմված չէ և 5 Վ, երբ կոճակը սեղմվում է: Քաշման կամ քաշման դիմադրիչների մասին լրացուցիչ տեղեկությունների համար կարող եք կարդալ այս հոդվածը ՝
Մենք միացնելու ենք կոճակի մի կողմը 5 Վ -ին: Կոճակի մյուս կողմը միացված կլինի գետնին 10 կՕմ քաշվող դիմադրիչի միջոցով: Հիշեք. Կոճակները ներքին հորիզոնական միացված են: Դրանք սեղմված վիճակում միացված են միայն ուղղահայաց: Լրացուցիչ տեղեկություններ տրվում են այս հոդվածում ՝
Քայլ 2: Softwareրագրաշարի տեղադրում
Ամբողջ ծածկագիրը կցված է: Ստորև բերված են ֆունկցիաներից յուրաքանչյուրի նկարագրությունները ՝ կոդի պատկերացումներով:
կարգավորում:
Setup () գործառույթում մենք ցանկանում ենք կարգավորել թվային կապերը մեր կոճակի և բարձրախոսի համար: Մենք ցանկանում ենք 2 -րդ կապը կարգավորել որպես մեր կոճակի մուտքագրում, և ցանկանում ենք կարգավորել 8 -րդ կապը ՝ որպես ելք մեր խոսնակի համար:
Մենք նաև ցանկանում ենք «սերմանել» մեր պատահական թվերի գեներատորը ՝ մեղեդու պատահական ընտրության համար, երբ ինչ -որ մեկը զանգում է մեր դռան զանգը: Մեր պատահական թվերի գեներատոր սերմանելը նշանակում է դրան պատահական մուտքագրում: Մենք սերմանելու ենք մեր պատահական թվերի գեներատորը անալոգային մուտքի լարման արժեքով: Քանի որ այս մուտքի հետ ոչինչ կապված չէ, այս կապում կլինի «պատահական», տատանվող լարվածություն `ապահովելով մեր պատահական թվերի գեներատորին բազմաթիվ տարբեր արժեքներով: Սա երաշխավորում է, որ մենք կունենանք երգերի ընտրության այլ կարգ `մեր դռան զանգի համար: Arduino պատահական () գործառույթի մասին լրացուցիչ տեղեկությունների համար այցելեք այստեղ ՝
#ներառել «դաշտերը.հ»
#ներառել «songs.h» #սահմանել BUTTON_PIN 2 #սահմանել SPEAKER_PIN 8/ * կարգավորել գործառույթը */void setup () {// միացնել մուտքի/ելքի կապում pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // seed random () գործառույթը, որպեսզի ստանանք այլ կարգի randomSeed (analogRead (0)); }
հանգույց:
Մեր loop () գործառույթում մենք անընդհատ ստուգելու ենք, թե արդյոք կոճակը սեղմված է (թվային կապը 2 բարձր է): Եթե քորոցը բարձր է, մենք սպասում ենք 50 ms և նորից ստուգում `համոզվելու համար, որ այն դեռ բարձր է: Սա երաշխավորում է, որ կոճակը սեղմված է, և թվային մուտքի քորոցի վրա թափառող աղմուկը չի առաջացրել կեղծ դրական:
Երբ մենք հաստատում ենք, որ կոճակը սեղմված է, մենք օգտագործում ենք մեր պատահական թվերի գեներատորը ՝ 5 երգերից մեկը ընտրելու համար ՝ օգտագործելով switch հայտարարությունը: Այս երգերի տվյալները պահվում են «songs.h» - ում, իսկ սկիպիդարի մասին տեղեկությունները ՝ «pitches.h» - ում: Երբ երգ ենք ընտրում, այս տեղեկատվությունը փոխանցում ենք play_song () գործառույթին:
/ * հիմնական while loop գործառույթը */
void loop () {// ստուգեք ՝ արդյոք կոճակը սեղմված է, եթե (digitalRead (BUTTON_PIN) == HIGH) {// հետաձգեք 50 ms ՝ համոզվելու համար, որ այն դեռ սեղմված է // խուսափում է որևէ թափառող սխալ ընթերցման հետաձգումից (50); եթե (digitalRead (BUTTON_PIN) == HIGH) {// պատահականորեն ընտրեք երգ int song_choice = պատահական (5); // ընտրել, թե որ երգը նվագել անջատիչ (song_choice) {case 0: play_song (haircutLength, haircut, haircutDurations, haircutTempo); ընդմիջում; դեպք 1: play_song (marioLength, mario, marioDurations, marioTempo); ընդմիջում; դեպք 2: play_song (miiLength, mii, miiDurations, miiTempo); ընդմիջում; դեպք 3: play_song (hpLength, hp, hpDurations, hpTempo); ընդմիջում; դեպք 4: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); ընդմիջում; լռելյայն ՝ play_song (miiLength, mii, miiDurations, miiTempo); ընդմիջում; }}}}
play_song:
play_song () - ն ընդունում է 4 փաստարկ. երգի մեջ եղած նոտաների ամբողջ թիվը, մեղեդիում հնչող հնչյունների ամբողջ զանգվածը, տևողության ամբողջ զանգվածը և տվյալ երգի ամբողջ տեմպը: Դուք պետք է նշեք դրանցից յուրաքանչյուրը յուրաքանչյուր երգի համար, որը ցանկանում եք նվագել: Arduino- ի հնչերանգային գործառույթների օգտագործման մասին լրացուցիչ տեղեկությունների համար կարող եք դիտել այս ձեռնարկը ՝ https://www.arduino.cc/hy/Tutorial/ToneMelody: Այս ձեռնարկի վերևում մի քանի գործառույթ ավելացրի կետավոր նշումների համար: Եթե նշումների տևողության զանգվածի արժեքը բացասական է, դա նշանակում է, որ այն կետավոր նշում է (երկարությունը 1,5 անգամ ավելի մեծ է):
/ * նվագում է երգը */
void play_song (int num_notes, int melody , int noteDurations , int tempo) {// անցնել և նվագել բոլոր նոտաները (int i = 0; i 0) {տևողություն = տեմպ / նոտաՏևողություններ ; } // եթե դա բացասական թիվ է, նշանակում է կետավոր նշում // կետավոր նշումների դեպքում տևողությունը կիսով չափ ավելանում է, եթե (noteDurations <0) {duration = tempo / abs (noteDurations ) * 1.5; } տոն (SPEAKER_PIN, մեղեդի , տևողություն); // նշումները տարբերելու համար դրանց միջև սահմանեք նվազագույն ժամանակ: // գրառման տևողությունը + 30% -ը կարծես լավ է աշխատում. int pauseBetweenNotes = տևողությունը * 1.30; ուշացում (pauseBetweenNotes); // դադարեցնել հնչերանգի նվագարկումը. noTone (SPEAKER_PIN); }}
Երգերի օրինակ. H:
Ստորև ներկայացված է «songs.h» - ի երգերից մեկի օրինակ: Նշումները մակրո են, որոնք սահմանված են «pitches.h» - ում: Թվերը համապատասխանում են հերցի (Հց) նոտաների հաճախականություններին: Նոտաների տևողությունը սահմանվում է `1 = ամբողջական նոտա, 2 = կես նշում, 4 = քառորդ նշում, 8 = ութերորդ նոտա, -4 = կետավոր եռամսյակ և այլն: Երկարությունը երգի նոտաների ընդհանուր թիվն է: Տեմպը երգի արագության բաժանարար է (ավելի բարձր թիվը նշանակում է ավելի դանդաղ տեմպ): Դուք ստիպված կլինեք խաղալ այս համարով, մինչև չստանաք ձեր նախընտրած տեմպը:
/* Հարրի Փոթթեր */
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: Կարգավորումներ:
Ավելացրեք ավելի շատ երգեր: Հետևեք «songs.h» - ում ցուցադրվող ձևաչափին և օգնության համար օգտագործեք ձեռնարկը ՝ https://www.arduino.cc/hy/Tutorial/ToneMelody: Ձեր ավելացրած յուրաքանչյուր նոր երգի համար մի մոռացեք ավելացնել նոր դեպք անջատիչի հայտարարությանը և ավելացնել առավելագույն թիվը, որը կարող է գեներացվել ձեր պատահական () ֆունկցիայից: Շնորհավոր կոդավորում:
Քայլ 4: Ավելի շատ նախագծեր
Լրացուցիչ նախագծերի համար այցելեք իմ էջերը.
- https://dargen.io/
- https://github.com/mjdargen
- https://www.instructables.com/member/mjdargen/
Խորհուրդ ենք տալիս:
UK Ring Video Doorbell Pro- ն աշխատում է մեխանիկական ազդանշանի հետ. 6 քայլ (նկարներով)

UK Ring Video Doorbell Pro- ն աշխատում է մեխանիկական զանգի միջոցով. *************** Խնդրում ենք նկատի ունենալ, որ այս մեթոդը գործում է միայն AC հոսանքով: Ես կթարմացնեմ, եթե/երբ DC հոսանքի միջոցով դռների զանգերի լուծում գտնեմ: Մինչդեռ, եթե դուք ունեք DC հոսանք մատակարարեք, ձեզ հարկավոր կլինի
Nest Hello - Doorbell Chime With Integrated Transformer UK (220-240V AC - 16V AC). 7 քայլ (նկարներով)

Nest Hello - Doorbell Chime With Integrated Transformer UK (220-240V AC - 16V AC). Ես ուզում էի տեղադրել Nest Hello- ի դռան զանգը տանը, gizmo, որն աշխատում է 16V -24V AC- ով (EԱՆՈԹՈԹՅՈՆ. Ծրագրային ապահովման թարմացումը 2019 -ին փոխեց Եվրոպան տարբերակի տիրույթը մինչև 12V-24V AC): Ստանդարտ դռան զանգերը ինտեգրված տրանսֆորմատորներով հասանելի են Միացյալ Թագավորությունում
Paper Doorbell W/ P5.js & Makey Makey: 9 քայլ

Paper Doorbell W/ P5.js & Makey Makey. Այս նախագիծը ստեղծում է ուրվագիծ p5.js- ում, որը կարող է աուդիո ֆայլ նվագարկել առանցքային սեղմման միջոցով, այնուհետև մատիտով, թուղթով և Makey Makey- ով մի պարզ կոճակ է ստեղծում ձայնը խթանելու համար: այս նախագիծը օգտագործում է դռան զանգի ձայնը, քայլերը ներառում են, թե ինչպես բեռնել
Amazon Dash Button Silent Doorbell: 10 քայլ (նկարներով)

Amazon Dash Button Silent Doorbell: Անընդհատ նայում եք պատուհանից, որպեսզի կարողանաք ընդհատել այցելուներին նախքան դռան զանգը զանգելը: Հոգնե՞լ եք, երբ շունն ու երեխան խելագարվում են, երբ այն զանգի: Չեք ուզում մի մեծ գումար ծախսել " խելացի » լուծում? Լուռ դռան զանգ կատարելը նույնն է, ինչ
Arduino Doorbell: 5 քայլ

Arduino Doorbell: SUPPLIES-2 հացի տախտակներ-ազդանշան-թռիչքի լարեր -2 arduino/genuino հոսանքի մալուխներով-rf հաղորդիչ և ընդունիչ-սեղմիչ կոճակ -100 օմ ռեզիստոր