Isi kandungan:

Laser Harp Synthesizer pada Papan Zybo: 10 Langkah (dengan Gambar)
Laser Harp Synthesizer pada Papan Zybo: 10 Langkah (dengan Gambar)

Video: Laser Harp Synthesizer pada Papan Zybo: 10 Langkah (dengan Gambar)

Video: Laser Harp Synthesizer pada Papan Zybo: 10 Langkah (dengan Gambar)
Video: Лазерная арфа 2024, Julai
Anonim
Laser Harp Synthesizer pada Zybo Board
Laser Harp Synthesizer pada Zybo Board

Dalam tutorial ini kita akan membuat kecapi laser yang berfungsi sepenuhnya menggunakan sensor IR dengan antara muka bersiri yang akan membolehkan pengguna mengubah penalaan dan nada instrumen. Alpa ini akan menjadi pembuatan semula abad ke-21 instrumen kuno. Sistem ini dibuat menggunakan papan pengembangan Xilinx Zybo bersama dengan Vivado Design Suites. Apa yang anda perlukan untuk menyelesaikan projek:

  • 12 sensor IR dan pemancar (lebih kurang boleh digunakan bergantung pada bilangan rentetan)
  • Papan pengembangan Zybo Zynq-7000
  • RTOS percuma
  • Vivado Design Suite
  • Kawat (untuk menyambungkan sensor ke papan)
  • 3 keping paip PVC ((2) 18 inci dan (1) 8 inci)
  • 2 siku PVC

Langkah 1: Dapatkan Demo Audio Zybo DMA Digilent

Bahagian FPGA projek ini banyak bergantung pada projek demo yang terdapat di sini. Ia menggunakan akses memori langsung untuk mengirim data secara langsung dari memori yang dapat ditulis oleh pemproses melalui Aliran AXI ke blok audio I2S. Langkah-langkah berikut akan membantu anda menghidupkan dan menjalankan projek demo audio DMA:

  1. Mungkin diperlukan versi baru papan kenyataan untuk papan Zybo. Ikuti arahan ini untuk mendapatkan fail papan baru untuk Vivado.
  2. Ikuti langkah 1 dan 2 dalam arahan di halaman ini untuk membuka projek demo di Vivado. Gunakan kaedah Vivado, bukan penyerahan perkakasan SDK.
  3. Anda mungkin mendapat mesej yang mengatakan bahawa beberapa blok ip anda harus dikemas kini. Jika demikian, pilih "Tunjukkan Status IP" dan kemudian di tab status IP pilih semua IP yang sudah usang dan klik "Tingkatkan Pilihan". Setelah selesai dan tetingkap muncul bertanya sama ada anda ingin menghasilkan produk keluaran, teruskan dan klik "Hasilkan". Sekiranya anda mendapat mesej amaran kritikal, abaikan.
  4. Tukar dari reka bentuk ke tab sumber di Vivado untuk melihat fail sumber. Klik kanan reka bentuk blok "design_1" dan pilih "Buat HDL Wrapper". Apabila diminta, pilih "pembungkus salinan yang dihasilkan untuk membolehkan pengeditan pengguna". Fail pembungkus untuk projek akan dihasilkan.
  5. Setelah langkah-langkah kritikal yang entah bagaimana ditinggalkan dalam tutorial lain selesai, anda boleh kembali ke tutorial yang sebelumnya telah dihubungkan dan teruskan dari langkah 4 hingga akhir dan pastikan bahawa projek demo berjalan dengan betul. Sekiranya anda tidak mempunyai cara untuk memasukkan audio untuk merakamnya, cukup rakam dengan fon kepala anda dan dengarkan bunyi kabur 5-10 saat ketika anda menekan butang main balik. Selagi sesuatu keluar dari bicu fon kepala semasa anda menekan butang main balik, ia mungkin berfungsi dengan betul.

Langkah 2: Buat Beberapa Perubahan di Vivado

Buat Beberapa Perubahan di Vivado
Buat Beberapa Perubahan di Vivado

Oleh itu, sekarang anda mempunyai demo audio DMA Digilent yang berfungsi, tetapi itu bukan tujuan akhir di sini. Oleh itu, kita harus kembali ke Vivado dan membuat beberapa perubahan supaya sensor kita dapat dipasang ke tajuk PMOD dan kita dapat menggunakan nilainya di sisi perisian.

  1. Buka gambarajah blok di Vivado
  2. Buat blok GPIO dengan mengklik kanan di tempat kosong dalam rajah blok dan memilih "Tambah IP" dari menu. Cari dan pilih "AXI GPIO".
  3. Klik dua kali blok IP baru dan di tetingkap IP ubahsuai pergi ke tab konfigurasi IP. Pilih semua input dan tetapkan lebarnya menjadi dua belas, kerana kita akan mempunyai 12 "string" pada kecapi kita dan oleh itu memerlukan 12 sensor. Sekiranya anda ingin menggunakan sensor yang lebih sedikit atau lebih, sesuaikan nombor ini dengan tepat. Tetapkan juga aktifkan gangguan.
  4. Klik kanan blok IP GPIO baru dan pilih "jalankan automasi sambungan". Tandakan kotak AXI dan tekan okay. Ini harus menghubungkan antara muka AXI secara automatik, tetapi membiarkan output blok tidak tersambung.
  5. Untuk memberi ruang kepada gangguan tambahan, klik dua kali pada blok IP xlconcat_0 dan ubah bilangan port dari 4 menjadi 5. Kemudian anda boleh menyambungkan pin ip2intc_irpt dari blok GPIO baru ke port baru yang tidak digunakan pada blok xlconcat.
  6. Klik kanan pada output "GPIO" blok IP GPIO baru dan pilih "buat luaran". Cari di mana garis menuju dan klik pada pentagon sisi kecil dan di sebelah kiri tetingkap akan terbuka di mana anda boleh menukar namanya. Tukar nama menjadi "SENSORS". Penting untuk menggunakan nama yang sama jika anda mahu fail kekangan yang kami sediakan berfungsi, jika tidak, anda perlu menukar nama dalam fail kekangan.
  7. Kembali ke tab sumber, cari fail kekangan dan gantikan dengan fail yang kami sediakan. Anda boleh memilih untuk mengganti fail tersebut atau hanya menyalin kandungan fail kekangan kami dan menampalnya di atas kandungan yang lama. Salah satu perkara penting yang dilakukan oleh fail kekangan kami ialah membolehkan penarik penarik pada tajuk PMOD. Ini diperlukan untuk sensor tertentu yang kami gunakan, namun tidak semua sensor sama. Sekiranya sensor anda memerlukan perintang pulldown, anda boleh mengubah setiap contoh "set_property PULLUP true" dengan "set_property PULLDOWN true". Sekiranya mereka memerlukan nilai perintang yang berbeza daripada yang ada di papan, maka anda boleh mengeluarkan garis ini dan menggunakan perintang luaran. Nama pin terdapat dalam komen dalam fail kekangan, dan sesuai dengan label dalam rajah pertama dalam Skema Zybo halaman yang boleh didapati di sini. Sekiranya anda ingin menggunakan pin pmod yang berbeza, padankan nama dalam fail kekangan dengan label dalam skema. Kami menggunakan header PMOD JE dan JD, dan menggunakan enam pin data pada setiap satu, menghilangkan pin 1 dan 7. Maklumat ini penting semasa menyambungkan sensor anda. Seperti yang ditunjukkan dalam skema, pin 6 dan 12 pada PMODS adalah VCC dan pin 5 dan 11 dibumikan.
  8. Buat semula pembungkus HDL seperti sebelumnya, dan salin dan ganti yang lama. Setelah selesai, jana bitstream dan eksport perkakasan seperti sebelumnya, dan lancarkan semula SDK. Sekiranya anda ditanya sama ada anda mahu mengganti fail perkakasan lama, jawapannya adalah ya. Sebaiknya SDK ditutup semasa anda mengeksport perkakasan sehingga diganti dengan betul.
  9. Lancarkan SDK.

Langkah 3: Dapatkan FreeRTOS Berjalan

Langkah seterusnya adalah mendapatkan FreeRTOS berjalan di papan Zybo.

  1. Sekiranya anda belum mempunyai salinan, muat turun FreeRTOS di sini dan ekstrak failnya.
  2. Import demo FreeRTOS Zynq yang terletak di FreeRTOSv9.0.0 / FreeRTOS / Demo / CORTEX_A9_Zynq_ZC702 / RTOSDemo. Proses import hampir sama dengan projek demo yang lain, namun kerana demo FreeRTOS Zynq bergantung pada fail lain dalam folder FreeRTOS, anda tidak boleh menyalin fail ke ruang kerja anda. Sebaliknya, anda harus meletakkan keseluruhan folder FreeRTOS di dalam folder projek anda.
  3. Buat pakej sokongan papan baru dengan pergi ke "fail" -> "baru" -> "pakej sokongan papan". Pastikan mandiri dipilih dan klik selesai. Selepas beberapa saat tetingkap akan muncul, tandakan kotak di sebelah lwip141 (ini menghentikan salah satu demo FreeRTOS daripada gagal menyusunnya) dan tekan OK. Setelah selesai, klik kanan pada projek RTOSdemo dan pergi ke "properti", pergi ke tab "rujukan projek", dan tandakan kotak di sebelah bsp baru yang anda buat. Mudah-mudahan ia dapat dikenali tetapi kadangkala Xilinx SDK boleh pelik dengan perkara seperti ini. Sekiranya anda masih mendapat ralat selepas langkah ini bahawa xparameters.h hilang atau seperti itu, cuba ulangi langkah ini dan mungkin keluar dan melancarkan semula SDK.

Langkah 4: Tambahkan Kod Harpa Laser

Setelah FreeRTOS diimport, anda boleh membawa fail dari projek kecapi laser ke dalam demo FreeRTOS

  1. Buat folder baru di bawah folder src dalam demo FreeRTOS dan salin dan tampal semua fail c yang disediakan kecuali main.c ke dalam folder ini.
  2. Ganti RTOSDemo main.c dengan main.c.
  3. Sekiranya semuanya dilakukan dengan betul, anda seharusnya dapat menjalankan kod kecapi laser pada ketika ini. Untuk tujuan pengujian, input butang yang digunakan dalam projek demo DMA kini digunakan untuk memainkan suara tanpa sensor terpasang (mana-mana empat butang utama akan berfungsi). Ia akan memainkan rentetan setiap kali anda menekannya dan mengitar semua rentetan dalam sistem melalui beberapa penekanan. Pasang beberapa fon kepala atau pembesar suara ke bicu fon kepala pada papan Zybo dan pastikan anda dapat mendengar bunyi rentetan yang keluar semasa anda menekan butang.

Langkah 5: Mengenai Kod

Ramai di antara anda yang membaca tutorial ini mungkin di sini untuk belajar bagaimana mengatur audio atau menggunakan DMA untuk melakukan sesuatu yang berbeza, atau membuat alat muzik yang berbeza. Atas sebab itu beberapa bahagian seterusnya mendedikasikan untuk menerangkan bagaimana kod yang disediakan berfungsi bersama dengan perkakasan yang dijelaskan sebelumnya untuk mendapatkan output audio yang berfungsi menggunakan DMA. Sekiranya anda memahami mengapa potongan kod itu ada maka anda harus dapat menyesuaikannya dengan apa sahaja yang anda mahu buat.

Mengganggu

Mula-mula saya akan nyatakan bagaimana gangguan dibuat dalam projek ini. Cara kami melakukannya adalah dengan terlebih dahulu membuat struktur jadual vektor interrupt yang melacak ID, pengendali interrupt, dan rujukan ke peranti untuk setiap gangguan. ID gangguan datang dari xparameters.h. Pengendali interrupt adalah fungsi yang kami tulis untuk DMA dan GPIO, dan gangguan I2C berasal dari pemacu Xlic I2C. Rujukan peranti menunjukkan contoh setiap peranti yang kita mulakan di tempat lain. Menjelang akhir fungsi _init_audio satu gelung melewati setiap item dalam jadual vektor gangguan dan memanggil dua fungsi, XScuGic_Connect () dan XScuGic_Enable () untuk menyambung dan mengaktifkan gangguan. Mereka merujuk xInterruptController, yang merupakan pengawal gangguan yang dibuat dalam FreeRTOS main.c secara lalai. Oleh itu pada asasnya kami melampirkan setiap gangguan kami ke alat kawalan gangguan ini yang telah dibuat untuk kami oleh FreeRTOS.

DMA

Kod inisialisasi DMA bermula di lh_main.c. Pertama, contoh statik struktur XAxiDma dinyatakan. Kemudian dalam fungsi _init_audio () ia dikonfigurasi. Mula-mula fungsi konfigurasi dari projek demo dipanggil, yang ada di dma.c. Ia didokumentasikan dengan baik dan datang terus dari demo. Kemudian gangguan disambungkan dan diaktifkan. Untuk projek ini hanya diperlukan gangguan master-to-slave, kerana semua data dihantar oleh DMA ke pengawal I2S. Sekiranya anda ingin merakam audio, anda juga memerlukan gangguan hamba-tuan. Gangguan master-to-slave dipanggil apabila DMA selesai menghantar data apa pun yang anda suruh hantar. Gangguan ini sangat penting untuk projek kami kerana setiap kali DMA selesai mengirimkan satu penyangga sampel audio, ia mesti segera mulai menghantar penyangga berikutnya, jika tidak, terdapat kelewatan yang dapat didengar antara pengiriman. Di dalam fungsi dma_mm2s_ISR () anda dapat melihat bagaimana kami menangani gangguan tersebut. Bahagian penting adalah hampir di akhir di mana kita menggunakan xSemaphoreGiveFromISR () dan portYIELD_FROM_ISR () untuk memberitahu _audio_task () bahawa ia boleh memulakan pemindahan DMA seterusnya. Cara kami menghantar data audio berterusan adalah dengan bergantian antara dua penyangga. Apabila satu penyangga dihantar ke blok I2C, penyangga lain mempunyai nilai yang dikira dan disimpan. Kemudian apabila gangguan datang dari DMA buffer aktif beralih dan buffer yang ditulis baru mula dipindahkan sementara buffer yang dipindahkan sebelumnya mula ditimpa dengan data baru. Bahagian utama fungsi _audio_task adalah di mana fnAudioPlay () dipanggil. fnAudioPlay () mengambil contoh DMA, panjang penyangga, dan penunjuk ke penyangga dari mana data akan dipindahkan. Beberapa nilai dihantar ke daftar I2S untuk memberitahu bahawa lebih banyak sampel akan datang. Kemudian XAxiDma_SimpleTransfer () dipanggil untuk memulakan pemindahan.

Audio I2S

audio.c dan audio.h adalah tempat inisialisasi I2S berlaku. Kod inisialisasi I2S adalah sebilangan besar kod yang biasa terdapat di beberapa tempat, anda mungkin mendapat sedikit variasi dari sumber lain tetapi yang satu ini mesti berfungsi. Ia didokumentasikan dengan baik dan tidak banyak yang perlu diubah untuk projek kecapi. Demo audio DMA dari mana ia mempunyai fungsi untuk beralih ke input mikrofon atau baris sehingga anda dapat menggunakannya jika anda memerlukan fungsi tersebut.

Sintesis Bunyi

Untuk menerangkan bagaimana sintesis suara berfungsi, saya akan menyenaraikan setiap model bunyi yang digunakan dalam pembangunan yang membawa kepada kaedah terakhir, kerana ia akan memberi anda gambaran mengapa ia dilakukan dengan cara yang dilakukan.

Kaedah 1: Satu tempoh nilai sinus dikira untuk setiap rentetan pada frekuensi yang sesuai untuk nota muzik rentetan itu dan disimpan dalam array. Sebagai contoh, panjang array akan menjadi tempoh gelombang sinus dalam sampel, yang sama dengan # sampel / kitaran. Sekiranya kadar persampelan adalah 48kHz dan frekuensi catatan adalah 100Hz, maka ada 48, 000 sampel / saat dan 100 kitaran / saat yang membawa kepada 4800 sampel setiap kitaran, dan panjang array akan menjadi 4800 sampel dan akan mengandungi nilai satu lengkap tempoh gelombang sinus. Semasa rentetan dimainkan, buffer sampel audio diisi dengan mengambil nilai dari array gelombang sinus dan memasukkannya ke dalam buffer audio sebagai sampel, kemudian menambahkan indeks ke dalam array gelombang sinus sehingga menggunakan contoh sebelumnya selama ini daripada 4800 sampel satu kitaran gelombang sinus dimasukkan ke dalam penyangga audio. Operasi modulo digunakan pada indeks array sehingga selalu jatuh antara 0 dan panjang, dan ketika indeks array melampaui ambang tertentu (seperti mungkin sampel bernilai 2 saat) rentetan dimatikan. Untuk memainkan beberapa rentetan pada masa yang sama, perhatikan indeks susunan setiap rentetan secara berasingan dan tambahkan nilai dari gelombang sinus setiap rentetan bersama untuk mendapatkan setiap sampel.

Kaedah 2: Untuk mencipta nada muzik yang lebih, kita mulakan dengan model sebelumnya dan menambahkan harmonik pada setiap frekuensi asas. Frekuensi harmonik adalah frekuensi yang merupakan gandaan bilangan bulat dari frekuensi asas. Tidak seperti ketika dua frekuensi yang tidak berkaitan dijumlahkan bersama, yang menghasilkan dua bunyi yang berbeza dimainkan secara serentak, ketika harmonik ditambahkan bersama, ia terus terdengar seperti satu suara sahaja, tetapi dengan nada yang berbeza. Untuk mencapai ini, setiap kali kita menambahkan nilai gelombang sinus di lokasi (array array% array array) ke sampel audio, kita juga menambahkan (2 * array index% array array), dan (3 * array index% panjang array), dan seterusnya untuk sebilangan besar harmoni yang diinginkan. Indeks darab ini akan melintasi gelombang sinus pada frekuensi yang merupakan gandaan bilangan bulat dari frekuensi asal. Untuk membolehkan kawalan nada lebih banyak, setiap nilai harmonik dikalikan dengan pemboleh ubah yang mewakili jumlah harmonik itu pada keseluruhan suara. Sebagai contoh, gelombang sinus asas mungkin mempunyai nilai semua dikalikan dengan 6 untuk menjadikannya lebih banyak faktor dalam keseluruhan suara, sementara harmonik ke-5 mungkin mempunyai pengganda 1, yang bermaksud nilainya menyumbang lebih sedikit pada keseluruhan suara.

Kaedah 3: Baiklah, jadi sekarang kita mempunyai nada yang sangat bagus pada nota, tetapi masih ada masalah yang sangat penting: mereka bermain dengan jumlah tetap untuk jangka masa yang tetap. Untuk sama sekali berbunyi seperti instrumen sebenar, sebilangan rentetan yang dimainkan harus merosot dengan lancar dari masa ke masa. Untuk mencapai ini, array dipenuhi dengan nilai-nilai fungsi yang merosakkan secara eksponensial. Sekarang ketika sampel audio dibuat, suara yang berasal dari setiap rentetan dihitung seperti pada metode sebelumnya tetapi sebelum ditambahkan ke sampel audio, ia akan didarabkan dengan nilai pada indeks array rentetan dalam array fungsi peluruhan eksponensial. Ini menjadikan bunyi hilang dengan lancar dari masa ke masa. Apabila indeks susunan mencapai akhir susunan peluruhan, rentetan dihentikan.

Kaedah 4: Langkah terakhir ini adalah apa yang benar-benar memberikan rentetan bunyi rentetan realistik mereka. Sebelum mereka terdengar menyenangkan tetapi disintesis dengan jelas. Untuk mencontohi tali kecapi dunia nyata dengan lebih baik, kadar peluruhan yang berbeza diberikan kepada setiap harmonik. Dalam rentetan nyata, ketika rentetan pertama kali dipukul terdapat kandungan harmonik frekuensi tinggi yang menghasilkan bunyi pemetik yang kita harapkan dari tali. Harmonik frekuensi tinggi ini sebentar adalah bahagian utama suara, bunyi rentetan dipukul, tetapi bunyi ini cepat merosot apabila harmonik yang perlahan semakin lama semakin lama. Susunan kerosakan dibuat untuk setiap nombor harmonik yang digunakan dalam sintesis bunyi masing-masing dengan kadar kerosakannya sendiri. Sekarang setiap harmonik boleh didarabkan secara bebas dengan nilai susunan pereputan yang sesuai pada indeks larik rentetan dan ditambahkan pada suaranya.

Secara keseluruhan sintesis suara intuitif tetapi pengiraannya berat. Menyimpan keseluruhan bunyi rentetan dalam memori sekaligus memerlukan terlalu banyak memori, tetapi mengira gelombang sinus dan fungsi eksponen antara setiap bingkai akan memakan waktu terlalu lama untuk mengikuti laju pemutaran audio. Sejumlah helah digunakan dalam kod untuk mempercepat pengiraan. Semua matematik kecuali dalam penciptaan awal jadual peluruhan sinus dan eksponen dilakukan dalam format bilangan bulat, yang memerlukan penyebaran ruang berangka yang tersedia dalam output audio 24 bit. Sebagai contoh, jadual sinus berukuran amplitud 150 sehingga licin tetapi tidak begitu besar sehingga banyak rentetan yang dimainkan bersama dapat menambah lebih dari 24 bit. Begitu juga, nilai jadual eksponensial dikalikan dengan 80 sebelum dibundarkan kepada bilangan bulat dan disimpan. Berat harmonik dapat mengambil nilai diskrit antara 0 dan 10. Juga semua sampel sebenarnya dua kali ganda dan gelombang sinus diindeks oleh 2, berkesan mengurangkan kadar persampelan. Ini mengehadkan frekuensi maksimum yang dapat dimainkan, tetapi diperlukan agar rentetan dan harmonik semasa dikira cukup cepat.

Menciptakan model bunyi ini dan membuatnya berfungsi memerlukan banyak usaha di sisi pemproses, dan akan sangat sukar untuk membuatnya berfungsi di sisi fpga dari awal dalam jangka masa projek ini (bayangkan perlu membuat bitstream setiap masa sekeping verilog diubah untuk menguji suaranya). Walau bagaimanapun, melakukannya di fpga mungkin merupakan kaedah yang lebih baik untuk melakukannya, mungkin menghilangkan masalah tidak dapat mengira sampel dengan cukup cepat dan memungkinkan lebih banyak rentetan, harmonik, dan bahkan kesan audio atau tugas lain dijalankan di sisi pemproses.

Langkah 6: Memasang Sensor

Memasang Sensor
Memasang Sensor

Untuk membuat rentetan, kami menggunakan sensor IR break beam yang akan mengesan ketika tali dimainkan. Kami memesan sensor kami dari pautan berikut. Sensor mempunyai wayar daya, arde, dan data sementara pemancar hanya mempunyai wayar daya dan ground. Kami menggunakan pin 3,3 V dan pin dari tajuk PMOD untuk memberi kuasa kepada pemancar dan sensor. Untuk menghidupkan semua sensor dan pemancar, perlu menghubungkan semua sensor dan pemancar secara selari. Kabel data dari sensor masing-masing perlu pergi ke pin pmod mereka sendiri.

Langkah 7: Membina Kerangka

Membina Kerangka
Membina Kerangka

Untuk membuat bentuk kecapi ketiga-tiga kepingan itu digunakan sebagai rangka untuk meletakkan sensor dan pemancar. Pada salah satu daripada dua kepingan paip PVC 18 inci sejajar sensor dan pemancar secara bergantian 1.5 inci antara satu sama lain dan kemudian pita ke paip. Pada paip PVC 18 inci yang lain selaraskan sensor dan pemancar dalam urutan bergantian tetapi pastikan untuk mengimbangi susunannya (iaitu jika paip pertama mempunyai sensor terlebih dahulu yang kedua harus mempunyai pemancar terlebih dahulu dan sebaliknya). Diperlukan untuk menyolder kabel yang lebih lama pada data, kuasa, dan kabel tanah untuk memastikan mereka dapat mencapai papan.

Langkah 8: Membina Bahagian Luar Kayu

Membina Bahagian Luar Kayu
Membina Bahagian Luar Kayu

Langkah ini adalah pilihan tetapi sangat digalakkan. Bahagian luar kayu bukan sahaja menjadikan kecapi kelihatan bagus tetapi juga melindungi sensor dan wayar dari kerosakan. Bingkai kayu boleh dibuat dengan cincin segi empat tepat dari kayu. Bahagian dalam segi empat tepat harus mempunyai bukaan sekurang-kurangnya 1-1 / 2 inci agar sesuai dengan rangka paip dan sensor. Setelah kerangka dibina gerudi dua lubang yang membolehkan wayar dari sensor dan pemancar keluar untuk menghubungkannya dengan papan.

* Catatan: Dianjurkan untuk menambahkan titik akses agar dapat melepas dan memasukkan kerangka paip sekiranya pembaikan perlu dilakukan atau sedikit penyesuaian perlu dilakukan.

Langkah 9: Menggabungkan Semua Potongan

Menggabungkan Semua Potongan
Menggabungkan Semua Potongan

Setelah semua langkah sebelumnya selesai, sudah tiba masanya untuk membina kecapi. Pertama letakkan kerangka paip di bahagian luar kayu. Kemudian pasangkan wayar untuk sensor dan pemancar ke lokasi yang betul di papan. Kemudian buka SDK dan klik butang debug untuk memprogram papan tulis. Setelah papan diprogram pasangkan sepasang fon kepala atau pembesar suara. Bergantung pada sensor mana yang berakhir di mana port pmod rentetan kecapi anda mungkin tidak sesuai untuk bermula. Kerana sukar untuk mengetahui wayar mana yang masuk ke sensor mana ketika banyak wayar terlibat, kami memasukkan cara untuk memetakan nombor rentetan untuk mengganggu kedudukan bit dalam perisian. Cari "peta sensor int statik [NUM_STRINGS]" dan sesuaikan nilai dalam larik sehingga rentetan dimainkan dari yang paling rendah hingga yang tertinggi mengikut urutan.

Menu boleh digunakan dengan membuka terminal bersiri (mis. RealTerm) dan menetapkan kadar baud ke 115200 dan paparan ke ANSI. Menu boleh dinavigasi dengan menggunakan kekunci w dan s untuk bergerak ke atas dan ke bawah dan kekunci a dan d untuk mengubah nilai.

Langkah 10: ROCK OUT

Setelah kecapi berfungsi sepenuhnya. Kuasai kecapi dan dengar suara manis muzik anda sendiri!

Disyorkan: