Orodha ya maudhui:

Mchezo wa Vokali Na Arduino na YX5300 MP3 Module Catalex: Hatua 13
Mchezo wa Vokali Na Arduino na YX5300 MP3 Module Catalex: Hatua 13

Video: Mchezo wa Vokali Na Arduino na YX5300 MP3 Module Catalex: Hatua 13

Video: Mchezo wa Vokali Na Arduino na YX5300 MP3 Module Catalex: Hatua 13
Video: #SanTenChan читает гнома из второй серии книги Сани Джезуальди Нино Фрассики! 2024, Novemba
Anonim
Mchezo wa Vokali Na Arduino na YX5300 MP3 Module Catalex
Mchezo wa Vokali Na Arduino na YX5300 MP3 Module Catalex

Je! Una uwezo wa kusoma swali hili? Hiyo ni ajabu! Niliuliza swali hili kwa makusudi. Ikiwa unaweza kusoma maandishi haya, ni kwa sababu unajua alfabeti nzima na, kwa kweli, umejifunza juu ya vokali zote.

Vokali zipo kwa maneno yote. Haiwezekani kutoroka kutoka kwa kila mmoja wao. Sasa, wacha nikuulize swali. Je! Ujifunzaji wako wa utotoni ulikuwa wa kufurahisha na ulihusisha rasilimali za kiteknolojia?

Nina hakika kuwa rasilimali za kujifunzia zilikuwa chache na ulitumia njia za kitamaduni kujifunza vokali na alfabeti.

Baada ya yote, inawezekana kutumia rasilimali za kiteknolojia kujifunza vokali?

Katika nakala hii, nitakufundisha jinsi ya kufundisha wanafunzi wako na watoto vokali kupitia mchezo.

Nitakufundisha jinsi ya kuunda mfumo na sauti, ambapo mtoto wako / mwanafunzi atasikia sauti ya barua na lazima abonyeze kitufe kuonyesha herufi sahihi.

Kwa hivyo, watajifunza wakati wa kucheza na watahimizwa kusoma kila wakati.

Sasa, nitakuonyesha hatua kwa hatua ya kuunda mchezo wako mwenyewe, na kufundisha vokali kwa watoto.

Vifaa

Bodi ya Mzunguko iliyochapishwa ya JLCPCB

Arduino Uno

Kubadili Pushbutton

Resistor ya 10kR

Kichwa cha kiume 2, 54mm 1x7

Hatua ya 1: Kuendeleza Mchezo wa Vokali na Arduino

Kuendeleza Mchezo wa Vokali Na Arduino
Kuendeleza Mchezo wa Vokali Na Arduino

Kiini cha mchezo ni JLCPCB iliyochapishwa bodi ya mzunguko wa Vokali. Unaweza kufikia kiunga hiki na kupakua faili za mradi. Ina vifungo 5. Utatumia kila kitufe kuwakilisha vokali na kuiunganisha kwa Arduino yako.

Bodi ya mzunguko iliyochapishwa imeonyeshwa kwenye Mchoro 1.

Hatua ya 2:

Picha
Picha

Na Mradi huu wa PCB, unaweza kuiunganisha na Arduino na kuunda mchezo wako. Ifuatayo, nitakupa skimu ya elektroniki kwako kukusanyika au kujenga mradi kwenye kitabu chako cha maandishi.

Hatua ya 3:

Kutoka kwa mpango huu, tunaanzisha mpangilio wa bodi ya elektroniki. Imeonyeshwa kwenye Kielelezo 2 na unaweza kupakua faili na kutengeneza mradi wako.

Chagua pini 5 kutoka Arduino na unganisha warukaji kwenye ubao na Arduino. Au vinginevyo, unaweza kukusanya mchoro ufuatao wa elektroniki.

Hatua ya 4: Wazo la Mradi

Wazo la Mradi
Wazo la Mradi

Nitakufundisha jinsi ya kukusanya mfumo wa sauti wa MP3 na Arduino. Mfumo huu utawajibika kwa kuzaa tena sauti inayozungumza barua hiyo. Sauti ya kila herufi itachorwa kwa kutumia thamani kutoka 1 hadi 5, ambapo 1 inawakilisha A na 5 inawakilisha U.

Kwa hivyo, mtoto anaposikia sauti, lazima aangalie kibodi, atambue spelling ya vokali, na bonyeza kitufe sahihi.

Ikiwa inashindwa, mfumo utawasha LED Nyekundu mara 3. Vinginevyo, mfumo utaamsha buzzer kwa sekunde 5 na kuteka vowel mpya.

Ili kufanya hivyo, lazima ukusanye mzunguko ufuatao.

Katika mzunguko huu, utaunganisha Moduli ya MP3 na ubao wa vokali kwenye Arduino. Moduli ya Bluetooth ilitumika kuwakilisha Moduli ya MP3 ya Catalex.

Arduino atawajibika kupanga nambari 5 na kisha kutuma amri ya kuamsha vokali inayotolewa

Hatua ya 5:

Picha
Picha

Baada ya hapo, tutasubiri hadi mtoto asikie na kubonyeza kitufe, kama inavyoonyeshwa kwenye Kielelezo hapo juu.

Kila kitufe hapo juu kinawakilisha vokali ya alfabeti. Ifuatayo, nitakuonyesha jinsi utaunda mantiki ya programu ya mradi huu.

Hatua ya 6: Kuunda Mantiki ya Programu ya Mchezo

Kujenga Mantiki ya Programu ya Mchezo
Kujenga Mantiki ya Programu ya Mchezo

Mfumo wa mchezo wa vokali unategemea utendaji wa moduli ya YX5300. Moduli hii ina kazi kadhaa, hata hivyo, tutazingatia kuwasilisha muundo wa kazi wa mchezo kupitia kazi kuu za moduli ya YX5300.

Hapa chini ninakupa mantiki yote ya programu.

Hatua ya 7:

Katika yafuatayo, nitaelezea hatua kwa hatua kujenga mantiki ya mchezo huu wa kufurahisha kwa watoto.

# pamoja

#fafanua ARDUINO_RX 5 // inapaswa kuungana na TX ya moduli ya Serial MP3 Player #fafanua ARDUINO_TX 6 // unganisha na RX ya moduli SoftwareSerial mp3 (ARDUINO_RX, ARDUINO_TX); tuli int8_t Send_buf [8] = {0}; // Bafa ya Tuma amri. // BORA ZAIDI ZAIDI tuli tuli8_t ansbuf [10] = {0}; // Bafa ya majibu. // BORA ZA KIENYEZURI Kamba mp3Jibu; // Jibu kutoka MP3. Sanswer ya kamba (batili); Kamba sbyte2hex (uint8_t b); / ***** wimbo. #fafanua CMD_PREV_SONG 0X02 // Cheza wimbo uliopita. #fafanua CMD_PLAY_W_INDEX 0X03 #fafanua CMD_VOLUME_UP 0X04 #fafanua CMD_VOLUME_DOWN 0X05 #fafanua CMD_SET_VOLUME 0X06 #fafanua CMD_SNG_CYCL_PLAY 0X08 // Mzunguko mmoja Cheza. #fafanua CMD_SEL_DEV 0X09 #fafanua CMD_SLEEP_MODE 0X0A #fafanua CMD_WAKE_UP 0X0B #fafanua CMD_RESET 0X0C #fafanua CMD_PLAY 0X0D #fafanua CMD_PAUSE 0X0E #define CMD_PLAY_OLD_Fold 0 #fafanua CMD_FOLDER_CYCLE 0X17 #fafanua CMD_SHUFFLE_PLAY 0x18 // #fafanua CMD_SET_SNGL_CYCL 0X19 // Weka mzunguko mmoja. # define CMD_SET_DAC 0X1A # define DAC_ON 0X00 # define DAC_OFF 0X01 # define CMD_PLAY_W_VOL 0X22 # define CMD_PLAYING_N 0x4C # define CMD_QUERY_STATUS 0x42 # define CMD_QUERY_VOLUME 0x43 # define CMD_QUERY_FLDR_TRACKS 0x4e # define CMD_QUERY_TOT_TRACKS 0x48 # define CMD_QUERY_FLDR_COUNT 0x4f / ********* *** Opitons ************************* / / #fafanua DEV_TF 0X02 / ************** ************************************************** ***** / int nambari; byte estado; buzzer ya byte = 2; pini ya baiti = 0; Aina ya nambari = 0; kifungo cha bool = 0; kuanzisha batili () {Serial.begin (9600); mp3. anza (9600); kuchelewesha (500); kwa (pin = 8; pin 13) {pin = 8; } Serial.println ("Varrendo…"); Serial.println (pini); // kuchelewa (1000); } wakati (kifungo! = 1); Serial.println ("Saiu…"); ikiwa (kifungo == 1 && (pin-1)! = SortNumber) {sendCommand (0x03, 0, 6); kuchelewesha (3000); } ikiwa (kifungo == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); kuchelewesha (3000); } // Angalia jibu. ikiwa (mp3 haipatikani ()) {Serial.println (decodeMP3Answer ()); } kuchelewa (100); //Serial.println ("Tocando musica…"); } / ************************************************ ******************************* / / * Kazi sendMP3 Amri: tafuta amri ya 'c' na uitumie MP3 Kigezo: c. Nambari ya Amri ya MP3, 'h' kwa msaada. * / / * Kurudi: batili * / batili sendMP3Command (char c) {switch (c) {kesi '?': Kesi 'h': Serial.println ("HELP"); Serial.println ("p = Cheza"); Serial.println ("P = Sitisha"); Serial.println ("> = Ifuatayo"); Serial.println ("': Serial.println (" Next "); sendCommand (CMD_NEXT_SONG); sendCommand (CMD_PLAYING_N);: decodedMP3Answer + = "-> Mchezo uliokamilishwa num" + Kamba (ansbuf [6], DEC); // sendCommand (CMD_NEXT_SONG); // sendCommand (CMD_PLAYING_N);: decodedMP3Answer + = "-> Kosa"; kuvunja; kesi 0x41: imesimbuliwaMP3Answer + = "-> Takwimu zimerejeshwa kwa usahihi."; kuvunja; kesi 0x42: imesimbwaMP3Answer + = "-> Hali ya kucheza:" + Kamba (ansbuf [6], Kesi ya 0x48: decodedMP3Answer + = "-> Hesabu ya faili:" + Kamba (ansbuf [6], DEC); kuvunja; kesi 0x4C: imesimbwaMP3Answer + = "-> Inacheza:" + Kamba (ansbuf [6] Kesi 0x4E: decodedMP3Answer + = "-> Folda ya hesabu ya faili:" + Kamba (ansbuf [6], DEC); kuvunja; kesi 0x4F: imesimbwaMP3Answer + = "-> Hesabu ya folda:" + Kamba (ansbuf [6], DEC); kuvunja;} kurudi kunasibishwaMP3Jibu;} / *************************************** ************ ******************************* / / * Kazi: Tuma amri kwa MP3 * / / * Parameter: byte amri * / / * Parameter: byte dat1 parameter kwa amri * / / * Parameter: byte dat2 parameter for the command * / void sendCommand (byte command) {sendCommand (command, 0, 0); } batili kutumaCommand (amri ya baiti, byte dat1, byte dat2) {kuchelewesha (20); Send_buf [0] = 0x7E; // Send_buf [1] = 0xFF; // Send_buf [2] = 0x06; // Len Send_buf [3] = amri; // Send_buf [4] = 0x01; // 0x00 HAPANA, maoni 0x01 Send_buf [5] = dat1; // datah Send_buf [6] = dat2; // data Send_buf [7] = 0xEF; // Serial.print ("Kutuma:"); kwa (uint8_t i = 0; i <8; i ++) {mp3.write (Send_buf ); Serial.print (sbyte2hex (Send_buf )); } Serial.println (); } / ************************************************ ******************************* / / * Kazi: sbyte2hex. Hurejesha data ya baiti katika fomati ya HEX. * / / * Kigezo: - uint8_t b. Byte kubadilisha kuwa HEX. * / / * Kurudi: Kamba * / Kamba sbyte2hex (uint8_t b) {Kamba ya kamba; shex = "0X"; ikiwa (b <16) shex + = "0"; shex + = Kamba (b, HEX); shex + = ""; kurudi shex; } / ************************************************ ******************************** / / * Kazi: shex2int. Hurejesha int kutoka kwa kamba ya HEX. Kigezo: s. char * s kubadilisha kuwa HEX. Kigezo: n. urefu wa char * s. * / / * Kurudi: int * / int shex2int (char * s, int n) {int r = 0; kwa (int i = 0; i = '0' && s = 'A' && s <= 'F') {r * = 16; r + = (s - 'A') + 10; }} kurudi r; } / ************************************************ ******************************* / / * Kazi: sanswer. Hurejesha jibu la Kamba kutoka kwa moduli ya UART mp3. * / / * Kigezo: - uint8_t b. utupu. * / / * Kurudi: Kamba. Ikiwa jibu limeundwa vizuri jibu. * / Sanswer ya kamba (batili) {uint8_t i = 0; Kamba mp3answer = ""; // Pata baiti 10 tu wakati (mp3.patikana () && (i <10)) {uint8_t b = mp3.read (); ansbuf = b; i ++; mp3 majibu + = sbyte2hex (b); } // ikiwa muundo wa jibu ni sahihi. ikiwa ((ansbuf [0] == 0x7E) && (ansbuf [9] == 0xEF)) {kurudi mp3answer; } kurudi "???:" + mp3answer; }

Kwanza, tunafafanua anuwai zote za programu na anwani za rejista za upatikanaji wa moduli ya YX5300.

# pamoja

#fafanua ARDUINO_RX 5 // inapaswa kuungana na TX ya moduli ya Serial MP3 Player #fafanua ARDUINO_TX 6 // unganisha na RX ya moduli SoftwareSerial mp3 (ARDUINO_RX, ARDUINO_TX); tuli int8_t Send_buf [8] = {0}; // Bafa ya Tuma amri. // BORA ZAIDI ZAIDI tuli tuli8_t ansbuf [10] = {0}; // Bafa ya majibu. // BORA ZA KIENYEZURI Kamba mp3Jibu; // Jibu kutoka MP3. Sanswer ya kamba (batili); Kamba sbyte2hex (uint8_t b); / ***** wimbo. #fafanua CMD_PREV_SONG 0X02 // Cheza wimbo uliopita. #fafanua CMD_PLAY_W_INDEX 0X03 #fafanua CMD_VOLUME_UP 0X04 #fafanua CMD_VOLUME_DOWN 0X05 #fafanua CMD_SET_VOLUME 0X06 #fafanua CMD_SNG_CYCL_PLAY 0X08 // Mzunguko mmoja Cheza. #fafanua CMD_SEL_DEV 0X09 #fafanua CMD_SLEEP_MODE 0X0A #fafanua CMD_WAKE_UP 0X0B #fafanua CMD_RESET 0X0C #fafanua CMD_PLAY 0X0D #fafanua CMD_PAUSE 0X0E #define CMD_PLAY_OLD_Fold 0 #fafanua CMD_FOLDER_CYCLE 0X17 #fafanua CMD_SHUFFLE_PLAY 0x18 // #fafanua CMD_SET_SNGL_CYCL 0X19 // Weka mzunguko mmoja. # define CMD_SET_DAC 0X1A # define DAC_ON 0X00 # define DAC_OFF 0X01 # define CMD_PLAY_W_VOL 0X22 # define CMD_PLAYING_N 0x4C # define CMD_QUERY_STATUS 0x42 # define CMD_QUERY_VOLUME 0x43 # define CMD_QUERY_FLDR_TRACKS 0x4e # define CMD_QUERY_TOT_TRACKS 0x48 # define CMD_QUERY_FLDR_COUNT 0x4f / ********* *** Opitons ************************* / / #fafanua DEV_TF 0X02 / ************** ************************************************** ***** / int nambari; byte estado; buzzer ya byte = 2; pini ya baiti = 0; Aina ya nambari = 0; kifungo cha bool = 0;

Hatua ya 8:

Anwani hizi za rejista hutumiwa kusanidi utendaji wa moduli. Kwa mfano, angalia anwani hii ya usajili hapa chini.

#fafanua CMD_PLAY_W_INDEX 0X03

Anwani 0x03 inafafanuliwa na jina CMD_PLAY_W_INDEX. Inatumika kuchochea wimbo kutoka kwa nambari yake, ambayo ni kwamba, unaingiza idadi ya sauti na itachezwa.

Itakuwa na maadili haya ambayo tutayatumia na kusanidi utendaji wa mradi wetu.

Baada ya kufafanua anwani anuwai ambazo zitatumika, tutaingiza kazi ya kusanidi na kusanidi pini na mawasiliano ya serial kwa mradi wetu.

Hatua ya 9: Usanidi wa Utupu () Kazi

Ifuatayo, angalia kazi ya usanidi batili. Nilifanya mipangilio yote ya pini za vifungo, mawasiliano ya serial ya moduli ya MP3, na uanzishaji wa moduli ya kadi kwenye MP3.

kuanzisha batili ()

{Serial.begin (9600); mp3. anza (9600); kuchelewesha (500); kwa (pin = 8; pin <13; pin ++) {pinMode (pin, INPUT); } kutumaCommand (CMD_SEL_DEV, 0, DEV_TF); kuchelewesha (500); }

Nilianzisha mawasiliano ya serial ili kuchapisha data kwenye serial ya kompyuta na kisha tukaanzisha mawasiliano ya serial kupitia kitu cha mp3.

Kuanzia Serial (9600);

mp3. anza (9600); kuchelewesha (500);

Moduli ya mp3 inadhibitiwa kupitia amri zilizopokelewa na safu ya Arduino. Katika mchakato huu, tulitumia maktaba ya SoftwareSerial na kuiga mfululizo kwenye pini za dijiti za Arduino.

Kwa hivyo, utaweza kutumia Arduino kudhibiti moduli ya MP3 kupitia amri zilizotumwa kwake.

Kwa kuongeza, tulifanya usanidi wa pini za dijiti na uanzishaji wa moduli ya Kadi ya MP3

kwa (pin = 8; pin <13; pin ++) {pinMode (pin, INPUT); } kutumaCommand (CMD_SEL_DEV, 0, DEV_TF); kuchelewesha (500);

Baada ya kufanya usanidi, lazima tuende kwa mantiki kuu katika kazi ya kitanzi batili.

Hatua ya 10: Kazi Kuu ya Utupu ()

Nambari ni rahisi sana na muundo wote wa kimantiki unawasilishwa hapa chini. Katika yafuatayo, nitakuelezea mantiki kamili ya kazi kuu.

kitanzi batili ()

{pini = 8; randomSeed (AnalogSoma (A0)); nambari = bila mpangilio (8, 12); Aina ya Nambari = nambari; nambari = nambari - 7; Serial.println (numero); sendCommand (0x03, 0, numero); kuchelewesha (1000); fanya {button = digitalRead (pin); Serial.println (kifungo); pini ++; ikiwa (pini> 13) {pini = 8; } Serial.println ("Varrendo…"); Serial.println (pini); // kuchelewa (1000); } wakati (kifungo! = 1); Serial.println ("Saiu…"); ikiwa (kifungo == 1 && (pin-1)! = SortNumber) {sendCommand (0x03, 0, 6); kuchelewesha (3000); } ikiwa (kifungo == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); kuchelewesha (3000); } // Angalia jibu. ikiwa (mp3 haipatikani ()) {Serial.println (decodeMP3Answer ()); } kuchelewa (100); //Serial.println ("Tocando musica…"); }

Katika kila mwanzo wa mzunguko wa kazi ya kitanzi, tutazalisha thamani mpya kati ya 8 na 12 ili kutoa sauti ya vokali. Thamani kutoka 8 hadi 12 inahusu pini ya dijiti ya vokali.

Nambari ya kutengeneza thamani isiyo ya kawaida imeonyeshwa hapa chini.

pini = 8;

randomSeed (AnalogSoma (A0)); nambari = bila mpangilio (8, 12); Aina ya Nambari = nambari;

Kwa kuongezea, tunatoa 7 kutoka kwa kiasi kilichochorwa kati ya 8 na 12. Hii itaturuhusu kuashiria nafasi ya 1 hadi 5 ya nyimbo zilizorekodiwa kwenye kadi ya kumbukumbu.

nambari = nambari - 7;

Baada ya hapo, nilizaa tena sauti ya vokali iliyochorwa kwenye mstari hapa chini.

sendCommand (0x03, 0, numero);

kuchelewesha (1000);

Sasa wakati muhimu umefika: wakati ambapo tutasoma kitufe kilichobanwa na mtoto. Sehemu ya nambari inawasilishwa hapa chini.

fanya

{kifungo = kusoma kwa dijiti (pini); Serial.println (kifungo); pini ++; ikiwa (pini> 13) {pini = 8; } Serial.println ("Varrendo…"); Serial.println (pini); // kuchelewa (1000); } wakati (kifungo! = 1);

Kitanzi hiki kitatekelezwa mpaka mtumiaji atakapobonyeza vifungo. Kitanzi hukuruhusu kuchanganua pini 5 za dijiti na wakati mtoto anapobonyeza kitufe kimoja, kitatoka kitanzi na kuangalia ikiwa mtoto amejibu kwa usahihi.

Utafanya uhakiki kwa kutumia nambari iliyo hapa chini.

ikiwa (kifungo == 1 && (pin-1)! = SortNumber)

{sendCommand (0x03, 0, 6); kuchelewesha (3000); } ikiwa (kifungo == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); kuchelewesha (3000); }

Sharti la kwanza litatekelezwa wakati mtumiaji atakosea kwa sababu kitufe kilibonyezwa na thamani ya siri ya pini ilikuwa tofauti na pini iliyochorwa (SortNumber).

Kwa wakati huu, lazima utekeleze amri hapa chini.

tuma Kamanda (0x03, 0, 6);

kuchelewesha (3000);

Amri hii hutumiwa kuchochea sauti isiyo sahihi ya majibu. Mwishowe, tuna hali ya pili ambayo itatumika kuangalia ikiwa mtoto yuko sawa.

ikiwa (kifungo == 1 && (pin-1) == SortNumber)

{sendCommand (0x03, 0, 7); kuchelewesha (3000); }

Hatua ya 11:

Picha
Picha

Ikiwa kitufe kilibanwa na pini ya dijiti ambayo ilibonyezwa ni sawa na pini iliyochorwa, mfumo utasababisha sauti ya jibu sahihi.

Kama ninavyokuelezea, nambari hii ni rahisi sana na itasaidia mtoto yeyote kukuza maarifa yao ya vokali kupitia mchezo na Arduino.

Katika kielelezo hapo juu kisanduku cha sauti kinatumia wimbo uliohifadhiwa kwenye Kadi ya SD ya Moduli ya MP3 YX5300.

Hatua ya 12: Hitimisho

Elimu ya darasani inahitaji kubadilishwa kila wakati na Arduino anaweza kuwa mshirika mzuri katika kuunda kazi za kufurahisha.

Kupitia mradi huu, iliwezekana kukuza shughuli rahisi ambayo inaweza kukuza ustadi wa watoto kupitia maarifa ya sauti na tahajia ya kila vokali.

Tofauti na njia za jadi za kufundisha, watoto watajifunza kupitia kufurahisha darasani kupitia michezo na vifaa vya elektroniki.

Hatua ya 13: Kukubali

Mradi huu ulitengenezwa shukrani kwa msaada na kutia moyo kwa kampuni ya JLCPCB. Walihimiza elimu na kutualika kuendeleza mchezo wa vokali wa kufundisha watoto darasani.

Ikiwa unataka kununua sahani za elektroniki za Mchezo wa Vokali, unaweza kupata kiunga hiki na ununue vitengo 10 kwa $ 2 kwa JLCPCB.

Ilipendekeza: