Dalam projek ini kami akan membangunkan penjana nada menggunakan Arduino Uno. Kami akan mempunyai butang yang dihubungkan dengan UNO dan masing-masing menghasilkan intensiti nada yang berbeza. Kekerapan nada yang dihasilkan oleh UNO adalah sama pada setiap dalaman. Keamatan suaranya berubah dengan setiap tekan. Ini adalah salah satu kaedah termudah untuk membuat piano dengan Arduino Uno. Periksa juga litar Piano ini.
Nada boleh ditingkatkan hingga 20. Ini memberikan variasi nada terbaik dan perubahan yang lebih lancar. Keamatan nada diubah oleh PWM (Pulse Width Modulation). Contoh PWM ditunjukkan dalam grafik di bawah.
Dalam PWM, frekuensi isyarat atau jangka masa isyarat (Ton + Toff) selalu tetap. Hanya nisbah masa TURN ON dan TURN OFF yang berubah. Contohnya pada grafik kedua dalam gambar di atas, masa TURN ON adalah 80% dan masa TURN OFF adalah 20% dari jangka masa yang lengkap.
Pada grafik ketiga, masa TURN ON adalah 50% dan masa TURN OFF adalah 50% dari jangka masa yang lengkap. Jadi dalam kes pertama kita mempunyai nisbah tugas 80% dan dalam kes kedua kita mempunyai nisbah tugas 20%.
Dengan perubahan nisbah tugas ini, kita mempunyai perubahan dalam Vrms (nilai Voltan Root Mean Square), apabila voltan ini diberikan ke bel, ia membuat bunyi yang berbeza setiap kali ada perubahan dalam rasio tugas.
Kami akan memprogram UNO untuk memberikan isyarat PWM dengan nisbah tugas yang berbeza untuk setiap butang. Oleh itu, kita mempunyai penjana nada yang menghasilkan nada yang berbeza dengan setiap penekanan butang.
Komponen Diperlukan
Perkakasan: Arduino Uno, Bekalan kuasa (5v), kapasitor 1000 uF, kapasitor 100 nF, Buzzer, butang (8 keping).
Perisian: AURDINO malam atau Atmel studio 6.2
Diagram Litar dan Penjelasan Kerja
Litar untuk penjana nada ditunjukkan dalam rajah di bawah.
Untuk menyaring kebisingan dari kapasitor voltan bekalan diletakkan di seberang terminal seperti yang ditunjukkan dalam rajah.
PWM Arduino Uno dapat dicapai pada salah satu pin yang dilambangkan sebagai "~" di papan PCB. Terdapat enam saluran PWM di UNO. Namun, kami tidak dapat menggunakan pin PWM yang didirikan di atas PIN 0-7, kerana PIN lebih disukai untuk antara muka butang.
Terdapat alasan untuk memilih PIN 0 0 sebagai input, kerana PIN 0-7 mewakili PORTD mikrokontroler. Oleh itu, dalam kes yang terakhir, kita dapat mengambil BYTE PORTD yang lengkap.
Sekarang untuk mendapatkan Nisbah tugas yang berbeza PWM, kita akan menggunakan perintah berikut.
analogWrite (9, NILAI); |
Dari keadaan di atas, kita boleh mendapatkan isyarat PWM secara langsung pada pin yang sesuai. Parameter pertama dalam tanda kurung adalah untuk memilih nombor pin isyarat PWM. Parameter kedua adalah untuk nisbah tugas menulis.
Nilai PWM Arduino Uno dapat diubah dari 0 ke 255. Dengan “0” serendah ke “255” tertinggi. Dengan nisbah tugas sebagai 255, kita akan mendapat 5V pada PIN9. Sekiranya nisbah tugas diberikan sebagai 125, kita akan mendapat 2.5V pada PIN9. Kami akan membahagikan nisbah tugas 0-250 di antara 8 butang yang dihubungkan di PORTD UNO. Di sini saya memilih 25 kenaikan untuk setiap butang, tetapi itu adalah pilihan anda.
Dengan itu kita akan mempunyai isyarat PWM yang nisbah tugasnya berubah dengan setiap butang. Ini diberikan kepada bel, kami mempunyai penjana nada. Kerja penjana nada berdasarkan Arduino ini dijelaskan langkah demi langkah dalam kod C yang diberikan di bawah.