Dalam projek ini kita akan membina hiburan menggunakan Arduino. Kita semua mempunyai kebiasaan mengetuk Meja atau Pena untuk membuat muzik rawak. Sudah tentu ia tidak boleh dianggap sebagai tingkah laku yang baik, tetapi kita semua seronok melakukannya sekurang-kurangnya sekali. Oleh itu, saya berfikir untuk menaikkannya ke tahap seterusnya dengan menggunakan kemampuan Arduino untuk bermain nada. Sebaik sahaja anda membina projek ini, anda akan dapat Menghasilkan nada dengan mengetuk jari anda pada sesuatu yang konduktif dan membuat irama anda sendiri, seperti bermain Piano di telapak tangan anda. Kedengarannya betul, marilah kita membinanya.
Komponen yang diperlukan:
Bahan-bahan yang diperlukan untuk projek ini disenaraikan di bawah, tidak wajib dipatuhi. Sebaik sahaja anda mengambil konsep, anda boleh menggunakan kaedah anda sendiri untuk membinanya.
- Arduini Pro Mini
- Speaker Peizo
- Sensor Flex
- Sarung Tangan Jari
- Perintang 10K
- Transistor BC547
- Bateri 9V
Rajah dan Penjelasan Litar:
Gambarajah litar untuk Arduino Palm Piano ini ditunjukkan di bawah.
Projek ini menggunakan empat sensor, iaitu dua sensor flex dan dua pasangan Darlington yang bertindak sebagai sensor sentuh. Kami juga telah menggunakan dua perintang tarik bawah R1 dan R2 masing-masing bernilai 10k, yang akan bertindak sebagai perintang tarik ke bawah untuk sensor Flex. Di sini Flex sensor digunakan untuk menghasilkan Tiga nada yang berbeza dengan menggunakan satu jari, berdasarkan berapa banyak yang telah dibengkokkan. Oleh itu, kita dapat menghasilkan 6 bunyi menggunakan dua jari. Ketahui di sini mengenai Flex Sensor.
Pasangan Darlington:
Sebelum kita meneruskan, penting untuk mengetahui apa itu Darlington dan bagaimana sebenarnya ia berfungsi dalam projek kita. Pasangan Darlington boleh didefinisikan sebagai dua transistor bipolar yang dihubungkan sedemikian rupa sehingga arus yang diperkuat oleh yang pertama diperkuat lagi oleh transistor kedua. Sepasang Darlington ditunjukkan dalam gambar di bawah:
Seperti yang ditunjukkan di atas, kami telah menggunakan dua transistor BC547 yang pengumpulnya diikat untuk berkumpul dan pemancar transistor pertama dihubungkan dengan Pangkalan transistor kedua. Litar ini bertindak sebagai penguat dengan penguatan, yang bermaksud sebarang isyarat kecil yang diberikan ke pangkal transistor pertama sudah cukup untuk membendung dasar transistor kedua. Badan kita bertindak sebagai tanah di sini jadi setiap kali kita menyentuh pangkal transistor transistor kedua menjadi berat sebelah. Dengan menggunakan ini, kami telah membina sensor sentuh untuk projek ini.
Pin nombor 2 dan 3 adalah pin interrupt pada Arduino yang akan ditarik tinggi menggunakan perintang penarik dalaman dan kemudian pin ini akan dipegang ke tanah setiap kali suis Darlington ditutup. Dengan cara ini setiap kali kami sentuh wayar (dari pangkal 1 st transistor) sampukan akan dicetuskan dari Arduino.
Menggunakan dua jari hanya dapat menghasilkan dua jenis nada maka saya juga telah menambahkan sensor flex yang akan mengubah nada berdasarkan seberapa banyak nada yang dibengkokkan. Saya telah memprogram untuk menghasilkan tiga nada yang berbeza setiap jari berdasarkan berapa banyak jari (sensor flex) dibengkokkan. Anda boleh menambah jumlahnya jika anda ingin mempunyai lebih banyak nada di hujung jari anda.
Saya membuat papan yang lengkap pada papan perf agar mudah masuk ke telapak tangan saya, tetapi anda juga boleh menggunakan papan roti. Pastikan badan anda menyentuh permukaan litar pada suatu ketika. Sebaik sahaja anda menyelesaikan semuanya, ia akan kelihatan seperti ini
Saya telah menggunakan sarung tangan dua jari untuk menahan wayar dari pasangan Darlington dan sensor fleksibel pada kedudukan seperti yang ditunjukkan di atas. Anda boleh mengemukakan idea anda sendiri (lebih baik jika mungkin) untuk mengamankannya semasa anda memainkan nada anda.
Pengaturcaraan Arduino:
Program untuk Arduino Tap Tone Generator ini agak lurus ke hadapan. Kita hanya perlu mencari gangguan dari kabel Darlington dan jika dijumpai, kita harus memainkan nada yang bergantung pada berapa banyak sensor flex dibengkokkan. Kod lengkap diberikan di akhir catatan ini tetapi saya telah menerangkan beberapa bahagian penting di bawah ini.
Catatan: Program ini berfungsi dengan bantuan perpustakaan "pitches.h". Oleh itu, pastikan anda telah menambahkan fail tajuk ke program anda sebelum anda menyusunnya. Anda boleh memuat turun fail tajuk pitches.h dari sini.
Dalam fungsi persediaan , kami menginisialisasi pin 2 dan 3 sebagai Input dengan pull-up resistors. Kami juga mengaku mereka sebagai pin sampukan dan melaksanakan tone1 yang () apabila terdapat sampukan pada pin 2 dan fungsi tone2 () apabila terdapat sampukan pada 3 rd pin. Gangguan ini akan dicetuskan setiap kali pin ini RENDAH dari keadaan penariknya.
batal persediaan () {pinMode (2, INPUT_PULLUP); pinMode (3, INPUT_PULLUP); attachInterrupt (digitalPinToInterrupt (2), tone1, RENDAH); attachInterrupt (digitalPinToInterrupt (3), tone2, RENDAH); Serial.begin (9600); }
Di dalam fungsi gelung , kami sentiasa memeriksa berapa banyak sensor flex dibengkokkan. FlexSensor 1 saya misalnya memberikan nilai sekitar 200 ketika dibiarkan rata dan turun hingga 130 ketika saya membengkokkannya ke tahap maksimum, jadi saya telah memetakan nilai dari 200 hingga 130 sebagai 1 hingga 3 kerana saya harus memainkan 3 jenis nada. Anda harus mengubah dua baris ini berdasarkan nilai sensor Flex dan bilangan nada anda.
gelung void () {flexSensor1 = peta (analogRead (A0), 200,130,1,3); // Peta dengan nilai anda sendiri berdasarkan sensor flex flexSensor2 = peta (analogRead (A1), 170,185,1,3); // Peta dengan nilai anda sendiri berdasarkan sensor flex anda}
Seperti yang kita lihat sebelumnya fungsi tone1 () akan dijalankan ketika gangguan terdeteksi pada pin 2. Apa yang berlaku di dalam fungsi tone1 () ditunjukkan di atas. Kami melihat nilai-nilai FlexSensor1 dan memainkan nada berdasarkan Nilai flexSesnor. Nada akan dimainkan menggunakan fungsi Arduino's Tone. Kami telah menjelaskan fungsi tone () dalam projek kami sebelumnya.
nada kosong1 () {jika (flexSensor1 == 1) nada (8, NOTE_D4,50); lain jika (flexSensor1 == 2) nada (8, NOTE_A3,50); lain jika (flexSensor1 == 3) nada (8, NOTE_G4,50); nada lain (8, NOTE_D4,50); }
Garis di bawah digunakan untuk memainkan nada. Anda boleh memainkan nada yang tersedia dalam fail tajuk "pitches.h". Garis di atas misalnya memainkan pin NOTE_A3 selama 50 mili saat.
nada (8, NOTE_A3,50); // nada (PinNum, Nama nota, Tempoh);
Bekerja:
Setelah perkakasan anda siap, muat naik kod dan pasangkannya di jari anda. Pastikan badan anda menyentuh permukaan litar pada suatu ketika. Sekarang sentuh bahan konduktif atau badan anda dan anda seharusnya dapat mendengar nada masing-masing. Anda boleh memainkan melodi atau muzik anda sendiri dengan mengetuk pada selang waktu dan kedudukan yang berbeza.
The video di bawah rancangan kerja lengkap projek th. Semoga anda seronok membina projek ini, sebarang cadangan atau pertanyaan dapat disiarkan di bahagian komen di bawah. Lihat juga Arduino Audio Player dan Arduino Tone Generator Project kami.