Բովանդակություն:

Arduino Doorbell: 4 քայլ
Arduino Doorbell: 4 քայլ

Video: Arduino Doorbell: 4 քայլ

Video: Arduino Doorbell: 4 քայլ
Video: Using Keypads with Arduino - Build an Electronic Lock 2024, Հուլիսի
Anonim
Արդուինո դռան զանգ
Արդուինո դռան զանգ

Այսօր ես ձեզ ցույց կտամ, թե ինչպես կարելի է դռան զանգ կատարել 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/

Խորհուրդ ենք տալիս: