Obsah:

Hra na samohlásky s modulem Arduino a modulem MP3 YX5300 Catalex: 13 kroků
Hra na samohlásky s modulem Arduino a modulem MP3 YX5300 Catalex: 13 kroků

Video: Hra na samohlásky s modulem Arduino a modulem MP3 YX5300 Catalex: 13 kroků

Video: Hra na samohlásky s modulem Arduino a modulem MP3 YX5300 Catalex: 13 kroků
Video: Testing Stable Diffusion inpainting on video footage #shorts 2024, Listopad
Anonim
Hra se samohláskami s modulem Arduino a modulem MP3 YX5300 Catalex
Hra se samohláskami s modulem Arduino a modulem MP3 YX5300 Catalex

Dokážete si přečíst tuto otázku? To je divné! Tuto otázku jsem položil schválně. Pokud dokážete přečíst tento text, je to proto, že znáte celou abecedu a samozřejmě jste se dozvěděli o všech samohláskách.

Samohlásky jsou přítomny ve všech slovech. Uniknout z každého z nich je nemožné. Nyní vám položím otázku. Bylo učení v dětství zábavné a zapojené technologické zdroje?

Jsem si jistý, že studijních zdrojů bylo málo a používali jste tradiční metody k učení samohlásek a abecedy.

Je koneckonců možné použít nějaké technologické prostředky k učení samohlásek?

V tomto článku vás naučím, jak pomocí hry naučit své studenty a dětské samohlásky.

Naučím vás, jak vytvořit systém s hlasem, kde vaše dítě/student uslyší zvuk písmene a musí stisknout tlačítko, aby označilo správné písmeno.

Budou se tedy při hraní učit a vždy budou motivováni ke studiu.

Nyní vám ukážu postup krok za krokem k vytvoření vlastní hry a naučím samohlásky děti.

Zásoby

Deska s plošnými spoji JLCPCB

Arduino Uno

Tlačítkový spínač

Rezistor 10 kR

Záhlaví 2, 54 mm, 1x7

Krok 1: Vývoj hry na samohlásky pomocí Arduina

Vývoj hry samohlásek s Arduinem
Vývoj hry samohlásek s Arduinem

Srdcem hry je plošný spoj JLCPCB samohlásek. Můžete přistupovat k tomuto odkazu a stáhnout soubory projektu. Má 5 tlačítek. Každé tlačítko použijete k reprezentaci samohlásky a připojení k vašemu Arduinu.

Deska s plošnými spoji je znázorněna na obrázku 1.

Krok 2:

obraz
obraz

S tímto projektem PCB jej můžete propojit s Arduinem a vytvořit si hru. Dále vám nabídnu elektronické schéma, které vám umožní sestavit nebo postavit projekt na vašem protoboardu.

Krok 3:

Z tohoto schématu jsme nastavili rozložení elektronické desky. Je to znázorněno na obrázku 2 a můžete si stáhnout soubory a vytvořit svůj projekt.

Vyberte 5 pinů z Arduina a propojte propojky na desce s Arduinem. Nebo jinak, můžete sestavit následující elektronický diagram.

Krok 4: Idea projektu

Idea projektu
Idea projektu

Naučím vás, jak sestavit zvukový systém MP3 s Arduino. Tento systém bude zodpovědný za reprodukci hlasu, který mluví písmenem. Zvuk každého písmene bude vykreslen pomocí hodnoty od 1 do 5, kde 1 představuje A a 5 představuje U.

Když tedy dítě uslyší zvuk, musí se podívat na klávesnici, rozpoznat hláskování samohlásky a stisknout správnou klávesu.

Pokud selže, systém 3x blikne červenou LED diodou. V opačném případě systém na 5 sekund aktivuje bzučák a nakreslí novou samohlásku.

Chcete -li to provést, musíte sestavit následující obvod.

V tomto obvodu propojíte modul MP3 a samohlásku na Arduinu. Modul Bluetooth byl použit k reprezentaci modulu Catalex MP3.

Arduino bude zodpovědné za seřazení 5 čísel a odeslání příkazu k aktivaci tažené samohlásky

Krok 5:

obraz
obraz

Poté počkáme, až dítě uslyší, a stiskne tlačítko, jak ukazuje obrázek výše.

Každé tlačítko nahoře představuje samohlásku abecedy. Dále vám ukážu, jak vytvoříte programovací logiku pro tento projekt.

Krok 6: Budování logiky programování hry

Budování logiky programování hry
Budování logiky programování hry

Systém samohlásek je založen na provozu modulu YX5300. Tento modul má některé funkce, my se však zaměříme na představení pracovní struktury hry prostřednictvím hlavních funkcí modulu YX5300.

Níže vám poskytuji veškerou programovací logiku projektu.

Krok 7:

V následujícím textu vysvětlím krok za krokem budování logiky této zábavné hry pro děti.

#zahrnout

#define ARDUINO_RX 5 // by se mělo připojit k TX modulu Serial MP3 Player #define ARDUINO_TX 6 // připojit k RX modulu SoftwareSerial mp3 (ARDUINO_RX, ARDUINO_TX); static int8_t Send_buf [8] = {0}; // Buffer pro příkazy Odeslat. // LEPŠÍ LOKÁLNĚ statický uint8_t ansbuf [10] = {0}; // Buffer pro odpovědi. // LEPŠÍ MÍSTNĚ Řetězec mp3Answer; // Odpověď z MP3. String sanswer (neplatné); Řetězec sbyte2hex (uint8_t b); / ************ Příkazový byte ************************** #define CMD_NEXT_SONG 0X01 // Přehrát další píseň. #define CMD_PREV_SONG 0X02 // Přehrát předchozí skladbu. #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. #define 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_FOLD_ #define CMD_FOLDER_CYCLE 0X17 #define CMD_SHUFFLE_PLAY 0x18 // #define CMD_SET_SNGL_CYCL 0X19 // Set single cycle. # 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 / ********* *** Opce *************************** / #define DEV_TF 0X02 / ************** ****************************************************** *****/ int numero; byte estado; bajtový bzučák = 2; byte pin = 0; byte SortNumber = 0; tlačítko bool = 0; neplatné nastavení () {Serial.begin (9600); mp3.begin (9600); zpoždění (500); pro (pin = 8; pin 13) {pin = 8; } Serial.println ("Varrendo …"); Serial.println (pin); // zpoždění (1000); } while (tlačítko! = 1); Serial.println ("Saiu …"); if (button == 1 && (pin-1)! = SortNumber) {sendCommand (0x03, 0, 6); zpoždění (3000); } if (button == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); zpoždění (3000); } // Vyhledejte odpověď. if (mp3.available ()) {Serial.println (decodeMP3Answer ()); } zpoždění (100); //Serial.println("Tocando musica … "); } /*************************************************** ******************************** / /*Funkce sendMP3Command: vyhledejte příkaz 'c' a odešlete jej do MP3 * / /*Parametr: c. Kód pro příkaz MP3, nápovědu „h“. *// *Return: void */ void sendMP3Command (char c) {switch (c) {case '?': Case 'h': Serial.println ("HELP"); Serial.println ("p = Play"); Serial.println ("P = Pauza"); Serial.println ("> = Další"); Serial.println ("': Serial.println (" Next "); sendCommand (CMD_NEXT_SONG); sendCommand (CMD_PLAYING_N); // dotaz na číslo souboru, kde se hraje přestávka; případ' paměťová karta vložena."; Break; case 0x3D: decodedMP3Answer + = " -> Dokončené číslo přehrávání" + Řetězec (ansbuf [6], DEC); // sendCommand (CMD_NEXT_SONG); // sendCommand (CMD_PLAYING_N); // dotaz na číslo souboru, kde se hraje přestávka; případ 0x40: decodedMP3Answer += " -> Chyba"; break; case 0x41: decodedMP3Answer += " -> Data přijata správně."; break; case 0x42: decodedMP3Answer += " -> Status playing:" +String (ansbuf [6], DEC); break; case 0x48: decodedMP3Answer + = " -> File number:" + String (ansbuf [6], DEC); break; case 0x4C: decodedMP3Answer + = " -> Playing:" + String (ansbuf [6], DEC); break; case 0x4E: decodedMP3Answer + = " -> Počet souborů ve složce:" + String (ansbuf [6], DEC); break; case 0x4F: decodedMP3Answer + = " -> Počet složek:" + String (ansbuf [6], DEC); break;} return decodedMP3Answer;} /********************************* ************ ******************************** / /*Funkce: Odeslat příkaz do MP3* / /*Parametr: byte příkaz *// *Parametr: parametr byte dat1 pro příkaz *// *Parametr: parametr byte dat2 pro příkaz */ void sendCommand (příkaz byte) {sendCommand (příkaz, 0, 0); } void sendCommand (příkaz byte, byte dat1, byte dat2) {zpoždění (20); Send_buf [0] = 0x7E; // Send_buf [1] = 0xFF; // Send_buf [2] = 0x06; // Len Send_buf [3] = příkaz; // Send_buf [4] = 0x01; // 0x00 NE, 0x01 zpětná vazba Send_buf [5] = dat1; // datah Send_buf [6] = dat2; // datový Send_buf [7] = 0xEF; // Serial.print ("Odesílání:"); pro (uint8_t i = 0; i <8; i ++) {mp3.write (Send_buf ); Serial.print (sbyte2hex (Send_buf )); } Serial.println (); } /************************************************* ******************************* / /*Funkce: sbyte2hex. Vrátí bajtová data ve formátu HEX. * / /*Parametr:- uint8_t b. Byte pro převod na HEX. *// *Return: String */ String sbyte2hex (uint8_t b) {String shex; shex = "0X"; if (b <16) shex += "0"; shex += řetězec (b, HEX); shex += ""; vrátit šek; } /*************************************************** ******************************* / /*Funkce: shex2int. Vrátí int z HEX řetězce. * / /*Parametr: s. char *s pro převod na HEX. * / /*Parametr: n. délka znaku *s. *// *Návrat: int */ int shex2int (char *s, int n) {int r = 0; pro (int i = 0; i = '0' && s = 'A' && s <= 'F') {r *= 16; r + = (s - 'A') + 10; }} návrat r; } /*************************************************** ******************************* / /*Funkce: sanswer. Vrátí řetězcovou odpověď z mp3 UART modulu. * / /*Parametr:- uint8_t b. prázdné * / /*Návrat: Řetězec. Pokud je odpověď dobře formulovaná, odpovězte. */ Řetězec sanswer (neplatný) {uint8_t i = 0; Řetězec mp3answer = ""; // Získejte pouze 10 bytů while (mp3.available () && (i <10)) {uint8_t b = mp3.read (); ansbuf = b; i ++; mp3answer += sbyte2hex (b); } // pokud je formát odpovědi správný. if ((ansbuf [0] == 0x7E) && (ansbuf [9] == 0xEF)) {return mp3answer; } vrátit "???:" + mp3answer; }

Nejprve definujeme všechny programové proměnné a adresy přístupových registrů modulu YX5300.

#zahrnout

#define ARDUINO_RX 5 // by se mělo připojit k TX modulu Serial MP3 Player #define ARDUINO_TX 6 // připojit k RX modulu SoftwareSerial mp3 (ARDUINO_RX, ARDUINO_TX); static int8_t Send_buf [8] = {0}; // Buffer pro příkazy Odeslat. // LEPŠÍ MÍSTNĚ statický uint8_t ansbuf [10] = {0}; // Buffer pro odpovědi. // LEPŠÍ MÍSTNĚ Řetězec mp3Answer; // Odpověď z MP3. String sanswer (neplatné); Řetězec sbyte2hex (uint8_t b); / ************ Příkazový byte ************************** #define CMD_NEXT_SONG 0X01 // Přehrát další píseň. #define CMD_PREV_SONG 0X02 // Přehrát předchozí skladbu. #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. #define 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_FOLD_ #define CMD_FOLDER_CYCLE 0X17 #define CMD_SHUFFLE_PLAY 0x18 // #define CMD_SET_SNGL_CYCL 0X19 // Set single cycle. # 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 / ********* *** Opce *************************** / #define DEV_TF 0X02 / ************** ****************************************************** *****/ int numero; byte estado; bajtový bzučák = 2; byte pin = 0; byte SortNumber = 0; tlačítko bool = 0;

Krok 8:

Tyto adresy registrů se používají ke konfiguraci provozu modulu. Viz například tato registrační adresa níže.

#define CMD_PLAY_W_INDEX 0X03

Adresa 0x03 je definována názvem CMD_PLAY_W_INDEX. Slouží ke spuštění skladby z jejího čísla, to znamená, že zadáte číslo zvuku a bude se přehrávat.

Právě s těmito hodnotami je použijeme a nakonfigurujeme fungování našeho projektu.

Jakmile definujete různé adresy, které budou použity, vstoupíme do funkce nastavení a nakonfigurujeme piny a sériovou komunikaci pro náš projekt.

Krok 9: Funkce Void Setup ()

Dále se podívejte na funkci nastavení neplatnosti. V MP3 jsem provedl všechna nastavení kolíků tlačítek, sériovou komunikaci modulu MP3 a inicializaci modulu karty.

neplatné nastavení ()

{Serial.begin (9600); mp3.begin (9600); zpoždění (500); for (pin = 8; pin <13; pin ++) {pinMode (pin, INPUT); } sendCommand (CMD_SEL_DEV, 0, DEV_TF); zpoždění (500); }

Zahájil jsem sériovou komunikaci pro tisk dat na sériové číslo počítače a poté jsme zahájili sériovou komunikaci přes objekt mp3.

Serial.begin (9600);

mp3.begin (9600); zpoždění (500);

Modul mp3 je řízen příkazy přijatými sériovým číslem Arduino. V tomto procesu jsme použili knihovnu SoftwareSerial a emulovali jsme seriál na digitálních pinech Arduino.

Díky tomu budete moci pomocí Arduina ovládat modul MP3 prostřednictvím příkazů, které mu byly zaslány.

Kromě toho jsme provedli konfiguraci digitálních pinů a inicializaci modulu MP3 Card

for (pin = 8; pin <13; pin ++) {pinMode (pin, INPUT); } sendCommand (CMD_SEL_DEV, 0, DEV_TF); zpoždění (500);

Po provedení konfigurace musíme přejít k hlavní logice ve funkci void loop.

Krok 10: Hlavní funkce Prázdná smyčka ()

Kód je velmi jednoduchý a celá logická struktura je uvedena níže. V následujícím textu vám vysvětlím úplnou logiku hlavní funkce.

prázdná smyčka ()

{pin = 8; randomSeed (analogRead (A0)); numero = náhodný (8, 12); SortNumber = numero; numero = numero - 7; Serial.println (numero); sendCommand (0x03, 0, numero); zpoždění (1000); do {button = digitalRead (pin); Serial.println (tlačítko); pin ++; if (pin> 13) {pin = 8; } Serial.println ("Varrendo …"); Serial.println (pin); // zpoždění (1000); } while (tlačítko! = 1); Serial.println ("Saiu …"); if (button == 1 && (pin-1)! = SortNumber) {sendCommand (0x03, 0, 6); zpoždění (3000); } if (button == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); zpoždění (3000); } // Vyhledejte odpověď. if (mp3.available ()) {Serial.println (decodeMP3Answer ()); } zpoždění (100); //Serial.println("Tocando musica … "); }

Na každém začátku cyklu smyčkové funkce vygenerujeme novou hodnotu mezi 8 a 12, abychom vygenerovali zvuk samohlásky. Hodnota od 8 do 12 se týká digitálního kolíku samohlásky.

Kód pro generování náhodné hodnoty je uveden níže.

kolík = 8;

randomSeed (analogRead (A0)); numero = náhodný (8, 12); SortNumber = numero;

Kromě toho odečteme 7 od částky čerpané mezi 8 a 12. To nám umožní ukázat na pozice 1 až 5 skladeb zaznamenaných na paměťovou kartu.

numero = numero - 7;

Poté jsem reprodukoval zvuk samohlásky nakreslený na řádku níže.

sendCommand (0x03, 0, numero);

zpoždění (1000);

Nyní nastal důležitý čas: okamžik, kdy se chystáme přečíst tlačítko, které dítě stisklo. Část kódu je uvedena níže.

dělat

{tlačítko = digitalRead (pin); Serial.println (tlačítko); pin ++; if (pin> 13) {pin = 8; } Serial.println ("Varrendo …"); Serial.println (pin); // zpoždění (1000); } while (tlačítko! = 1);

Tato smyčka bude spuštěna, dokud uživatel nestiskne tlačítka. Smyčka umožňuje naskenovat 5 digitálních pinů a ve chvíli, kdy dítě stiskne jedno z tlačítek, vyjede ze smyčky a zkontroluje, zda dítě správně zareagovalo.

Ověření provedete pomocí níže uvedeného kódu.

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

{sendCommand (0x03, 0, 6); zpoždění (3000); } if (button == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); zpoždění (3000); }

První podmínka bude provedena, když uživatel udělá chybu, protože bylo stisknuto tlačítko a spouštěná hodnota pinu se lišila od nakresleného pinu (SortNumber).

V tomto okamžiku musíte provést níže uvedený příkaz.

sendCommand (0x03, 0, 6);

zpoždění (3000);

Tento příkaz slouží ke spuštění nesprávného tónu odpovědi. Nakonec tu máme druhou podmínku, která bude použita ke kontrole, zda má dítě pravdu.

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

{sendCommand (0x03, 0, 7); zpoždění (3000); }

Krok 11:

obraz
obraz

Pokud bylo stisknuto tlačítko a digitální pin, který byl stisknut, je stejný jako nakreslený pin, systém spustí zvuk správné odpovědi.

Jak vám vysvětlím, tento kód je velmi jednoduchý a pomůže každému dítěti rozvíjet znalosti o samohláskách prostřednictvím hry s Arduinem.

Na obrázku výše soundbox provádí skladbu uloženou na SD kartě modulu MP3 YX5300.

Krok 12: Závěr

Výuku ve třídě je třeba neustále měnit a Arduino může být skvělým spojencem při vytváření zábavných úkolů.

Prostřednictvím tohoto projektu bylo možné vyvinout jednoduchou aktivitu, která může rozvíjet dovednosti dětí prostřednictvím znalosti zvuku a pravopisu každé samohlásky.

Na rozdíl od tradičních výukových metod se děti budou učit zábavou ve třídě prostřednictvím her a elektroniky.

Krok 13: Potvrzení

Tento projekt byl vyvinut díky podpoře a povzbuzení společnosti JLCPCB. Podporovali vzdělávání a pozvali nás k vývoji hry na samohlásky pro výuku dětí ve třídě.

Pokud si chcete zakoupit elektronické desky Hry o samohlásky, můžete se dostat na tento odkaz a zakoupit 10 jednotek za 2 $ na JLCPCB.

Doporučuje: