Isi kandungan:
- Bekalan
- Langkah 1: Mengembangkan Permainan Vokal Dengan Arduino
- Langkah 2:
- Langkah 3:
- Langkah 4: Idea Projek
- Langkah 5:
- Langkah 6: Membina Logik Pengaturcaraan Permainan
- Langkah 7:
- Langkah 8:
- Langkah 9: Fungsi Persediaan Tidak Sah ()
- Langkah 10: Gelung Kekosongan Fungsi Utama ()
- Langkah 11:
- Langkah 12: Kesimpulannya
- Langkah 13: Penghargaan
Video: Permainan Vokal Dengan Arduino dan Modul MP3 YX5300 Catalex: 13 Langkah
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:08
Adakah anda dapat membaca soalan ini? Pelik sungguh! Saya mengemukakan soalan ini dengan sengaja. Sekiranya anda dapat membaca teks ini, ini kerana anda mengetahui keseluruhan abjad dan, tentu saja, mengetahui tentang semua huruf vokal.
Vokal terdapat dalam semua perkataan. Mustahil untuk melepaskan diri dari masing-masing. Sekarang, izinkan saya mengemukakan soalan kepada anda. Adakah pembelajaran masa kecil anda menyeronokkan dan melibatkan sumber teknologi?
Saya yakin bahawa sumber pembelajarannya sedikit dan anda menggunakan kaedah tradisional untuk mempelajari huruf vokal dan abjad.
Bagaimanapun, adakah mungkin menggunakan beberapa sumber teknologi untuk mempelajari vokal?
Dalam artikel ini, saya akan mengajar anda cara mengajar vokal murid dan anak anda melalui permainan.
Saya akan mengajar anda bagaimana membuat sistem dengan suara, di mana anak / pelajar anda akan mendengar bunyi huruf dan mesti menekan butang untuk menunjukkan huruf yang betul.
Oleh itu, mereka akan belajar sambil bermain dan akan sentiasa terdorong untuk belajar.
Sekarang, saya akan menunjukkan kepada anda proses langkah demi langkah untuk membuat permainan anda sendiri, dan mengajar vokal kepada anak-anak.
Bekalan
Papan Litar Bercetak JLCPCB
Arduino Uno
Suis butang tekan
Perintang 10kR
Header Lelaki 2, 54mm 1x7
Langkah 1: Mengembangkan Permainan Vokal Dengan Arduino
Inti permainan adalah papan litar bercetak JLCPCB dari Vokal. Anda boleh mengakses pautan ini dan memuat turun fail projek. Ia mempunyai 5 butang. Anda akan menggunakan setiap butang untuk mewakili vokal dan menghubungkannya ke Arduino anda.
Papan litar bercetak ditunjukkan dalam Rajah 1.
Langkah 2:
Dengan Projek PCB ini, anda boleh menghubungkannya dengan Arduino dan membuat permainan anda. Seterusnya, saya akan menawarkan skema elektronik untuk anda memasang atau membina projek di protoboard anda.
Langkah 3:
Dari skema ini, kami mengatur susun atur papan elektronik. Ini ditunjukkan dalam Rajah 2 dan anda boleh memuat turun fail dan membuat projek anda.
Pilih 5 pin dari Arduino dan sambungkan jumper di papan dengan Arduino. Atau jika tidak, anda boleh memasang rajah elektronik berikut.
Langkah 4: Idea Projek
Saya akan mengajar anda cara memasang sistem suara MP3 dengan Arduino. Sistem ini akan bertanggungjawab untuk menghasilkan semula suara yang menyebut huruf. Bunyi setiap huruf akan dilukis menggunakan nilai dari 1 hingga 5, di mana 1 mewakili A dan 5 mewakili U.
Oleh itu, apabila anak itu mendengar suaranya, dia mesti melihat papan kekunci, mengenali ejaan vokal, dan menekan kekunci yang betul.
Sekiranya gagal, sistem akan memancarkan LED Merah sebanyak 3 kali. Jika tidak, sistem akan mengaktifkan bel selama 5 saat dan menarik vokal baru.
Untuk melakukan ini, anda mesti memasang litar berikut.
Di litar ini, anda akan menyambungkan Modul MP3 dan papan vokal di Arduino. Modul Bluetooth digunakan untuk mewakili Modul MP3 Catalex.
Arduino akan bertanggungjawab untuk menyusun 5 nombor dan kemudian menghantar arahan untuk mengaktifkan vokal yang dilukis
Langkah 5:
Selepas itu, kami akan menunggu sehingga anak mendengar dan menekan butang, seperti yang ditunjukkan dalam Gambar di atas.
Setiap butang di atas mewakili vokal huruf. Seterusnya, saya akan menunjukkan kepada anda bagaimana anda akan membina logik pengaturcaraan untuk projek ini.
Langkah 6: Membina Logik Pengaturcaraan Permainan
Sistem permainan vokal berdasarkan operasi modul YX5300. Modul ini mempunyai beberapa fungsi, namun, kami akan fokus untuk mempersembahkan struktur kerja permainan melalui fungsi utama modul YX5300.
Di bawah ini saya memberikan anda logik pengaturcaraan projek ini.
Langkah 7:
Berikut ini, saya akan menerangkan langkah demi langkah untuk membina logik permainan yang menyeronokkan ini untuk kanak-kanak.
#sertakan
#define ARDUINO_RX 5 // harus menyambung ke TX modul Serial MP3 Player #define ARDUINO_TX 6 // sambungkan ke RX modul SoftwareSerial mp3 (ARDUINO_RX, ARDUINO_TX); stat8 int8_t Send_buf [8] = {0}; // Penyangga untuk arahan Hantar. // LEBIH BAIK secara statik uint8_t ansbuf [10] = {0}; // Penyangga jawapan. // TEMPATAN LEBIH BAIK Rentetan mp3Jawapan; // Jawapan dari MP3. String sanswer (tidak sah); Rentetan sbyte2hex (uint8_t b); / ************ Bait arahan ************************** / #tentukan CMD_NEXT_SONG 0X01 // Mainkan seterusnya lagu. #tentukan CMD_PREV_SONG 0X02 // Mainkan lagu sebelumnya. #tentukan CMD_PLAY_W_INDEX 0X03 # tentukan CMD_VOLUME_UP 0X04 # tentukan CMD_VOLUME_DOWN 0X05 #tentukan CMD_SET_VOLUME 0X06 #tentukan CMD_SNG_CYCL_PLAY 0X08 // Single #definisi CMD_SEL_DEV 0X09 #tentukan CMD_SLEEP_MODE 0X0A #tentukan CMD_WAKE_UP 0X0B #tentukan CMD_RESET 0X0C #tentukan CMD_PLAY 0X0D #tentukan CMD_PLUSE 0X0E #define CMD_Peringkat_Define CMD_Define CMD #tentukan CMD_FOLDER_CYCLE 0X17 #tentukan CMD_SHUFFLE_PLAY 0x18 // #tentukan CMD_SET_SNGL_CYCL 0X19 // Tetapkan satu kitaran. # menentukan CMD_SET_DAC 0X1A # menentukan DAC_ON 0X00 # menentukan DAC_OFF 0X01 # menentukan CMD_PLAY_W_VOL 0X22 # menentukan CMD_PLAYING_N 0x4C # menentukan CMD_QUERY_STATUS 0x42 # menentukan CMD_QUERY_VOLUME 0x43 # menentukan CMD_QUERY_FLDR_TRACKS 0x4e # menentukan CMD_QUERY_TOT_TRACKS 0x48 # menentukan CMD_QUERY_FLDR_COUNT 0x4f / ********* *** Opiton ************************** / #tentukan DEV_TF 0X02 / ************** ************************************************** ***** / int numero; bait estado; bait buzzer = 2; pin bait = 0; bait SortNumber = 0; butang bool = 0; batal persediaan () {Serial.begin (9600); mp3.begin (9600); kelewatan (500); untuk (pin = 8; pin 13) {pin = 8; } Serial.println ("Varrendo …"); Serial.println (pin); // kelewatan (1000); } sambil (butang! = 1); Serial.println ("Saiu …"); jika (butang == 1 && (pin-1)! = UrutkanNombor) {sendCommand (0x03, 0, 6); kelewatan (3000); } jika (butang == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); kelewatan (3000); } // Periksa jawapannya. jika (mp3.available ()) {Serial.println (decodeMP3Answer ()); } kelewatan (100); //Serial.println("Tocando musica… "); } / ************************************************ ******************************** / / * Fungsi sendMP3Command: cari perintah 'c' dan hantar ke MP3 * / / * Parameter: c. Kod untuk Perintah MP3, 'h' untuk pertolongan. * / / * Return: void * / void sendMP3Command (char c) {switch (c) {case '?': Case 'h': Serial.println ("BANTUAN"); Serial.println ("p = Main"); Serial.println ("P = Jeda"); Serial.println ("> = Seterusnya"); Serial.println ("': Serial.println (" Next "); sendCommand (CMD_NEXT_SONG); sendCommand (CMD_PLAYING_N); // minta bilangan fail yang sedang dimainkan; case' Memory card dimasukkan."; Break; case 0x3D: decodedMP3Answer + = "-> Num putar selesai" + String (ansbuf [6], DEC); // sendCommand (CMD_NEXT_SONG); // sendCommand (CMD_PLAYING_N); // minta bilangan fail sedang putus; kes 0x40: decodedMP3Answer + = "-> Ralat"; break; case 0x41: decodedMP3Answer + = "-> Data diterima dengan betul."; break; case 0x42: decodedMP3Answer + = "-> Status dimainkan:" + String (ansbuf [6], DEC); break; case 0x48: decodedMP3Answer + = "-> Bilangan fail:" + String (ansbuf [6], DEC); break; case 0x4C: decodedMP3Answer + = "-> Main:" + String (ansbuf [6], DEC); break; case 0x4E: decodedMP3Answer + = "-> Bilangan fail folder:" + String (ansbuf [6], DEC); break; case 0x4F: decodedMP3Answer + = "-> Bilangan folder:" + String (ansbuf [6], DEC); rehat;} kod semula MP3Answer;} / *********************************** ************ ********************************* / / * Fungsi: Hantar arahan ke MP3 * / / * Parameter: byte command * / / * Parameter: parameter byte dat1 untuk perintah * / / * Parameter: parameter byte dat2 untuk perintah * / batal sendCommand (perintah byte) {sendCommand (perintah, 0, 0); } batal sendCommand (perintah bait, bait dat1, bait dat2) {kelewatan (20); Send_buf [0] = 0x7E; // Send_buf [1] = 0xFF; // Send_buf [2] = 0x06; // Len Send_buf [3] = arahan; // Send_buf [4] = 0x01; // 0x00 TIDAK, 0x01 maklum balas Send_buf [5] = dat1; // datah Send_buf [6] = dat2; // datal Send_buf [7] = 0xEF; // Serial.print ("Menghantar:"); untuk (uint8_t i = 0; i <8; i ++) {mp3.write (Send_buf ); Serial.print (sbyte2hex (Send_buf )); } Bersiri.println (); } / ************************************************ ******************************** / / * Fungsi: sbyte2hex. Mengembalikan data bait dalam format HEX. * / / * Parameter: - uint8_t b. Byte untuk menukar ke HEX. * / / * Return: String * / String sbyte2hex (uint8_t b) {String hex; hex = "0X"; jika (b <16) hex + = "0"; hex + = Rentetan (b, HEX); hex + = ""; pulangkan hex; } / ************************************************ ******************************** / / * Fungsi: shex2int. Mengembalikan int dari rentetan HEX. */ /*Parameter. char * s untuk menukar ke HEX. * / / * Parameter: n. panjang char * s. * / / * Return: int * / int shex2int (char * s, int n) {int r = 0; untuk (int i = 0; i = '0' && s = 'A' && s <= 'F') {r * = 16; r + = (s - 'A') + 10; }} kembali r; } / ************************************************ ******************************** / / * Fungsi: sanswer. Mengembalikan jawapan Rentetan dari modul UART mp3. * / / * Parameter: - uint8_t b. batal. * / / * Kembali: Rentetan. Sekiranya jawapannya dibentuk dengan baik. * / String sanswer (tidak sah) {uint8_t i = 0; Rentetan mp3answer = ""; // Dapatkan hanya 10 Bytes sementara (mp3.available () && (i <10)) {uint8_t b = mp3.read (); ansbuf = b; saya ++; mp3answer + = sbyte2hex (b); } // jika format jawapan betul. if ((ansbuf [0] == 0x7E) && (ansbuf [9] == 0xEF)) {kembali mp3answer; } kembali "???:" + mp3answer; }
Pertama, kami menentukan semua pemboleh ubah program dan alamat daftar akses modul YX5300.
#sertakan
#define ARDUINO_RX 5 // harus menyambung ke TX modul Serial MP3 Player #define ARDUINO_TX 6 // sambungkan ke RX modul SoftwareSerial mp3 (ARDUINO_RX, ARDUINO_TX); stat8 int8_t Send_buf [8] = {0}; // Penyangga untuk arahan Hantar. // LEBIH BAIK secara statik uint8_t ansbuf [10] = {0}; // Penyangga jawapan. // TEMPATAN LEBIH BAIK Rentetan mp3Answer; // Jawapan dari MP3. String sanswer (tidak sah); Rentetan sbyte2hex (uint8_t b); / ************ Bait arahan ************************** / #tentukan CMD_NEXT_SONG 0X01 // Mainkan seterusnya lagu. #tentukan CMD_PREV_SONG 0X02 // Mainkan lagu sebelumnya. #definisi CMD_PLAY_W_INDEX 0X03 #tentukan CMD_VOLUME_UP 0X04 #tentukan CMD_VOLUME_DOWN 0X05 #tentukan CMD_SET_VOLUME 0X06 #tentukan CMD_SNG_CYCL_PLAY 0X08 // Single #definisi CMD_SEL_DEV 0X09 #tentukan CMD_SLEEP_MODE 0X0A #tentukan CMD_WAKE_UP 0X0B #tentukan CMD_RESET 0X0C #tentukan CMD_PLAY 0X0D #tentukan CMD_PLUSE 0X0E #define CMD_Pertahankan_Peringkat_Definisi CMD_Define CMD #tentukan CMD_FOLDER_CYCLE 0X17 #tentukan CMD_SHUFFLE_PLAY 0x18 // #tentukan CMD_SET_SNGL_CYCL 0X19 // Tetapkan satu kitaran. # menentukan CMD_SET_DAC 0X1A # menentukan DAC_ON 0X00 # menentukan DAC_OFF 0X01 # menentukan CMD_PLAY_W_VOL 0X22 # menentukan CMD_PLAYING_N 0x4C # menentukan CMD_QUERY_STATUS 0x42 # menentukan CMD_QUERY_VOLUME 0x43 # menentukan CMD_QUERY_FLDR_TRACKS 0x4e # menentukan CMD_QUERY_TOT_TRACKS 0x48 # menentukan CMD_QUERY_FLDR_COUNT 0x4f / ********* *** Opiton ************************** / #tentukan DEV_TF 0X02 / ************** ************************************************** ***** / int numero; bait estado; bait buzzer = 2; pin bait = 0; bait SortNumber = 0; butang bool = 0;
Langkah 8:
Alamat daftar ini digunakan untuk mengkonfigurasi operasi modul. Sebagai contoh, lihat alamat pendaftaran ini di bawah.
#tentukan CMD_PLAY_W_INDEX 0X03
Alamat 0x03 ditentukan dengan nama CMD_PLAY_W_INDEX. Ini digunakan untuk memicu lagu dari jumlahnya, yaitu, Anda memasukkan jumlah suaranya dan itu akan dimainkan.
Dengan nilai-nilai inilah kita akan menggunakannya dan mengkonfigurasi fungsi projek kita.
Setelah anda menentukan pelbagai alamat yang akan digunakan, kami akan memasuki fungsi persediaan dan mengkonfigurasi pin dan komunikasi bersiri untuk projek kami.
Langkah 9: Fungsi Persediaan Tidak Sah ()
Seterusnya, lihat fungsi penyediaan kekosongan. Saya melakukan semua tetapan pin butang, komunikasi bersiri modul MP3, dan inisialisasi modul kad dalam MP3.
persediaan tidak sah ()
{Serial.begin (9600); mp3.begin (9600); kelewatan (500); untuk (pin = 8; pin <13; pin ++) {pinMode (pin, INPUT); } sendCommand (CMD_SEL_DEV, 0, DEV_TF); kelewatan (500); }
Saya memulakan komunikasi bersiri untuk mencetak data pada siri komputer dan kemudian kami memulakan komunikasi bersiri tersebut melalui objek mp3.
Serial.begin (9600);
mp3.begin (9600); kelewatan (500);
Modul mp3 dikendalikan melalui arahan yang diterima oleh siri Arduino. Dalam proses ini, kami menggunakan perpustakaan SoftwareSerial dan meniru siri pada pin digital Arduino.
Oleh itu, anda akan dapat menggunakan Arduino untuk mengendalikan modul MP3 melalui arahan yang dihantar kepadanya.
Sebagai tambahan, kami membuat konfigurasi pin digital dan inisialisasi modul Kad MP3
untuk (pin = 8; pin <13; pin ++) {pinMode (pin, INPUT); } sendCommand (CMD_SEL_DEV, 0, DEV_TF); kelewatan (500);
Setelah membuat konfigurasi, kita mesti pergi ke logik utama dalam fungsi gelung void.
Langkah 10: Gelung Kekosongan Fungsi Utama ()
Kodnya sangat mudah dan keseluruhan struktur logik disajikan di bawah. Berikut ini, saya akan menerangkan kepada anda logik lengkap fungsi utama.
gelung kosong ()
{pin = 8; randomSeed (analogRead (A0)); numero = rawak (8, 12); Isih Nombor = numero; numero = numero - 7; Serial.println (numero); sendCommand (0x03, 0, numero); kelewatan (1000); lakukan {butang = digitalRead (pin); Serial.println (butang); pin ++; jika (pin> 13) {pin = 8; } Serial.println ("Varrendo …"); Serial.println (pin); // kelewatan (1000); } sambil (butang! = 1); Serial.println ("Saiu …"); jika (butang == 1 && (pin-1)! = UrutkanNombor) {sendCommand (0x03, 0, 6); kelewatan (3000); } jika (butang == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); kelewatan (3000); } // Periksa jawapannya. jika (mp3.available ()) {Serial.println (decodeMP3Answer ()); } kelewatan (100); //Serial.println("Tocando musica… "); }
Pada setiap permulaan kitaran fungsi gelung, kita akan menghasilkan nilai baru antara 8 dan 12 untuk menghasilkan bunyi vokal. Nilai dari 8 hingga 12 merujuk kepada pin digital vokal.
Kod untuk menghasilkan nilai rawak ditunjukkan di bawah.
pin = 8;
randomSeed (analogRead (A0)); numero = rawak (8, 12); SusunNombor = numero;
Sebagai tambahan, kita mengurangkan 7 dari jumlah yang diambil antara 8 dan 12. Ini akan membolehkan kita menunjukkan kedudukan 1 hingga 5 lagu yang dirakam pada kad memori.
numero = numero - 7;
Selepas itu, saya mengeluarkan semula bunyi vokal yang dilukis pada garis di bawah.
sendCommand (0x03, 0, numero);
kelewatan (1000);
Sekarang masa penting telah tiba: saat ketika kita akan membaca butang yang ditekan oleh anak. Bahagian kod ditunjukkan di bawah.
buat
{butang = digitalRead (pin); Serial.println (butang); pin ++; jika (pin> 13) {pin = 8; } Serial.println ("Varrendo …"); Serial.println (pin); // kelewatan (1000); } sambil (butang! = 1);
Gelung ini akan dijalankan sehingga pengguna menekan butang. Gelung membolehkan anda mengimbas 5 pin digital dan ketika anak menekan salah satu butang, ia akan keluar dari gelung dan memeriksa apakah anak itu telah memberi respons dengan betul.
Anda akan melakukan pengesahan menggunakan kod di bawah.
jika (butang == 1 && (pin-1)! = Isih Nombor)
{sendCommand (0x03, 0, 6); kelewatan (3000); } jika (butang == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); kelewatan (3000); }
Syarat pertama akan dilaksanakan apabila pengguna melakukan kesalahan kerana butang ditekan dan nilai pin yang dipicu berbeza dari pin yang ditarik (SortNumber).
Pada ketika ini, anda mesti melaksanakan arahan di bawah.
sendCommand (0x03, 0, 6);
kelewatan (3000);
Perintah ini digunakan untuk mencetuskan nada respons yang salah. Akhirnya, kita mempunyai syarat kedua yang akan digunakan untuk memeriksa sama ada anak itu betul.
jika (butang == 1 && (pin-1) == UrutkanNombor)
{sendCommand (0x03, 0, 7); kelewatan (3000); }
Langkah 11:
Sekiranya butang ditekan dan pin digital yang ditekan sama dengan pin yang dilukis, sistem akan mencetuskan suara jawapan yang betul.
Seperti yang saya jelaskan kepada anda, kod ini sangat mudah dan akan membantu setiap kanak-kanak mengembangkan pengetahuan mereka tentang vokal melalui permainan dengan Arduino.
Pada gambar di atas kotak suara sedang menjalankan lagu yang disimpan dalam Kad SD Modul MP3 YX5300.
Langkah 12: Kesimpulannya
Pendidikan bilik darjah perlu diubah secara berterusan dan Arduino dapat menjadi sekutu besar dalam membuat tugas yang menyeronokkan.
Melalui projek ini, adalah mungkin untuk mengembangkan aktiviti sederhana yang dapat mengembangkan kemahiran anak-anak melalui pengetahuan tentang bunyi dan ejaan setiap vokal.
Tidak seperti kaedah pengajaran tradisional, kanak-kanak akan belajar melalui keseronokan kelas melalui permainan dan elektronik.
Langkah 13: Penghargaan
Projek ini dibangunkan berkat sokongan dan dorongan syarikat JLCPCB. Mereka mendorong pendidikan dan mengajak kami mengembangkan permainan vokal untuk mengajar anak-anak di kelas.
Sekiranya anda ingin membeli plat elektronik Game of Vowels, anda boleh mengakses pautan ini dan membeli 10 unit dengan harga $ 2 di JLCPCB.
Disyorkan:
Cara Membuat Pemain MP3 Dengan LCD Menggunakan Modul Pemain MP3 Arduino dan DFPlayer Mini: 6 Langkah
Cara Membuat Pemain MP3 Dengan LCD Menggunakan Modul Pemain MP3 Arduino dan DFPlayer Mini: Hari ini kita akan membuat pemain MP3 dengan LCD menggunakan Modul Pemain MP3 mini Arduino dan DFPlayer. Projek ini dapat membaca fail MP3 dalam kad SD, dan dapat menjeda dan mainkan sama dengan peranti 10 tahun yang lalu. Dan juga mempunyai lagu sebelumnya dan keseronokan lagu seterusnya
Pengawal Permainan DIY Berasaskan Arduino - Pengawal Permainan Arduino PS2 - Bermain Tekken Dengan Gamepad Arduino DIY: 7 Langkah
Pengawal Permainan DIY Berasaskan Arduino | Pengawal Permainan Arduino PS2 | Bermain Tekken Dengan Gamepad Arduino DIY: Hai kawan-kawan, bermain permainan selalu menyeronokkan tetapi bermain dengan permainan peribadi DIY Controller anda lebih menggembirakan. Oleh itu, kami akan menjadikan Pengawal permainan menggunakan arduino pro micro dalam arahan ini
Cara Memuat Naik Permainan ke Arduboy dan 500 Permainan ke Flash-cart: 8 Langkah
Cara Memuat naik Permainan ke Arduboy dan 500 Permainan ke Flash-cart: Saya membuat beberapa Arduboy buatan sendiri dengan memori Serial Flash yang dapat menyimpan maksimum 500 permainan untuk dimainkan di jalan raya. Saya berharap dapat berkongsi cara memuat permainan ke dalamnya, termasuk bagaimana menyimpan permainan ke dalam memori kilat bersiri dan membuat pakej permainan gabungan anda sendiri
Konsol Permainan Mini Ardubaby Dengan 500 Permainan: 10 Langkah
Ardubaby Mini Game Console Dengan 500 Permainan: Kredit kepada pencipta (Kevin Bates), Arduboy adalah konsol permainan 8 bit yang sangat berjaya. Terdapat beribu-ribu permainan yang ditulis oleh penggemar yang membagikannya secara bebas di forum komuniti Arduboy sehingga lebih banyak orang dapat belajar bagaimana membuat kod. Perisian
Booth Vokal Mini Mudah Alih: 8 Langkah (dengan Gambar)
Mini Vocal Booth Portable: Dalam tutorial ini kita akan membuat bilik vokal mini mudah alih DIY yang boleh digunakan untuk merakam suara anda di jalan raya (pada perakam cakera kilat). Tetapi ada banyak lagi yang dapat dilakukan dengan projek yang mudah dibuat ini. Anda boleh membatalkan kebisingan latar semasa melakukan F