Isi kandungan:

Penjana Nada Fabrik Mikrokontroler dalam kod C: 8 Langkah (dengan Gambar)
Penjana Nada Fabrik Mikrokontroler dalam kod C: 8 Langkah (dengan Gambar)

Video: Penjana Nada Fabrik Mikrokontroler dalam kod C: 8 Langkah (dengan Gambar)

Video: Penjana Nada Fabrik Mikrokontroler dalam kod C: 8 Langkah (dengan Gambar)
Video: ЗАПРЕЩЁННЫЕ ТОВАРЫ с ALIEXPRESS 2023 ШТРАФ и ТЮРЬМА ЛЕГКО! 2024, Julai
Anonim
Penjana Nada Fabrik Mikrokontroler dalam kod-C
Penjana Nada Fabrik Mikrokontroler dalam kod-C

Pada akhir Oktober tahun lalu pengguna carmitsu yang diarahkan menghantar mesej kepada saya setelah melihat synth kotak makan tengah hari saya. Dari mesejnya: Saya mengajar muzik di sekolah rendah. Kami memainkan banyak muzik perakam. iaitu anak-anak bermain seruling kecil …… Saya mempunyai beberapa kanak-kanak berkeperluan khas yang boleh menggunakan papan poster hitam ini dengan bulatan yang mempunyai nama nota di atasnya. Pelajar-pelajar ini mendorong bulatan dengan nama-nama nota pada masa yang sama selebihnya pelajar memainkan lagu….. Sebilangan besar kanak-kanak berkeperluan khas dapat melakukan ini dengan baik dan sesuai dengan muzik. Apa yang saya mahukan ialah membina penjana bunyi yang sangat sederhana supaya anak-anak ini dapat bermain dengan nada yang sama dengan yang dimainkan oleh pelajar di rakaman mereka. Saya hanya mempunyai beberapa nada. Saya fikir saya boleh memasang semacam butang kecil di bahagian bawah bulatan mereka sehingga ketika mereka menekannya, suara akan keluar dari pembesar suara kecil, cukup kuat sehingga mereka dapat mendengar. Mempunyai ibu yang merupakan guru dan menyukai sekolah, bagaimana saya boleh menolak? Sejujurnya saya tidak boleh. Ini adalah kronik projek dan arahan bagaimana membina sendiri.

Langkah 1: Permulaan atau Mengapa Saya Tidak Berpegang pada Analog

Permulaan atau Mengapa Saya Tidak Berpegang pada Analog
Permulaan atau Mengapa Saya Tidak Berpegang pada Analog

Perkara yang baik bermula di halaman seterusnya. Sekiranya anda ingin mengetahui bagaimana saya akhirnya menggunakan bahagian yang saya buat, baca terus. Pemasa yang betul: Setelah memberikan beberapa idea kepada projek ini, saya segera memikirkan penjana nada piezo dari buku ops amps Forest Mims III saya. Nampaknya cara yang baik untuk pergi, ini hanyalah piezo, IC 741 dan beberapa komponen pasif. Tiada masalah besar bukan? Ia mempunyai 2 masalah, 1) apabila anda menekan suis, mungkin untuk menukar nada 2) sangat mustahil untuk diselaraskan. Yang pertama mungkin dapat diatasi dengan beberapa teknologi penyingkiran, walaupun saya tidak tahu bagaimana melakukannya tanpa menambahkan pembilang lain. Ini juga boleh menjadi masalah dengan menggunakan piezo. Isu kedua semakin sukar ketika anda mula mencuba rentak tertentu. Bagaimana dengan 555? Lembar data menunjukkan fungsi main waktu berdasarkan perintang dan kapasitor. Yang bagus sehingga anda mula menaip nilai sebenar bahagian dunia nyata, ketika itulah anda akan mendapati bahawa memukul nada 440Hz akan menjadi agak sukar. Anda boleh menggunakan pot pot untuk menyesuaikannya, tetapi lama-kelamaan mereka cenderung bergerak. Sentiasa menala instrumen, yang disusun di atas peningkatan pesat pada kos dan kuantiti bahagian, dan isteri saya membuat perubahan nada ketika dia menekan butang membunuh 555 untuk projek ini. Op-amp: Tidak masalah, orang telah membuat sintesis dengan op-amp sejak sebelum saya dilahirkan. Betapa sukarnya membuat yang sangat sederhana, dengan beberapa bahagian dan nota tertentu? Lebih sukar daripada yang saya sangka. Sebilangan besar reka bentuk di luar sana sangat rumit untuk projek ini. Pereka Synth mempunyai bentuk gelombang / nada yang sempurna. Ini secara langsung bertentangan dengan projek yang sepatutnya cukup murah untuk anggaran sekolah atau guru. Membangun papan kekunci cukup mudah, hanya sekumpulan perintang dan kuasa atau sekumpulan diod dan kuasa. Ini adalah reka bentuk litar yang selebihnya, dan kos komputer peribadi yang mulai tidak dapat digunakan oleh seseorang pada peringkat elektronik permulaan. Takrifan semula projek: Oleh itu, projek itu ditakrifkan semula sebelum saya benar-benar berjaya. Saya memerlukan sesuatu yang boleh menukar pin pembesar suara, dengan tepat, dengan menekan butang. Saya tidak mahu merancang dan membeli PCB. Ini harus menggunakan sebanyak mungkin komponen, dan dipasang sebagai alat pemula. Itu menatap wajah saya sepanjang masa. Duh !! Pengawal mikro! Mikrokontroler: Oleh itu setelah membeli kedua-dua alat Peranti Moden Bare Bones Arduino dan Lembaga Sasaran Sederhana Ilmu Mad dan membiarkan mereka duduk di meja saya selama berbulan-bulan tidak digunakan, saya mempunyai projek pengenalan yang sempurna. Saya mula melihat waktu yang diperlukan untuk menyatukan kedua-duanya, kurva pembelajaran untuk kod, kos, bahagian tambahan yang diperlukan dan membuatnya melakukan apa yang saya mahukan dan menetap di papan sasaran. Kosnya cukup merata, $ 15 ditambah kabel FTDI $ 20 untuk Arduino, $ 12 ditambah pengaturcara USBtinyISP $ 22. Saya sudah tahu C ++ dari kolej kecil yang saya boleh tahan dan menganggap C untuk pengawal mikro tidak seburuk itu, sementara selain berkelip cahaya untuk memastikan saya meletakkan kit saya dengan betul, saya tidak mempunyai pengalaman Arduino. Kedua-duanya boleh dipasang. Ia hampir melambung, jadi saya memutuskan lebih sedikit bahagian dari dua, papan sasaran.

Langkah 2: Apa yang Anda Perlu Rev 1

Apa yang Anda Perlu Rev 1
Apa yang Anda Perlu Rev 1

Bahagian KosUSBtinyISP AVR Programmer Kit (USB SpokePOV Dongle) v2.0 $ 22.00 5-pk $ 2,75https://evilmadscience.com/tinykitlist/74-atmegaxx8Speaker (8-ohm Mini) $ 2.79 5) $ 3.49 (4pack) https://www.radioshack.com/product/index.jsp?productId=2062539"AAA "Pemegang Bateri $ 1.79https://www.radioshack.com/product/index.jsp? ProductId = 2102735SPST Submini Slide Switch (pilihan untuk suis kuasa) $ 2.69 (2-pack) https://www.radioshack.com/product/index.jsp?productId=2062490LED dan perintang (pilihan, jika anda mahukan lampu kuasa) $ semestinya percuma jika mereka berbaringWire $ juga harus berada di sekitarSolver solder (jika ini berlaku di dekat anak-anak anda mungkin tidak boleh menggunakan plumbum, ibu bapa merasa agak pelik tentang perkara semacam itu;)) Menggosok alkohol (untuk bergerak fluks) Sekiranya anda mahu beberapa tempat untuk menjimatkan wang, anda tidak perlu mendapatkan bahagian dari RadioShack. Saya melakukannya kerana mereka dekat dan boleh diramal.

Langkah 3: Perhimpunan Rev 1

Perhimpunan Rev 1
Perhimpunan Rev 1
Perhimpunan Rev 1
Perhimpunan Rev 1

Pasang bahagian anda bersama seperti yang ditunjukkan. Pastikan anda menggunakan alkohol gosok dan sikat fluks apabila anda selesai untuk menyingkirkan sebarang fluks daripada pematerian. Skematik di bawah adalah untuk mereka yang menyukainya. D1 dan R1 boleh menjadi apa sahaja yang anda mahukan, ia hanya lampu kuasa. C1 hanya untuk membantu menjadikan kuasa lebih konsisten. Saya menggunakan 10uF. Skema ini sama untuk versi yang lebih baru, tukar butang tekan untuk menukar kain. dalam semakan terakhir saya menambah suis ke PC4 dan PC5 atau pin 27 dan 28.

Langkah 4: Apa yang Anda Perlu Rev 2

Apa yang Anda Perlu Rev 2
Apa yang Anda Perlu Rev 2

Jadi pada dasarnya anda menukar butang Radio Shack untuk kain buatan tangan. Anda memerlukan: Pelbagai warna kain, atau satu warna jika anda mahukan setiap nota dengan warna yang sama. Bahagian selimut di kedai kain terdekat anda adalah tempat terbaik untuk mendapatkannya dengan harga murah. Kuilt quilt adalah $ 1,50 dan anda boleh mendapatkan satu ton suis dari satu. Fabrik konduktif, saya mencadangkan kain Flectron dari LessEMF itu $ 20 untuk sekeping 12 "x54" Eyelet untuk memasang wayar ke kain. Anda boleh mendapatkannya di kebanyakan kedai kain dengan harga murah. JoAnn mempunyai alat dan 25 untuk $ 2 Anda memerlukan tukul untuk ini. Kawat, saya menggunakan 22AWG, saya cadangkan lebih kecil jika anda memilikinya. Sekering, untuk mendapatkan kain berwarna dan konduktif untuk melekat. Tanya di kedai dan anda mungkin boleh membelinya di halaman. Ini mungkin akan berfungsi dengan baik, walaupun saya mencadangkan anda bertanya kepada seseorangBatting, pada mulanya saya menggunakan barang yang sangat longgar, kemudian beralih ke sesuatu yang lebih ketat. Saya cadangkan anda mencuba beberapa yang berbeza sehingga anda dapat mengetahui apa yang paling sesuai. Panas mengecut, ini menjadikan semuanya lebih mudah dikendalikan. haba mengecilkan wayar bersama-sama semasa mereka saling melintas dan mereka akan jauh lebih baik.

Langkah 5: Perhimpunan Rev 2

Perhimpunan Rev 2
Perhimpunan Rev 2
Perhimpunan Rev 2
Perhimpunan Rev 2
Perhimpunan Rev 2
Perhimpunan Rev 2

Letakkan kain pelbagai warna di atas satu sama lain dan potong persegi, itu tidak semestinya sempurna. Seterika kain untuk melipat, lapisi satu sama lain sekali lagi dan pastikan tepinya sesuai. Potong tepi yang tidak. Potong pusingan atas dan bawah, meninggalkan sisi kiri dan kanan lurus. Anda akan membalikkan suis setelah menjahit jadi jangan membuat sisi bulat terlalu bulat dan tinggalkan ketinggian yang cukup di sisi rata untuk menolak suis dengan mudah apabila anda selesai. Bulatkan sisi rata suis pertama dan terakhir. Teruskan ke mesin jahit anda dan pasangkan dua putaran sehingga bahagian yang baik saling berhadapan dan jahit jahitan pada bahagian rata. Setelah bahagian atas butang dijahit, potong kotak dari kain konduktif dan fius satu sisi. Potong wayar hingga panjang dan jalur satu hujungnya. pateri wayar di sekitar salah satu eyelet. (solder tidak mungkin melekat pada lubang) Potong sedikit kain pada satu sudut dan tukul lubang untuk memasang kain dan wayar. tanggalkan punggung dari peleburan dan fius kain konduktif ke bahagian belakang kain berwarna. Ulangi untuk semua suis. Untuk menjadikannya lebih mudah, anda boleh memanaskan tiub pengecutan bersama setiap kali satu wayar melewati wayar untuk suis seterusnya. Dapatkan atau buat sehelai kain sepanjang set suis dan potong sehelai kain konduktif sepanjangnya. Tidak seperti suis berwarna, ini adalah satu bahagian panjang. Inilah yang disentuh oleh butang untuk membuat sambungan. Potong celah kecil dan pasangkan wayar padanya dengan lubang mata, seperti bahagian atas suis berwarna. Fius ke bahagian belakang kain bawah. Jahit bahagian atas dan bawah bersama dengan kain konduktif menghadap ke luar, gunakan tongkat halaman untuk membalikkan set setelah dijahit. Potong beberapa lubang kecil di pemukul, saya menggunakan sumpit untuk mendapatkan bulatan kemudian lepaskan sumpit dan buat potongan. Potonglah bentuknya dan masukkan ke dalam suis. Inilah yang memisahkan kain konduktif. Mungkin lebih mudah memasukkan pemukul semasa anda menukar suis dan bukannya selepasnya. Barang-barang yang saya gunakan merobek dengan teruk semasa saya memasukkannya dan saya perlu mendapatkan pemukul yang berbeza. Akhirnya pasangkan wayar ke papan sasaran dan anda sudah siap. Jalur bawah panjang akan menjadi tanah.

Langkah 6: Apa yang Anda Perlu Rev 3

Apa yang Anda Perlu Rev 3
Apa yang Anda Perlu Rev 3

Dalam Rev 3 saya membuat suis bebas dari pendawaian. Ini menjimatkan banyak masa. Saya juga lebih gemar melihat hasil akhirnya. Jadi, inilah bahagian baru yang anda perlukan: Snaps, Dapatkannya dari JoAnn's. Mereka datang dengan alat pemasangan yang tidak buruk dengan harga $ 7. Saya akan mencadangkan salah satu alat tang kerana saya terpaksa melepaskan alat saya untuk memasang kancing di tengah. Jahit akan menjadi alternatif yang baik, walaupun mereka memerlukan masa lebih lama untuk dipatuhi. Benang konduktif, Spark Fun mempunyai barang yang boleh masuk ke mesin jahit anda. Saya terpaksa berjalan perlahan di mesin saya atau benang akan pecah. Perbatuan anda mungkin berbeza

Langkah 7: Perhimpunan Rev 3

Perhimpunan Rev 3
Perhimpunan Rev 3
Perhimpunan Rev 3
Perhimpunan Rev 3
Perhimpunan Rev 3
Perhimpunan Rev 3
Perhimpunan Rev 3
Perhimpunan Rev 3

Penyemakan ini jauh lebih baik daripada yang terakhir dari segi masa sehingga dibina. Selain itu, mempunyai suis yang boleh ditanggalkan menyelamatkan kewarasan saya lebih dari sekali. Mulakan dengan membuat pangkalan. Ini hanya satu perempat selimut yang dilipat dua. Letakkan lapisan pemukul di bahagian atas dan jahit, tinggalkan lubang untuk membalikkannya. Tolak benda itu dari lubang dan pada dasarnya anda mempunyai benda jenis bantal. Saya menyarungkannya supaya lebih mudah digunakan. Gunakan benang biasa dan kacang. Saya melakukan berlian untuk ini, tetapi mungkin lain kali saya akan meletakkan naga di belakang, atau sesuatu yang keren. Sekarang, beralih ke suis. Saya suka reka bentuk ini kerana pada dasarnya anda dapat membuat ini lebih awal dan hanya menggunakan apa yang anda mahukan. mulakan dengan menggunakan sekeping kadbod, kertas, atau kain sekerap dan potong bentuk pir dari dalamnya. Gunakan itu sebagai panduan untuk memotong bahagian atas dan bawah untuk setiap suis. Saya memotong satu warna untuk setiap bahagian bawah dan warna yang berbeza untuk bahagian atasnya, tetapi anda boleh menjadi kreatif dan melakukan apa yang anda mahukan. Potong panduan anda untuk bentuk lolipop yang mudah dipasang di dalam suis. Panjangkan "tongkat" sehingga boleh membungkus tepi "pir". Potong bentuk dari kain pelekat dan konduktif dan fius satu sisi kain konduktif. Tanggalkan bahagian belakang dari bahan pelebur dan fius ke bahagian atas kain yang akan berada di bahagian bawah dan bahagian bawah kain yang akan berada di bahagian atas. Balut bahagian tambahan di bahagian atas. Pergi ke mesin jahit anda dan pasangkan batting dengan lubang di antara kain atas dan bawah. Jahit di luar kain konduktif dan langkau bahagian "batang" suis. Saya dapati menjahit kain konduktif atas ke bahagian bawah menjadikannya pendek. Lebih baik tidak menjahit kain konduktif. Pasang kancing dan suis selesai. Saya merasa lebih senang menggunakan snap lelaki untuk semua sambungan bawah / GND dan snap wanita untuk semua bahagian atas. Ini menjadikan semua suis boleh ditukar ganti. Litar: Perkara mengenai putaran ialah anda mempunyai banyak bit tambahan. Saya mengambil sekerap saya, menyatukan kepingan besar yang menyatu hingga sehelai kain konduktif besar dan menggunakannya untuk memotong segi empat kecil yang saya gunakan sebagai alas. Keluarkan suis anda dengan kasar dan pasangkan alas ke pangkal dengan ruang yang cukup untuk menjahit garis ke arah mereka dan buat sekejap. Kaki mesin jahit yang saya gunakan tidak semestinya benar-benar dekat dengan jepitan, jadi ingatlah dan beri ruang kepada diri sendiri. Oleh kerana saya mendapat benang konduktif yang boleh masuk ke mesin jahit saya, saya hanya menjahit garis dari pad ke pad dan belakang. Saya terpaksa lambat atau benang akan pecah, tetapi lebih cepat daripada menjahit tangan. Juga dengan benang konduktif pada gelendong dan jarum, saya mendapat sambungan kukuh yang sangat baik. Barang-barangnya seperti gila, tetapi sedikit lem kraf atau Elmers membersihkannya. Cuba menjauhkan garis antara satu sama lain dan anda tidak seharusnya mempunyai masalah. Perhimpunan terakhir: Tangkap semua suis anda, sambungkan papan, memuatkan kod dan anda sudah selesai. Saya menggunakan wayar untuk pergi dari papan ke alas dan kemudian menjahit wayar ke pangkal dengan tangan. Untuk versi seterusnya, saya akan memasang papan di dalam kotak plastik dengan terkunci untuk melekatkannya ke pangkal supaya jari yang terbiar tidak menariknya.

Langkah 8: Kod

Kod
Kod

Sekiranya anda tidak pernah memprogram cip sebelumnya, ini adalah tugas yang agak menakutkan. Ini tidak membantu bahawa alat itu tidak stabil dan selalunya anda harus melakukan operasi yang sama beberapa kali. Dua sumber terbaik yang saya dapati untuk mendapatkan pemahaman tentang apa yang berlaku adalah halaman untuk USBtinyISP, https://www.ladyada.net/make/usbtinyisp/ dan kursus kemalangan dalam memprogram mainan kebisingan, http: / /blog.makezine.com/archive/2008/05/noise_toy_crashcourse_in.html Ini mesti dapat memulakan anda.

Banyak orang menyukai Arduino untuk pengekodan ini dan tidak ada salahnya menggunakannya, kecuali saya merasakan ia menambahkan banyak masalah pada program yang biasanya sederhana. Juga, saya kenal C dan tidak kenal Arduino. Mungkin suatu hari, jika ada masa.:) Kod: {{{#include // Gunakan pin untuk menghidupkan SPK /// Typedefs ////////// typedef unsigned char u8; int utama (tidak sah) {u8 btnState0; u8 btnState1; u8 btnState2; u8 btnState3; u8 btnState4; u8 btnState5; u8 btnState6; DDRB = (1 << DDB6); // Tetapkan SPK untuk output PORTD = (1 << PD0) | (1 << PD1) | (1 << PD2) | (1 << PD3) | (1 << PD4); // Tetapkan Butang Tinggi PORTC = (1 << PC4) | (1 << PC6); TCCR2B = (1 << CS21); // Sediakan Pemasa semasa (1) {btnState0 = ~ PINC & (1 << PC5); btnState1 = ~ PINC & (1 << PC4); btnState2 = ~ JAUH & (1 << PD0); btnState3 = ~ PIND & (1 << PD1); btnState4 = ~ JAUH & (1 << PD2); btnState5 = ~ JAUH & (1 << PD3); btnState6 = ~ PIND & (1 << PD4); if (btnState0) {if (TCNT2> = 190) {PORTB ^ = (1 << PD6); // Balikkan Pin SPK TCNT2 = 0; }} if (btnState1) {if (TCNT2> = 179) {PORTB ^ = (1 << PD6); // Balikkan Pin SPK TCNT2 = 0; }} if (btnState2) {if (TCNT2> = 159) {PORTB ^ = (1 << PD6); // Balikkan Pin SPK TCNT2 = 0; }} if (btnState3) {if (TCNT2> = 142) {PORTB ^ = (1 << PD6); // Balikkan Pin SPK TCNT2 = 0; }} if (btnState4) {if (TCNT2> = 126) {PORTB ^ = (1 << PD6); // Balikkan Pin SPK TCNT2 = 0; }} if (btnState5) {if (TCNT2> = 119) {PORTB ^ = (1 << PD6); // Balikkan Pin SPK TCNT2 = 0; }} if (btnState6) {if (TCNT2> = 106) {PORTB ^ = (1 << PD6); // Balikkan Pin SPK TCNT2 = 0; }}}}}}} Dari mana asalnya? Sedikit matematik diperlukan. Jam pemasa pada atmega 168 berjalan pada 1MHz. Itu terlalu pantas untuk audio sehingga kita harus menggunakan prescaler / 8. Oleh kerana kita perlu membalikkan pin output tinggi dan rendah untuk membuat 1 kitaran, kita perlu membahagikan jawapan dengan 2 agar dapat menghasilkan nada yang tepat. Rumusnya kelihatan seperti ini, Pitch untuk dimasukkan dalam kod = (1000000/8) / (Kekerapan sasaran * 2) Untuk A (440) ini akan menjadi 125000/880 = 142.045 atau 142 untuk tujuan kita, kerana nilainya harus berupa bilangan bulat. Kekerapan nota sasaran boleh didapati hampir di mana sahaja dalam talian dan umumnya sama. Saya masih mahu menambahkan pernyataan kes dan bukannya menggunakan sekumpulan Ifs dan menggunakan PWM untuk mengawal kelantangan dan nada pembesar suara dengan lebih baik, tetapi buat masa ini, ini berfungsi.

Disyorkan: