Isi kandungan:

Bel Arduino: 4 Langkah
Bel Arduino: 4 Langkah

Video: Bel Arduino: 4 Langkah

Video: Bel Arduino: 4 Langkah
Video: Arduino 4 Push Button Cerdas Cermat Empat Grup Regu Kelompok Wokwi Cara Tutorial DIY@tptumetro 2024, November
Anonim
Arduino Doorbell
Arduino Doorbell

Hari ini, saya akan menunjukkan cara membuat bel pintu menggunakan Arduino. Loceng pintu ini memainkan lagu secara rawak dari perpustakaan lagu. Anda boleh menyesuaikan bel pintu anda dan menambahkan lebih banyak lagu. Pasang di luar bilik tidur, bilik darjah, pejabat, atau bahkan pintu depan anda!

Bekalan:

  • Arduino Uno (kebanyakan jenis lain akan dilakukan)
  • Komputer dengan Arduino IDE untuk pengaturcaraan
  • Kabel USB-A ke USB-B untuk memprogram Arduino
  • Papan roti
  • Wayar pelompat 4x
  • Butang tekan atau suis lain
  • Perintang 10 kOhm
  • Buzzer pasif (iaitu pembesar suara piezoelektrik)
  • Untuk pemasangan tetap:

    • Bekalan Kuasa 9V DC atau bateri 9V untuk memberi kuasa kepada Arduino
    • Kabel panjang 2x untuk butang pendawaian di luar pintu

Langkah 1: Persediaan Perkakasan

Persediaan Perkakasan
Persediaan Perkakasan
Persediaan Perkakasan
Persediaan Perkakasan
Persediaan Perkakasan
Persediaan Perkakasan

Pertama, kami akan menyediakan perkakasan. Kami akan bermula dengan buzzer pasif (iaitu pembesar suara). Kami ingin menghubungkan hujung positif buzzer pasif (dilambangkan dengan tanda "+") ke pin digital 8 di Arduino. Kami akan menghubungkan hujung buzzer passize yang lain ke tanah.

Seterusnya, kami akan memasang butang tekan untuk bel pintu. Kami akan menggunakan resistor pulldown luaran 10 kOhm untuk suis, jadi tidak ada voltan terapung atau keadaan tidak stabil pada input ke Arduino. Dengan menggunakan perintang pulldown, Arduino membaca voltan sebagai 0V ketika butang tidak ditekan dan 5V ketika butang ditekan. Untuk maklumat lebih lanjut mengenai penarik pullup atau pulldown, anda boleh membaca artikel ini:

Kami akan menghubungkan satu sisi butang tekan ke 5V. Bahagian lain butang tekan akan disambungkan ke tanah melalui perintang pulldown 10 kOhm. Ingat: butang tekan disambungkan secara mendatar secara dalaman. Mereka hanya disambungkan secara menegak semasa ditekan. Maklumat lebih lanjut disediakan dalam artikel ini:

Langkah 2: Persediaan Perisian

Semua kod dilampirkan. Berikut adalah penerangan setiap fungsi dengan tangkapan kod.

persediaan:

Dalam fungsi setup (), kami ingin mengkonfigurasi pin digital untuk butang dan pembesar suara kami. Kami ingin mengkonfigurasi pin 2 sebagai input untuk butang kami, dan kami ingin mengkonfigurasi pin 8 sebagai output untuk pembesar suara kami.

Kami juga ingin "membuat" penjana nombor rawak kami untuk memilih lagu secara rawak ketika seseorang membunyikan loceng pintu kami. Menyemai penjana nombor rawak kami bermaksud memberi input secara rawak. Kami akan menghasilkan penjana nombor rawak kami dengan nilai voltan pada input analog 0. Oleh kerana tidak ada yang dihubungkan ke input ini, akan ada voltan berfluktuasi "rawak" pada pin ini yang menyediakan penjana nombor rawak kami dengan banyak nilai yang berbeza. Ini memastikan bahawa kita akan mempunyai urutan pilihan lagu yang berbeza untuk bel pintu kita. Untuk maklumat lebih lanjut mengenai fungsi Arduino random (), pergi ke sini:

#masuk "pitches.h"

#include "songs.h" #define BUTTON_PIN 2 #define SPEAKER_PIN 8 / * fungsi persediaan * / batal setup () {// aktifkan input / output pinMode (BUTTON_PIN, INPUT); pinMode (SPEAKER_PIN, OUTPUT); // seed random () berfungsi supaya kita mendapat urutan randomSeed yang berbeza (analogRead (0)); }

gelung:

Dalam fungsi loop () kami, kami akan terus memeriksa untuk melihat apakah butang ditekan (pin digital 2 tinggi). Sekiranya pin tinggi, kita tunggu 50 ms dan periksa lagi untuk memastikan bahawa pin masih tinggi. Ini memastikan bahawa butang ditekan dan tidak ada bunyi sesat pada pin input digital yang menyebabkan positif palsu.

Setelah kami mengesahkan bahawa butang ditekan, kami menggunakan penjana nombor rawak kami untuk memilih salah satu daripada 5 lagu menggunakan pernyataan beralih. Data untuk lagu-lagu ini disimpan di "songs.h" dan maklumat nada disimpan di "pitches.h". Setelah memilih lagu, kami menyampaikan maklumat ini ke dalam fungsi play_song ().

/ * fungsi utama semasa gelung * /

gelung void () {// periksa untuk melihat apakah butang ditekan jika (digitalRead (BUTTON_PIN) == TINGGI) {// tunda 50 ms untuk memastikan ia masih ditekan // mengelakkan kelewatan salah membaca (50); jika (digitalRead (BUTTON_PIN) == TINGGI) {// pilih secara rawak lagu int song_choice = random (5); // pilih suis lagu mana yang hendak dimainkan (song_choice) {case 0: play_song (potongan rambut Panjang, potongan rambut, potongan rambutDurations, potongan rambutTempo); rehat; kes 1: play_song (marioLength, mario, marioDurations, marioTempo); rehat; kes 2: play_song (miiLength, mii, miiDurations, miiTempo); rehat; kes 3: play_song (hpLength, hp, hpDurations, hpTempo); rehat; kes 4: play_song (takeonmeLength, takeonme, takeonmeDurations, takeonmeTempo); rehat; lalai: play_song (miiLength, mii, miiDurations, miiTempo); rehat; }}}}

main_song:

play_song () mengambil 4 argumen: bilangan nota bilangan bulat dalam lagu, susunan bilangan bulat dalam nada melodi, susunan bilangan bulat durasi, dan tempo integer untuk lagu tertentu. Anda mesti menentukan masing-masing untuk setiap lagu yang anda mahu mainkan. Untuk maklumat lebih lanjut mengenai cara menggunakan fungsi nada Arduino, anda boleh melihat tutorial ini: https://www.arduino.cc/en/Tutorial/ToneMelody. Saya menambahkan beberapa fungsi di atas tutorial ini untuk nota putus-putus. Sekiranya nilai dalam susunan durasi nota negatif, itu bermaksud bahawa itu adalah nota putus-putik (panjangnya 1.5 kali lebih besar).

/ * memainkan lagu * /

batal play_song (int num_notes, int melody , int noteDurations , int tempo) {// melangkah dan mainkan semua nota untuk (int i = 0; i 0) {durasi = tempo / noteDurations ; } // jika nombor negatif, bermaksud nota putus-putus // meningkatkan durasi sebanyak setengah untuk nota bertitik yang lain jika (noteDurations <0) {tempoh = tempo / abs (noteDurations ) * 1.5; } nada (SPEAKER_PIN, melodi , jangka masa); // untuk membezakan nota, tetapkan masa minimum di antara mereka. // tempoh nota + 30% nampaknya berfungsi dengan baik: int pauseBetweenNotes = tempoh * 1.30; kelewatan (pauseBetweenNotes); // hentikan bermain nada: noTone (SPEAKER_PIN); }}

Contoh lagu.h:

Di bawah ini adalah contoh salah satu lagu dalam "songs.h". Nota adalah makro yang ditentukan dalam "pitches.h". Angka-angka sesuai dengan frekuensi not dalam hertz (Hz). Tempoh nota ditakrifkan sebagai: 1 = nota keseluruhan, 2 = nota setengah, 4 = nota suku, 8 = nota kelapan, -4 = nota seperempat putus-putus, dll. Panjangnya adalah jumlah nota dalam lagu. Tempo adalah pembahagi untuk kelajuan lagu (bilangan yang lebih tinggi bermaksud tempo yang lebih perlahan). Anda mesti bermain-main dengan nombor ini sehingga anda mendapat tempo yang anda suka.

/ * harry 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;

Langkah 3: Tweaks

Tambahkan lebih banyak lagu! Ikuti format yang ditunjukkan dalam "songs.h" dan gunakan tutorial untuk bantuan: https://www.arduino.cc/en/Tutorial/ToneMelody. Untuk setiap lagu baru yang anda tambahkan, ingat untuk menambahkan casing baru pada pernyataan beralih dan meningkatkan jumlah maksimum yang dapat dihasilkan oleh fungsi rawak () anda. Selamat pengekodan!

Langkah 4: Lebih Banyak Projek

Untuk lebih banyak projek, lawati halaman saya:

  • https://dargen.io/
  • https://github.com/mjdargen
  • https://www.instructables.com/member/mjdargen/

Disyorkan: