Satura rādītājs:

Patskaņu spēle ar Arduino un YX5300 MP3 moduli Catalex: 13 soļi
Patskaņu spēle ar Arduino un YX5300 MP3 moduli Catalex: 13 soļi

Video: Patskaņu spēle ar Arduino un YX5300 MP3 moduli Catalex: 13 soļi

Video: Patskaņu spēle ar Arduino un YX5300 MP3 moduli Catalex: 13 soļi
Video: Kā pagarināt patskaņu vilkšanu, izrunāšanu. Как тянуть гласные. 2024, Novembris
Anonim
Patskaņu spēle ar Arduino un YX5300 MP3 moduli Catalex
Patskaņu spēle ar Arduino un YX5300 MP3 moduli Catalex

Vai jūs varat izlasīt šo jautājumu? Tas ir dīvaini! Es tīši uzdevu šo jautājumu. Ja jūs varat izlasīt šo tekstu, tas ir tāpēc, ka jūs zināt visu alfabētu un, protams, uzzinājāt par visiem patskaņiem.

Patskaņi ir visos vārdos. No katra nav iespējams aizbēgt. Tagad ļaujiet man uzdot jums jautājumu. Vai jūsu bērnības mācīšanās bija jautra un saistīta ar tehnoloģiskiem resursiem?

Esmu pārliecināts, ka mācību resursu bija maz, un jūs izmantojāt tradicionālās metodes, lai iemācītos patskaņus un alfabētu.

Galu galā, vai ir iespējams izmantot dažus tehnoloģiskos resursus, lai iemācītos patskaņus?

Šajā rakstā es jums iemācīšu, kā spēli iemācīt saviem studentiem un bērniem patskaņus.

Es iemācīšu jums izveidot sistēmu ar balsi, kurā jūsu bērns/skolēns dzirdēs burta skaņu un viņam jānospiež poga, lai norādītu pareizo burtu.

Tādējādi viņi mācīsies spēlējoties un vienmēr būs motivēti mācīties.

Tagad es jums parādīšu soli pa solim procesu, lai jūs varētu izveidot savu spēli un iemācīt bērniem patskaņus.

Piegādes

JLCPCB iespiedshēmas plate

Arduino Uno

Spiedpogas slēdzis

10kR rezistors

Vīriešu galvene 2, 54 mm 1x7

1. darbība: patskaņu spēles izstrāde ar Arduino

Patskaņu spēles izstrāde ar Arduino
Patskaņu spēles izstrāde ar Arduino

Spēles sirds ir patskaņu JLCPCB iespiedshēmas plate. Jūs varat piekļūt šai saitei un lejupielādēt projekta failus. Tam ir 5 pogas. Jūs izmantosit katru pogu, lai attēlotu patskaņu un savienotu to ar savu Arduino.

Drukātās shēmas plates ir parādītas 1. attēlā.

2. darbība:

Attēls
Attēls

Izmantojot šo PCB projektu, varat to savienot ar Arduino un izveidot savu spēli. Tālāk es jums piedāvāšu elektronisku shēmu, lai jūs varētu samontēt vai izveidot projektu savā protoboardā.

3. darbība:

No šīs shēmas mēs izveidojām elektroniskās plates izkārtojumu. Tas ir parādīts 2. attēlā, un jūs varat lejupielādēt failus un izveidot savu projektu.

Izvēlieties 5 tapas no Arduino un savienojiet dēlīšus uz tāfeles ar Arduino. Vai arī citādi varat apkopot šādu elektronisko shēmu.

4. solis: projekta ideja

Projekta ideja
Projekta ideja

Es iemācīšu, kā salikt MP3 skaņas sistēmu ar Arduino. Šī sistēma būs atbildīga par balss, kas runā vēstuli, reproducēšanu. Katra burta skaņa tiks uzzīmēta, izmantojot vērtību no 1 līdz 5, kur 1 apzīmē A un 5 apzīmē U.

Tādējādi, dzirdot skaņu, bērnam jāskatās uz tastatūru, jāatzīst patskaņa pareizrakstība un jānospiež pareizais taustiņš.

Ja tas neizdodas, sistēma 3 reizes mirgos sarkanajā gaismas diodē. Pretējā gadījumā sistēma uz 5 sekundēm aktivizēs skaņas signālu un uzzīmēs jaunu patskaņu.

Lai to izdarītu, jums ir jāsamontē šāda ķēde.

Šajā ķēdē jūs savienosit MP3 moduli un patskaņu dēli Arduino. Bluetooth modulis tika izmantots, lai attēlotu Catalex MP3 moduli.

Arduino būs atbildīgs par 5 ciparu kārtošanu un pēc tam komandas nosūtīšanu, lai aktivizētu zīmēto patskaņu

5. darbība:

Attēls
Attēls

Pēc tam mēs gaidīsim, līdz bērns dzirdēs un nospiedīs pogu, kā parādīts attēlā iepriekš.

Katra augšējā poga apzīmē alfabēta patskaņu. Tālāk es jums parādīšu, kā jūs veidosit šī projekta programmēšanas loģiku.

6. darbība. Spēles programmēšanas loģikas veidošana

Spēles programmēšanas loģikas veidošana
Spēles programmēšanas loģikas veidošana

Patskaņu spēles sistēma ir balstīta uz YX5300 moduļa darbību. Šim modulim ir dažas funkcijas, tomēr mēs koncentrēsimies uz spēles darba struktūras prezentāciju, izmantojot YX5300 moduļa galvenās funkcijas.

Zemāk es sniedzu jums visu projekta programmēšanas loģiku.

7. darbība:

Turpmāk es soli pa solim paskaidrošu, kā veidot šīs jautrās spēles bērniem loģiku.

#iekļaut

#define ARDUINO_RX 5 // vajadzētu izveidot savienojumu ar sērijveida MP3 atskaņotāja moduļa TX #define ARDUINO_TX 6 // izveidot savienojumu ar moduļa Software RC mp3 (ARDUINO_RX, ARDUINO_TX); static int8_t Send_buf [8] = {0}; // Buferis komandu sūtīšanai. // LOKĀLI LABĀK statisks uint8_t ansbuf [10] = {0}; // Buferis atbildēm. // LOKĀK LABĀK String mp3Answer; // Atbilde no MP3. Stīgu atbilde (anulēts); String sbyte2hex (uint8_t b); / ************ Komandu baits *************************/ #define CMD_NEXT_SONG 0X01 // Play next dziesma. #define CMD_PREV_SONG 0X02 // Atskaņot iepriekšējo dziesmu. #define CMD_PLAY_W_INDEX 0X03 #define CMD_VOLUME_UP 0X04 #define CMD_VOLUME_DOWN 0X05 #define CMD_SET_VOLUME 0X06 #define CMD_SNG_CYCL_PLAY 0X08 // Atskaņošana vienā ciklā. #definēt CMD_SEL_DEV 0X09 #define CMD_SLEEP_MODE 0X0A #define CMD_WAKE_UP 0X0B #definēt CMD_RESET 0X0C #define CMD_PLAY 0X0D #define CMD_PAUSE 0X0E #define CMD_PLAY_FOLD0FILE_FILE #define CMD_FOLDER_CYCLE 0X17 #define CMD_SHUFFLE_PLAY 0x18 // #define CMD_SET_SNGL_CYCL 0X19 // Iestatīt vienu ciklu. #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 ************************** / #define DEV_TF 0X02 / ************** ************************************************* *****/ int numero; baitu estado; baitu skaņas signāls = 2; baitu tapa = 0; baits KārtotNumurs = 0; bool poga = 0; void setup () {Serial.begin (9600); mp3.sākas (9600); kavēšanās (500); for (pin = 8; pin 13) {pin = 8; } Serial.println ("Varrendo …"); Serial.println (pin); // kavēšanās (1000); } while (poga! = 1); Serial.println ("Saiu …"); if (poga == 1 && (pin-1)! = KārtotNumurs) {sendCommand (0x03, 0, 6); kavēšanās (3000); } ja (poga == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); kavēšanās (3000); } // Pārbaudiet atbildi. ja (mp3.available ()) {Serial.println (decodeMP3Answer ()); } kavēšanās (100); //Serial.println("Tocando musica … "); } /*********************************************** ******************************** / / Funkcija sendMP3Command: meklējiet komandu "c" un nosūtiet to uz MP3 * / /*Parametrs: c. MP3 komandas kods, “h”, lai saņemtu palīdzību. *// *Atgriezties: void */ void sendMP3Command (char c) {switch (c) {case '?': Case 'h': Serial.println ("HELP"); Serial.println ("p = Atskaņot"); Serial.println ("P = Pauze"); Serial.println ("> = Nākamais"); Serial.println ("': Serial.println (" Nākamais "); sendCommand (CMD_NEXT_SONG); sendCommand (CMD_PLAYING_N); // lūgt atskaņojamā faila numuru; futrālis' Atmiņas karte ievietota. '; Break; case 0x3D: decodedMP3Answer + = " -> Pabeigts atskaņošanas numurs" + String (ansbuf [6], DEC); // sendCommand (CMD_NEXT_SONG); // sendCommand (CMD_PLAYING_N); // lūgt atskaņojamā faila skaitu; gadījums 0x40: decodedMP3Answer += " -> Kļūda"; break; case 0x41: decodedMP3Answer += " -> Dati atgūti pareizi."; break; case 0x42: decodedMP3Answer += " -> Statusa atskaņošana:" +String (ansbuf [6], DEC); break; case 0x48: decodedMP3Answer + = " -> Failu skaits:" + String (ansbuf [6], DEC); break; case 0x4C: decodedMP3Answer + = " -> Atskaņošana:" + String (ansbuf [6], DEC); break; case 0x4E: decodedMP3Answer + = " -> Mapju failu skaits:" + String (ansbuf [6], DEC); break; case 0x4F: decodedMP3Answer + = " -> Mapju skaits:" + String (ansbuf [6], DEC); break;} return dekodētsMP3Answer;} /********************************** ************ ********************************* / /*Funkcija: Sūtīt komandu uz MP3* / /*Parametrs: baits komanda *// *Parametrs: baits dat1 parametrs komandai *// *Parametrs: baits dat2 parametrs komandai */ void sendCommand (baita komanda) {sendCommand (komanda, 0, 0); } void sendCommand (baitu komanda, baits dat1, baits dat2) {kavēšanās (20); Sūtīt_buf [0] = 0x7E; // Sūtīt_buf [1] = 0xFF; // Sūtīt_buf [2] = 0x06; // Len Send_buf [3] = komanda; // Sūtīt_buf [4] = 0x01; // 0x00 NĒ, 0x01 atgriezeniskā saite Send_buf [5] = dat1; // datah Send_buf [6] = dat2; // datal Send_buf [7] = 0xEF; // Serial.print ("Sūta:"); par (uint8_t i = 0; i <8; i ++) {mp3.write (Send_buf ); Serial.print (sbyte2hex (Send_buf )); } Sērijas.println (); } /*********************************************** ******************************* / /*Funkcija: sbyte2hex. Atgriež baitu datus HEX formātā. * / /*Parametrs:- uint8_t b. Baiti, lai pārvērstu par HEX. *// *Atgriešanās: String */ String sbyte2hex (uint8_t b) {String shex; šeši = "0X"; ja (b <16) šeši += "0"; šeši += virkne (b, HEX); šeši += ""; atgriešanās šeksis; } /*********************************************** ******************************* / /*Funkcija: shex2int. Atgriež int no HEX virknes. * / /*Parametrs: s. char *s, lai pārvērstu par HEX. * / /*Parametrs: n. char *s garums. *// *Atgriezties: int */ int shex2int (char *s, int n) {int r = 0; par (int i = 0; i = '0' && s = 'A' && s <= 'F') {r *= 16; r + = (s - 'A') + 10; }} atgriezties r; } /*********************************************** ******************************* / /*Funkcija: atbilde. Atgriež virknes atbildi no mp3 UART moduļa. * / /*Parametrs:- uint8_t b. spēkā neesošs. * / /*Atgriešanās: virkne. Ja atbilde ir labi formulēta, atbilde. */ Stīgu atbilde (tukšs) {uint8_t i = 0; String mp3answer = ""; // Iegūstiet tikai 10 baitus, kamēr (mp3.available () && (i <10)) {uint8_t b = mp3.read (); ansbuf = b; i ++; mp3atbilde += sbyte2hex (b); } // ja atbildes formāts ir pareizs. ja ((ansbuf [0] == 0x7E) && (ansbuf [9] == 0xEF)) {atgriezties mp3answer; } atgriezt "???:" + mp3answer; }

Pirmkārt, mēs definējam visus programmas mainīgos un YX5300 moduļa piekļuves reģistra adreses.

#iekļaut

#define ARDUINO_RX 5 // vajadzētu izveidot savienojumu ar sērijveida MP3 atskaņotāja moduļa TX #define ARDUINO_TX 6 // izveidot savienojumu ar moduļa Software RC mp3 (ARDUINO_RX, ARDUINO_TX); static int8_t Send_buf [8] = {0}; // Buferis komandu nosūtīšanai. // LOKĀLI LABĀK statisks uint8_t ansbuf [10] = {0}; // Buferis atbildēm. // LOKĀK LABĀK String mp3Answer; // Atbilde no MP3. Stīgu atbilde (anulēts); String sbyte2hex (uint8_t b); / ************ Komandu baits *************************/ #define CMD_NEXT_SONG 0X01 // Play next dziesma. #define CMD_PREV_SONG 0X02 // Atskaņot iepriekšējo dziesmu. #define CMD_PLAY_W_INDEX 0X03 #define CMD_VOLUME_UP 0X04 #define CMD_VOLUME_DOWN 0X05 #define CMD_SET_VOLUME 0X06 #define CMD_SNG_CYCL_PLAY 0X08 // Atskaņošana vienā ciklā. #definēt CMD_SEL_DEV 0X09 #define CMD_SLEEP_MODE 0X0A #definēt CMD_WAKE_UP 0X0B #definēt CMD_RESET 0X0C #define CMD_PLAY 0X0D #define CMD_PAUSE 0X0E #define CMD_PLAY_FOLD0FILE_FILE #define CMD_FOLDER_CYCLE 0X17 #define CMD_SHUFFLE_PLAY 0x18 // #define CMD_SET_SNGL_CYCL 0X19 // Iestatīt vienu ciklu. #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 ************************** / #define DEV_TF 0X02 / ************** ************************************************* *****/ int numero; baitu estado; baitu skaņas signāls = 2; baitu tapa = 0; baits KārtotNumurs = 0; bool poga = 0;

8. darbība

Šīs reģistra adreses tiek izmantotas, lai konfigurētu moduļa darbību. Piemēram, skatiet šo reģistrācijas adresi zemāk.

#define CMD_PLAY_W_INDEX 0X03

Adrese 0x03 ir definēta ar nosaukumu CMD_PLAY_W_INDEX. To izmanto, lai aktivizētu dziesmu no tās numura, tas ir, jūs ievadāt skaņas numuru un tā tiks atskaņota.

Tieši ar šīm vērtībām mēs tās izmantosim un konfigurēsim mūsu projekta darbību.

Kad būsit definējis dažādas adreses, kuras tiks izmantotas, mēs ievadīsim iestatīšanas funkciju un konfigurēsim tapas un seriālo komunikāciju mūsu projektam.

9. darbība. Funkcija Void Setup ()

Tālāk skatiet tukšuma iestatīšanas funkciju. Es izdarīju visus pogu tapu iestatījumus, MP3 moduļa seriālo komunikāciju un kartes moduļa inicializēšanu MP3.

anulēts iestatījums ()

{Sērijas sākums (9600); mp3.sākas (9600); kavēšanās (500); for (pin = 8; pin <13; pin ++) {pinMode (pin, INPUT); } sendCommand (CMD_SEL_DEV, 0, DEV_TF); kavēšanās (500); }

Es sāku sērijveida saziņu, lai drukātu datus uz datora sērijas, un pēc tam mēs sākām sērijveida saziņu caur mp3 objektu.

Sērijas sākums (9600);

mp3.sākas (9600); kavēšanās (500);

MP3 moduli kontrolē, izmantojot komandas, kuras saņem Arduino sērijas. Šajā procesā mēs izmantojām SoftwareSerial bibliotēku un emulējām sēriju uz Arduino digitālajām tapām.

Tādējādi jūs varēsit izmantot Arduino, lai kontrolētu MP3 moduli, izmantojot tam nosūtītās komandas.

Turklāt mēs konfigurējām digitālās tapas un inicializējām MP3 kartes moduli

for (pin = 8; pin <13; pin ++) {pinMode (pin, INPUT); } sendCommand (CMD_SEL_DEV, 0, DEV_TF); kavēšanās (500);

Pēc konfigurācijas veikšanas mums jādodas uz tukšās cilpas funkcijas galveno loģiku.

10. darbība. Galvenās funkcijas tukšuma cilpa ()

Kods ir ļoti vienkāršs, un visa loģiskā struktūra ir parādīta zemāk. Turpmāk es jums izskaidrošu visas galvenās funkcijas loģiku.

tukša cilpa ()

{pin = 8; randomSeed (analogRead (A0)); numero = nejaušs (8, 12); KārtotNumurs = numurs; numero = numero - 7; Serial.println (numero); sendCommand (0x03, 0, numero); kavēšanās (1000); do {poga = digitalRead (pin); Serial.println (poga); pin ++; ja (pin> 13) {pin = 8; } Serial.println ("Varrendo …"); Serial.println (pin); // kavēšanās (1000); } while (poga! = 1); Serial.println ("Saiu …"); if (poga == 1 && (pin-1)! = KārtotNumurs) {sendCommand (0x03, 0, 6); kavēšanās (3000); } ja (poga == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); kavēšanās (3000); } // Pārbaudiet atbildi. ja (mp3.available ()) {Serial.println (decodeMP3Answer ()); } kavēšanās (100); //Serial.println("Tocando musica … "); }

Katrā cilpas funkciju cikla sākumā mēs ģenerēsim jaunu vērtību no 8 līdz 12, lai radītu patskaņa skaņu. Vērtība no 8 līdz 12 attiecas uz patskaņa digitālo tapu.

Tālāk ir parādīts kods nejaušas vērtības ģenerēšanai.

tapa = 8;

randomSeed (analogRead (A0)); numero = nejaušs (8, 12); KārtotNumurs = numurs;

Turklāt no summas starp 8 un 12. mēs atņemam 7. Tas ļaus mums norādīt uz atmiņas kartē ierakstīto dziesmu pozīcijām no 1 līdz 5.

numero = numero - 7;

Pēc tam es reproducēju patskaņa skaņu, kas novilkta uz zemāk esošās līnijas.

sendCommand (0x03, 0, numero);

kavēšanās (1000);

Tagad ir pienācis svarīgais laiks: brīdis, kad mēs lasīsim bērna nospiesto pogu. Koda daļa ir parādīta zemāk.

darīt

{poga = digitalRead (pin); Serial.println (poga); pin ++; ja (pin> 13) {pin = 8; } Serial.println ("Varrendo …"); Serial.println (pin); // kavēšanās (1000); } while (poga! = 1);

Šī cilpa tiks izpildīta, līdz lietotājs nospiež pogas. Cilpa ļauj skenēt 5 digitālās tapas un brīdī, kad bērns nospiež vienu no pogām, tas iznāks no cilpas un pārbaudīs, vai bērns ir pareizi reaģējis.

Jūs veiksit verifikāciju, izmantojot zemāk esošo kodu.

ja (poga == 1 && (pin-1)! = KārtotNumurs)

{sendCommand (0x03, 0, 6); kavēšanās (3000); } ja (poga == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); kavēšanās (3000); }

Pirmais nosacījums tiks izpildīts, kad lietotājs pieļaus kļūdu, jo tika nospiesta poga un tapas aktivizētā vērtība atšķīrās no izvilktās tapas (SortNumber).

Šajā brīdī jums jāizpilda zemāk esošā komanda.

sendCommand (0x03, 0, 6);

kavēšanās (3000);

Šī komanda tiek izmantota, lai iedarbinātu nepareizu atbildes signālu. Visbeidzot, mums ir otrais nosacījums, kas tiks izmantots, lai pārbaudītu, vai bērnam ir taisnība.

ja (poga == 1 && (pin-1) == SortNumber)

{sendCommand (0x03, 0, 7); kavēšanās (3000); }

11. darbība:

Attēls
Attēls

Ja tika nospiesta poga un nospiesta digitālā tapa, tā pati zīmētā tapa, sistēma atskanēs pareizās atbildes skaņa.

Kā es jums paskaidroju, šis kods ir ļoti vienkāršs un palīdzēs jebkuram bērnam attīstīt savas zināšanas par patskaņiem, izmantojot spēli ar Arduino.

Augšējā attēlā skaņu kaste izpilda dziesmu, kas saglabāta MP3 moduļa YX5300 SD kartē.

12. solis. Secinājums

Klases izglītība ir pastāvīgi jāmaina, un Arduino var būt lielisks sabiedrotais jautru uzdevumu veidošanā.

Izmantojot šo projektu, bija iespējams izstrādāt vienkāršu aktivitāti, kas var attīstīt bērnu prasmes, zinot katra patskani skaņu un pareizrakstību.

Atšķirībā no tradicionālajām mācību metodēm, bērni mācīsies, izklaidējoties klasē, izmantojot spēles un elektroniku.

13. solis: apstiprināšana

Šis projekts tika izstrādāts, pateicoties uzņēmuma JLCPCB atbalstam un iedrošinājumam. Viņi veicināja izglītību un aicināja mūs attīstīt patskaņu spēli bērnu mācīšanai klasē.

Ja vēlaties iegādāties patskaņu spēles elektroniskās plāksnes, varat piekļūt šai saitei un iegādāties 10 vienības par 2 ASV dolāriem vietnē JLCPCB.

Ieteicams: