Sisukord:

Häälikute mäng Arduino ja YX5300 MP3 -mooduliga Catalex: 13 sammu
Häälikute mäng Arduino ja YX5300 MP3 -mooduliga Catalex: 13 sammu

Video: Häälikute mäng Arduino ja YX5300 MP3 -mooduliga Catalex: 13 sammu

Video: Häälikute mäng Arduino ja YX5300 MP3 -mooduliga Catalex: 13 sammu
Video: Häälikute häälduse laul | Lastelaulud | LOLALA 2024, November
Anonim
Vokaalimäng Arduino ja YX5300 MP3 -mooduliga Catalex
Vokaalimäng Arduino ja YX5300 MP3 -mooduliga Catalex

Kas saate seda küsimust lugeda? See on imelik! Ma küsisin selle küsimuse meelega. Kui saate seda teksti lugeda, siis sellepärast, et teate kogu tähestikku ja muidugi õppisite kõiki täishäälikuid.

Vokaalid esinevad kõikides sõnades. Igaühe eest on võimatu põgeneda. Nüüd lubage mul esitada teile küsimus. Kas teie lapsepõlves õppimine oli lõbus ja hõlmas tehnoloogilisi ressursse?

Olen kindel, et õppevahendeid oli vähe ja kasutasite täishäälikute ja tähestiku õppimiseks traditsioonilisi meetodeid.

Lõppude lõpuks, kas on võimalik kasutada mõnda tehnoloogilist ressurssi vokaalide õppimiseks?

Selles artiklis õpetan teile, kuidas mängu kaudu oma õpilastele ja lastele täishäälikuid õpetada.

Ma õpetan teile, kuidas luua häälega süsteem, kus teie laps/õpilane kuuleb kirja häält ja peab õige tähe näitamiseks nuppu vajutama.

Seega õpivad nad mängides ja on alati motiveeritud õppima.

Nüüd näitan teile samm-sammult protsessi, et saaksite oma mängu luua ja lastele täishäälikuid õpetada.

Tarvikud

JLCPCB trükkplaat

Arduino Uno

Nuppude lüliti

10kR takisti

Isane päis 2, 54 mm 1x7

Samm: täishäälikute mängu arendamine Arduinoga

Häälikute mängu arendamine Arduinoga
Häälikute mängu arendamine Arduinoga

Mängu süda on vokaalide JLCPCB trükkplaat. Sellele lingile pääsete juurde ja saate projekti failid alla laadida. Sellel on 5 nuppu. Kasutate igat nuppu vokaali tähistamiseks ja selle ühendamiseks oma Arduinoga.

Trükkplaat on näidatud joonisel 1.

2. samm:

Pilt
Pilt

Selle PCB projekti abil saate selle ühendada Arduinoga ja luua oma mängu. Järgmisena pakun teile elektroonilist skeemi, et saaksite projekti oma protoboardil kokku panna või üles ehitada.

3. samm:

Selle skeemi põhjal seadistame elektroonilise tahvli paigutuse. See on näidatud joonisel 2 ja saate failid alla laadida ja oma projekti teha.

Valige Arduino seast 5 tihvti ja ühendage plaadil olevad hüppajad Arduinoga. Või muul viisil saate kokku panna järgmise elektroonilise skeemi.

4. samm: projekti idee

Projekti idee
Projekti idee

Ma õpetan teile, kuidas Arduino abil MP3 -helisüsteemi kokku panna. See süsteem vastutab kirja kõneleva hääle reprodutseerimise eest. Iga tähe heli joonistatakse väärtusega 1 kuni 5, kus 1 tähistab A ja 5 tähistab U.

Seega, kui laps heli kuuleb, peab ta vaatama klaviatuuri, tundma ära vokaali õigekirja ja vajutama õiget klahvi.

Kui see ei õnnestu, vilgub süsteem punast LED -i 3 korda. Vastasel korral aktiveerib süsteem 5 sekundiks helisignaali ja joonistab uue vokaali.

Selleks peate kokku panema järgmise ahela.

Selles vooluringis ühendate MP3 -mooduli ja Arduino vokaaliplaadi. Bluetooth -moodulit kasutati Catalex MP3 -mooduli tähistamiseks.

Arduino vastutab 5 numbri sortimise ja seejärel joonistatud vokaali aktiveerimise käsu saatmise eest

5. samm:

Pilt
Pilt

Pärast seda ootame, kuni laps kuuleb ja vajutab nuppu, nagu on näidatud ülaltoodud joonisel.

Iga ülaltoodud nupp tähistab tähestiku vokaali. Järgmisena näitan teile, kuidas selle projekti jaoks programmeerimisloogikat üles ehitada.

6. samm: mängu programmeerimisloogika loomine

Mängu programmeerimisloogika loomine
Mängu programmeerimisloogika loomine

Vokaalimängusüsteem põhineb YX5300 mooduli toimimisel. Sellel moodulil on mõned funktsioonid, kuid keskendume mängu tööstruktuuri tutvustamisele YX5300 mooduli põhifunktsioonide kaudu.

Allpool pakun teile kogu projekti programmeerimisloogikat.

7. samm:

Järgnevalt selgitan samm -sammult selle lastele mõeldud lõbusa mängu loogika loomist.

#kaasake

#define ARDUINO_RX 5 // peaks looma ühenduse MP3 -jadamängija TX -ga staatiline int8_t Send_buf [8] = {0}; // Puhvri saatmise käsud. // LOKALISELT PAREM staatiline uint8_t ansbuf [10] = {0}; // Puhver vastuste jaoks. // KOHALIKULT PAREM String mp3Answer; // Vastus MP3 -st. Stringide vastus (tühine); String sbyte2hex (uint8_t b); / ************ Käsubait *************************/ #define CMD_NEXT_SONG 0X01 // Esita järgmine laul. #define CMD_PREV_SONG 0X02 // Esita eelmine lugu. #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 // Single Cycle Play. #defineeri CMD_SEL_DEV 0X09 #define CMD_SLEEP_MODE 0X0A #define CMD_WAKE_UP 0X0B #define CMD_RESET 0X0C #define CMD_PLAY 0X0D #define CMD_PAUSE 0X0E #define CMD_PLAY_FOLD0FILE_FILE_FIIL #define CMD_FOLDER_CYCLE 0X17 #define CMD_SHUFFLE_PLAY 0x18 // #define CMD_SET_SNGL_CYCL 0X19 // Määra üks tsükkel. #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 number; bait estado; baidi sumin = 2; bait -tihvt = 0; bait SortNumber = 0; bool nupp = 0; void setup () {Serial.begin (9600); mp3.algus (9600); viivitus (500); jaoks (tihvt = 8; tihvt 13) {tihvt = 8; } Serial.println ("Varrendo …"); Serial.println (tihvt); // viivitus (1000); } while (nupp! = 1); Serial.println ("Saiu …"); if (nupp == 1 && (pin-1)! = SortNumber) {sendCommand (0x03, 0, 6); viivitus (3000); } if (nupp == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); viivitus (3000); } // Kontrollige vastust. if (mp3.available ()) {Serial.println (decodeMP3Answer ()); } viivitus (100); //Serial.println("Tocando musica … "); } /*********************************************** ******************************** / / Funktsioon sendMP3Command: otsige c -käsk ja saatke see MP3 -le * / /*Parameeter: c. MP3 käsu kood, abi saamiseks "h". *// *Return: void */ void sendMP3Command (char c) {switch (c) {case '?': Case 'h': Serial.println ("HELP"); Serial.println ("p = Esita"); Serial.println ("P = Paus"); Serial.println ("> = Järgmine"); Serial.println ("': Serial.println (" Järgmine "); sendCommand (CMD_NEXT_SONG); sendCommand (CMD_PLAYING_N); // küsi esitatava faili arvu; juhtum' Mälukaart on sisestatud. '; Break; case 0x3D: dekodeeritudMP3Answer + = " -> Valmis esitusnumber" + String (ansbuf [6], DEC); // sendCommand (CMD_NEXT_SONG); // sendCommand (CMD_PLAYING_N); // küsi esitatava faili arvu; juhtum 0x40: dekodeeritudMP3Answer += " -> Viga"; break; case 0x41: decodedMP3Answer += " -> Andmed taastati õigesti."; break; case 0x42: decodedMP3Answer += " -> Olekut mängitakse:" +String (ansbuf [6], DEC); break; case 0x48: decodedMP3Answer + = " -> Failide arv:" + String (ansbuf [6], DEC); break; case 0x4C: decodedMP3Answer + = " -> Mängimine:" + String (ansbuf [6], DEC); break; case; 0x4E: dekodeeritudMP3Answer + = " -> Kaustade failide arv:" + String (ansbuf [6], DEC); break; case 0x4F: decodedMP3Answer + = " -> Kaustade arv:" + String (ansbuf [6], DEC); break;} return dekodeeritudMP3Answer;} /*********************************** ************ ********************************* / /*Funktsioon: käsu saatmine MP3 -le* / /*Parameeter: bait käsk *// *Parameeter: bait dat1 parameeter käsule *// *Parameeter: bait dat2 parameeter käsule */ void sendCommand (baitkäsk) {sendCommand (käsk, 0, 0); } void sendCommand (baitkäsk, bait dat1, bait dat2) {delay (20); Saada_buf [0] = 0x7E; // Saada_buf [1] = 0xFF; // Saada_buf [2] = 0x06; // Len Send_buf [3] = käsk; // Saada_buf [4] = 0x01; // 0x00 EI, 0x01 tagasiside Send_buf [5] = dat1; // datah Send_buf [6] = kuupäev2; // datal Send_buf [7] = 0xEF; // Serial.print ("Saadan:"); jaoks (uint8_t i = 0; i <8; i ++) {mp3.write (Send_buf ); Serial.print (sbyte2hex (Send_buf )); } Serial.println (); } /*********************************************** ******************************* / /*Funktsioon: sbyte2hex. Tagastab baidiandmed HEX -vormingus. * / /*Parameeter:- uint8_t b. Bait HEX -i teisendamiseks. *// *Tagasi: String */ String sbyte2hex (uint8_t b) {String Shex; kuuskant = "0X"; kui (b <16) kuuskant += "0"; kuuskant += string (b, HEX); kuuskant += ""; tagastama kuusk; } /*********************************************** ******************************* / /*Funktsioon: shex2int. Annab vastuseks HEX -stringi int. * / /*Parameeter: s. char *s, et teisendada HEX. * / /*Parameeter: n. char *s pikkus. *// *Tagastus: int */ int shex2int (char *s, int n) {int r = 0; jaoks (int i = 0; i = '0' && = 'A' && s <= 'F') {r *= 16; r + = (s - 'A') + 10; }} return r; } /*********************************************** ******************************* / /*Funktsioon: vastus. Annab vastuseks stringi vastuse mp3 UART moodulist. * / /*Parameeter:- uint8_t b. tühine. * / /*Tagastus: string. Kui vastus on hästi vormistatud, vastake. */ Stringide vastus (tühine) {uint8_t i = 0; String mp3 vastus = ""; // Hankige ainult 10 baiti, kui (mp3.available () && (i <10)) {uint8_t b = mp3.read (); ansbuf = b; i ++; mp3 vastus += sbyte2hex (b); } // kui vastuse vorming on õige. if ((ansbuf [0] == 0x7E) && (ansbuf [9] == 0xEF)) {tagasta mp3 vastus; } return "???:" + mp3answer; }

Esiteks määratleme kõik programmi muutujad ja YX5300 mooduli juurdepääsuregistri aadressid.

#kaasake

#define ARDUINO_RX 5 // peaks ühenduma MP3 -jadamooduli TX -ga staatiline int8_t Send_buf [8] = {0}; // Puhvri saatmise käsud. // LOKALISELT PAREM staatiline uint8_t ansbuf [10] = {0}; // Puhver vastuste jaoks. // KOHALIKULT PAREM String mp3Answer; // Vastus MP3 -st. Stringide vastus (tühine); String sbyte2hex (uint8_t b); / ************ Käsubait *************************/ #define CMD_NEXT_SONG 0X01 // Esita järgmine laul. #define CMD_PREV_SONG 0X02 // Esita eelmine lugu. #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 // Single Cycle Play. #defineeri CMD_SEL_DEV 0X09 #define CMD_SLEEP_MODE 0X0A #define CMD_WAKE_UP 0X0B #define CMD_RESET 0X0C #define CMD_PLAY 0X0D #define CMD_PAUSE 0X0E #define CMD_PLAY_FOLD0FILE_FILE_FIIL #define CMD_FOLDER_CYCLE 0X17 #define CMD_SHUFFLE_PLAY 0x18 // #define CMD_SET_SNGL_CYCL 0X19 // Määra üks tsükkel. #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 number; bait estado; baidi sumin = 2; bait -tihvt = 0; bait SortNumber = 0; bool nupp = 0;

8. samm:

Neid registriaadresse kasutatakse mooduli töö konfigureerimiseks. Näiteks vaadake seda registreerimisaadressi allpool.

#define CMD_PLAY_W_INDEX 0X03

Aadress 0x03 on määratletud nimega CMD_PLAY_W_INDEX. Seda kasutatakse laulu käivitamiseks selle numbrist, see tähendab, et sisestate heli numbri ja see esitatakse.

Nende väärtuste abil me neid kasutame ja oma projekti toimimist konfigureerime.

Pärast erinevate kasutatavate aadresside määratlemist siseneme seadistusfunktsiooni ning konfigureerime oma projekti jaoks tihvtid ja jadakommunikatsiooni.

9. toiming: tühimike seadistamise () funktsioon

Järgmisena vaadake tühimike seadistamise funktsiooni. Tegin kõik nuppude seadistused, MP3 -mooduli jadaühenduse ja kaardimooduli vormindamise MP3 -s.

tühine seadistus ()

{Serial.begin (9600); mp3.algus (9600); viivitus (500); for (pin = 8; pin <13; pin ++) {pinMode (pin, INPUT); } sendCommand (CMD_SEL_DEV, 0, DEV_TF); viivitus (500); }

Alustasin jadaühendust, et printida andmed arvuti seeriasse ja seejärel alustasime jadaühendust mp3 -objekti kaudu.

Seriaalne algus (9600);

mp3.algus (9600); viivitus (500);

Mp3 -moodulit juhitakse Arduino jada poolt saadud käskude kaudu. Selles protsessis kasutasime SoftwareSerial raamatukogu ja emuleerisime Arduino digitaalsete tihvtide seeriat.

Seega saate Arduino abil juhtida MP3 -moodulit sellele saadetud käskude kaudu.

Lisaks seadistasime digitaalsed tihvtid ja vormindasime MP3 -kaardi mooduli

for (pin = 8; pin <13; pin ++) {pinMode (pin, INPUT); } sendCommand (CMD_SEL_DEV, 0, DEV_TF); viivitus (500);

Pärast konfiguratsiooni tegemist peame minema tühisilmusfunktsiooni põhiloogika juurde.

10. samm: põhifunktsiooni tühimik ()

Kood on väga lihtne ja kogu loogiline struktuur on esitatud allpool. Järgnevalt selgitan teile põhifunktsiooni täielikku loogikat.

tühine tsükkel ()

{pin = 8; randomSeed (analogRead (A0)); numero = juhuslik (8, 12); SortNumber = number; numero = numero - 7; Serial.println (number); sendCommand (0x03, 0, number); viivitus (1000); do {button = digitalRead (pin); Serial.println (nupp); tihvt ++; kui (tihvt> 13) {tihvt = 8; } Serial.println ("Varrendo …"); Serial.println (tihvt); // viivitus (1000); } while (nupp! = 1); Serial.println ("Saiu …"); if (nupp == 1 && (pin-1)! = SortNumber) {sendCommand (0x03, 0, 6); viivitus (3000); } if (nupp == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); viivitus (3000); } // Kontrollige vastust. if (mp3.available ()) {Serial.println (decodeMP3Answer ()); } viivitus (100); //Serial.println("Tocando musica … "); }

Tsükli funktsioonitsükli igal alguses genereerime täishääliku tekitamiseks uue väärtuse vahemikus 8 kuni 12. Väärtus 8 kuni 12 viitab vokaali digitaalsele tihvtile.

Juhusliku väärtuse genereerimise kood on näidatud allpool.

tihvt = 8;

randomSeed (analogRead (A0)); numero = juhuslik (8, 12); SortNumber = number;

Lisaks lahutame summast 8–12 maha 7. See võimaldab meil osutada mälukaardile salvestatud lugude positsioonidele 1–5.

numero = numero - 7;

Pärast seda taasesitasin allolevale joonele tõmmatud vokaali heli.

sendCommand (0x03, 0, number);

viivitus (1000);

Nüüd on kätte jõudnud tähtis aeg: hetk, mil hakkame lapse poolt vajutatavat nuppu lugema. Koodiosa on esitatud allpool.

teha

{nupp = digitalRead (pin); Serial.println (nupp); tihvt ++; kui (tihvt> 13) {tihvt = 8; } Serial.println ("Varrendo …"); Serial.println (tihvt); // viivitus (1000); } while (nupp! = 1);

Seda tsüklit täidetakse seni, kuni kasutaja nuppe vajutab. Silmus võimaldab skannida 5 digitaalset tihvti ja hetkel, kui laps vajutab ühte nuppu, väljub see silmusest ja kontrollib, kas laps on õigesti reageerinud.

Kinnitamise teete alloleva koodi abil.

if (nupp == 1 && (pin-1)! = SortNumber)

{sendCommand (0x03, 0, 6); viivitus (3000); } if (nupp == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); viivitus (3000); }

Esimene tingimus täidetakse siis, kui kasutaja teeb vea, kuna nuppu vajutati ja tihvti käivitatud väärtus erines joonistatud tihvtist (SortNumber).

Sel hetkel peate täitma alloleva käsu.

sendCommand (0x03, 0, 6);

viivitus (3000);

Seda käsku kasutatakse vale vastuse tooni käivitamiseks. Lõpuks on meil teine tingimus, mille abil kontrollitakse, kas lapsel on õigus.

if (nupp == 1 && (pin-1) == SortNumber)

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

11. samm:

Pilt
Pilt

Kui vajutati nuppu ja vajutatud digitaalne tihvt on sama, mis joonistatud tihvt, käivitab süsteem õige vastuse heli.

Nagu ma teile selgitan, on see kood väga lihtne ja aitab igal lapsel arendada oma teadmisi vokaalide kohta Arduinoga mängides.

Ülaltoodud joonisel täidab helikast MP3 -mooduli YX5300 SD -kaardile salvestatud lugu.

12. samm: järeldus

Klassiruumi haridust tuleb pidevalt muuta ja Arduino võib olla suurepärane liitlane lõbusate ülesannete loomisel.

Selle projekti kaudu oli võimalik välja töötada lihtne tegevus, mis võib arendada laste oskusi läbi iga vokaali heli ja õigekirja tundmise.

Erinevalt traditsioonilistest õpetamismeetoditest õpivad lapsed mängude ja elektroonika kaudu klassiruumis lõbutsedes.

13. samm: kinnitamine

See projekt töötati välja tänu ettevõtte JLCPCB toele ja julgustusele. Nad julgustasid haridust ja kutsusid meid arendama täishäälikute mängu lastele klassiruumis õpetamiseks.

Kui soovite osta vokaalide mängu elektroonilisi plaate, pääsete sellele lingile juurde ja ostate JLCPCB -st 10 ühikut 2 dollari eest.

Soovitan: