Obsah:

Hra so samohláskami s modulom MP3 Arduino a YX5300 MP3: 13 krokov
Hra so samohláskami s modulom MP3 Arduino a YX5300 MP3: 13 krokov

Video: Hra so samohláskami s modulom MP3 Arduino a YX5300 MP3: 13 krokov

Video: Hra so samohláskami s modulom MP3 Arduino a YX5300 MP3: 13 krokov
Video: THEREMIN - Over The Rainbow 2024, November
Anonim
Hra so samohláskami s modulom Arduino a modulom YX5300 MP3 Catalex
Hra so samohláskami s modulom Arduino a modulom YX5300 MP3 Catalex

Dokážete si prečítať túto otázku? To je divné! Túto otázku som položil účelovo. Ak dokážete prečítať tento text, je to preto, že poznáte celú abecedu a samozrejme ste sa dozvedeli o všetkých samohláskach.

Samohlásky sú prítomné vo všetkých slovách. Pred každým z nich nie je možné uniknúť. Teraz mi položím otázku. Bolo učenie v detstve zábavné a zapojené technologické zdroje?

Som si istý, že učebných zdrojov bolo málo a používali ste tradičné metódy na učenie samohlások a abecedy.

Je predsa možné použiť nejaké technologické zdroje na učenie samohlások?

V tomto článku vás naučím, ako naučiť svojich študentov a deti samohlásky prostredníctvom hry.

Naučím vás vytvoriť systém s hlasom, kde vaše dieťa/študent bude počuť zvuk písmena a musí stlačiť tlačidlo, aby označilo správne písmeno.

Naučia sa teda hrať a budú vždy motivovaní študovať.

Teraz vám ukážem postup krok za krokom, ako vytvoriť vlastnú hru, a naučím samohlásky deti.

Zásoby

Doska s plošnými spojmi JLCPCB

Arduino Uno

Tlačidlový spínač

Rezistor 10 kR

Zástrčka 2, 54 mm 1x7

Krok 1: Rozvoj hry na samohlásky s Arduinom

Vývoj hry na samohlásky s Arduinom
Vývoj hry na samohlásky s Arduinom

Srdcom hry je plošný spoj JLCPCB samohlások. Môžete pristupovať k tomuto odkazu a sťahovať súbory projektu. Má 5 tlačidiel. Každé tlačidlo použijete na reprezentáciu samohlásky a pripojenie k svojmu Arduinu.

Doska s plošnými spojmi je znázornená na obrázku 1.

Krok 2:

Obrázok
Obrázok

S týmto projektom PCB ho môžete prepojiť s Arduino a vytvoriť si hru. Ďalej vám ponúknem elektronickú schému na zostavenie alebo stavbu projektu na vašom protoboarde.

Krok 3:

Z tejto schémy sme nastavili rozloženie elektronickej dosky. Je to znázornené na obrázku 2 a môžete si stiahnuť súbory a vytvoriť svoj projekt.

Vyberte 5 pinov z Arduina a prepojte prepojky na doske s Arduinom. Alebo inak, môžete zostaviť nasledujúci elektronický diagram.

Krok 4: Idea projektu

Idea projektu
Idea projektu

Naučím vás, ako zostaviť zvukový systém MP3 s Arduino. Tento systém bude zodpovedný za reprodukciu hlasu, ktorý hovorí písmenom. Zvuk každého písmena bude nakreslený pomocou hodnoty od 1 do 5, kde 1 predstavuje A a 5 predstavuje U.

Keď teda dieťa počuje zvuk, musí sa pozrieť na klávesnicu, rozpoznať pravopis samohlásky a stlačiť správny kláves.

Ak zlyhá, systém trikrát zabliká červenou LED diódou. V opačnom prípade systém aktivuje bzučiak na 5 sekúnd a nakreslí novú samohlásku.

Aby ste to urobili, musíte zostaviť nasledujúci obvod.

V tomto obvode prepojíte modul MP3 a dosku samohlásky na Arduine. Modul Bluetooth slúžil na reprezentáciu modulu Catalex MP3.

Arduino bude zodpovedné za zoradenie 5 čísel a potom za odoslanie príkazu na aktiváciu nakreslenej samohlásky

Krok 5:

Obrázok
Obrázok

Potom počkáme, kým dieťa nepočuje, a nestlačí tlačidlo, ako je to znázornené na obrázku vyššie.

Každé tlačidlo vyššie predstavuje samohlásku abecedy. Ďalej vám ukážem, ako vybudujete programovaciu logiku pre tento projekt.

Krok 6: Budovanie logiky programovania hry

Budovanie logiky programovania hry
Budovanie logiky programovania hry

Systém samohlásky je založený na prevádzke modulu YX5300. Tento modul má niektoré funkcie, zameriame sa však na predstavenie pracovnej štruktúry hry prostredníctvom hlavných funkcií modulu YX5300.

Ďalej vám poskytnem všetku logiku programovania projektu.

Krok 7:

V nasledujúcom texte vysvetlím krok za krokom budovanie logiky tejto zábavnej hry pre deti.

#zahrnúť

#define ARDUINO_RX 5 // by sa malo pripojiť k TX modulu sériového prehrávača MP3 #define ARDUINO_TX 6 // pripojiť k RX modulu SoftwareSerial mp3 (ARDUINO_RX, ARDUINO_TX); static int8_t Send_buf [8] = {0}; // Vyrovnávacia pamäť pre príkazy na odoslanie. // LEPŠIE LOKÁLNE statické uint8_t ansbuf [10] = {0}; // Buffer pre odpovede. // LEPŠIE LOKÁLNE Reťazec mp3Answer; // Odpoveď z MP3. Reťazec sanswer (neplatný); Reťazec sbyte2hex (uint8_t b); / ************ Príkazový byte ************************** #define CMD_NEXT_SONG 0X01 // Prehrať ďalej pieseň. #define CMD_PREV_SONG 0X02 // Prehrať predchádzajúcu 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 // Nastaviť jeden cyklus. # 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 / ********* *** Oponty ************************** / #define DEV_TF 0X02 / ************** ****************************************************** *****/ int numero; byte estado; bajtový bzučiak = 2; bajtový pin = 0; bajt SortNumber = 0; tlačidlo bool = 0; void setup () {Serial.begin (9600); mp3.begin (9600); oneskorenie (500); pre (pin = 8; pin 13) {pin = 8; } Serial.println ("Varrendo …"); Serial.println (pin); // oneskorenie (1000); } while (tlačidlo! = 1); Serial.println ("Saiu …"); if (button == 1 && (pin-1)! = SortNumber) {sendCommand (0x03, 0, 6); oneskorenie (3000); } if (button == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); oneskorenie (3000); } // Vyhľadajte odpoveď. if (mp3.available ()) {Serial.println (decodeMP3Answer ()); } oneskorenie (100); //Serial.println("Tocando musica … "); } /************************************************************ ******************************* / /*Funkcia sendMP3Command: vyhľadajte príkaz „c“a pošlite ho do MP3 * / /*Parameter: c. Kód pre príkaz MP3, pomoc „h“. *// *Návrat: neplatný */ void sendMP3Command (znak c) {prepínač (c) {prípad '?': Prípad 'h': Serial.println ("HELP"); Serial.println ("p = hrať"); Serial.println ("P = Pozastaviť"); Serial.println ("> = Ďalej"); Serial.println ("': Serial.println (" Next "); sendCommand (CMD_NEXT_SONG); sendCommand (CMD_PLAYING_N); // požiadať o číslo prehrávaného súboru prestávka; prípad' vložená pamäťová karta."; Prestávka; prípad 0x3D: decodedMP3Answer + = " -> Počet dokončených prehratí" + Reťazec (ansbuf [6], DEC); // sendCommand (CMD_NEXT_SONG); // sendCommand (CMD_PLAYING_N); // požiadavka na číslo súboru sa prehráva prestávka; prípad 0x40: decodedMP3Answer += " -> Chyba"; zlom; prípad 0x41: decodedMP3Answer += " -> Údaje boli prijaté správne."; zlom; prípad 0x42: decodedMP3Answer += " -> Prehrávanie stavu:" +Reťazec (ansbuf [6], DEC); break; case 0x48: decodedMP3Answer + = " -> File file:" + String (ansbuf [6], DEC); break; case 0x4C: decodedMP3Answer + = " -> Playying:" + String (ansbuf [6], DEC); break; case 0x4E: decodedMP3Answer + = " -> Počet súborov v priečinku:" + String (ansbuf [6], DEC); break; case 0x4F: decodedMP3Answer + = " -> Počet priečinkov:" + String (ansbuf [6], DEC); break;} return decodedMP3Answer;} /***************************** ************ ******************************** / /*Funkcia: Odoslať príkaz do MP3* / /*Parameter: byte príkaz *// *Parameter: parameter byte dat1 pre príkaz *// *Parameter: parameter byte dat2 pre príkaz */ void sendCommand (príkaz byte) {sendCommand (príkaz, 0, 0); } void sendCommand (príkaz byte, byte dat1, byte dat2) {oneskorenie (20); Send_buf [0] = 0x7E; // Send_buf [1] = 0xFF; // Send_buf [2] = 0x06; // Len Send_buf [3] = príkaz; // Send_buf [4] = 0x01; // 0x00 NO, 0x01 spätná väzba Send_buf [5] = dat1; // datah Send_buf [6] = dat2; // datal Send_buf [7] = 0xEF; // Serial.print ("Odosielam:"); pre (uint8_t i = 0; i <8; i ++) {mp3.write (Send_buf ); Serial.print (sbyte2hex (Send_buf )); } Serial.println (); } /************************************************************ ******************************* / /*Funkcia: sbyte2hex. Vráti bajtové údaje vo formáte HEX. * / /*Parameter:- uint8_t b. Bajtov na konverziu na HEX. *// *Return: String */ String sbyte2hex (uint8_t b) {String shex; shex = "0X"; ak (b <16) shex += "0"; shex += reťazec (b, HEX); shex += ""; vrátiť šek; } /********************************************************** ****************************** / /*Funkcia: shex2int. Vráti int z HEX reťazca. * / /*Parameter: s. char *s na konverziu na HEX. * / /*Parameter: n. dĺžka znaku *s. *// *Návrat: int */ int shex2int (char *s, int n) {int r = 0; pre (int i = 0; i = '0' && s = 'A' && s <= 'F') {r *= 16; r + = (s - 'A') + 10; }} návrat r; } /************************************************************ ****************************** / /*Funkcia: sanswer. Vráti reťazcovú odpoveď z modulu mp3 UART. * / /*Parameter:- uint8_t b. prázdny * / /*Návrat: Reťazec. Ak je odpoveď dobre formulovaná, odpoveď. */ Sanswer reťazca (neplatné) {uint8_t i = 0; Reťazec mp3answer = ""; // Získať iba 10 bajtov while (mp3.available () && (i <10)) {uint8_t b = mp3.read (); ansbuf = b; i ++; mp3answer += sbyte2hex (b); } // ak je formát odpovede správny. if ((ansbuf [0] == 0x7E) && (ansbuf [9] == 0xEF)) {return mp3answer; } vrátiť "???:" + mp3answer; }

Najprv definujeme všetky programové premenné a adresy prístupových registrov modulu YX5300.

#zahrnúť

#define ARDUINO_RX 5 // by sa mal pripojiť k TX modulu sériového prehrávača MP3 #define ARDUINO_TX 6 // pripojiť k RX modulu SoftwareSerial mp3 (ARDUINO_RX, ARDUINO_TX); static int8_t Send_buf [8] = {0}; // Vyrovnávacia pamäť pre príkazy na odoslanie. // LEPŠIE LOKÁLNE statické uint8_t ansbuf [10] = {0}; // Buffer pre odpovede. // LEPŠIE LOKÁLNE Reťazec mp3Answer; // Odpoveď z MP3. Reťazec sanswer (neplatný); Reťazec sbyte2hex (uint8_t b); / ************ Príkazový byte ************************** #define CMD_NEXT_SONG 0X01 // Prehrať ďalej pieseň. #define CMD_PREV_SONG 0X02 // Prehrať predchádzajúcu 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 // Nastaviť jeden cyklus. # 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 / ********* *** Oponty ************************** / #define DEV_TF 0X02 / ************** ********************************************************** *****/ int numero; byte estado; bajtový bzučiak = 2; bajtový pin = 0; bajt SortNumber = 0; tlačidlo bool = 0;

Krok 8:

Tieto adresy registrov sa používajú na konfiguráciu činnosti modulu. Pozrite sa napríklad na nižšie uvedenú registračnú adresu.

#define CMD_PLAY_W_INDEX 0X03

Adresa 0x03 je definovaná názvom CMD_PLAY_W_INDEX. Slúži na spustenie skladby z jej čísla, to znamená, že zadáte číslo zvuku a bude sa hrať.

Práve s týmito hodnotami ich použijeme a nakonfigurujeme fungovanie nášho projektu.

Potom, čo ste definovali rôzne adresy, ktoré sa budú používať, vstúpime do funkcie nastavenia a nakonfigurujeme piny a sériovú komunikáciu pre náš projekt.

Krok 9: Funkcia Void Setup ()

Ďalej sa pozrite na funkciu nastavenia neplatnosti. V MP3 som urobil všetky nastavenia kolíkov tlačidiel, sériovú komunikáciu modulu MP3 a inicializáciu modulu karty.

neplatné nastavenie ()

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

Začal som sériovú komunikáciu, aby som vytlačil údaje na sériovom počítači, a potom sme zahájili sériovú komunikáciu prostredníctvom objektu mp3.

Serial.begin (9600);

mp3.begin (9600); oneskorenie (500);

Modul mp3 je ovládaný pomocou príkazov prijatých sériou Arduino. V tomto procese sme použili knižnicu SoftwareSerial a emulovali sme sériové číslo na digitálnych kolíkoch Arduino.

Vďaka tomu budete môcť Arduino ovládať modul MP3 pomocou príkazov, ktoré mu boli zaslané.

Okrem toho sme urobili konfiguráciu digitálnych pinov a inicializáciu modulu karty MP3

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

Po vykonaní konfigurácie musíme prejsť na hlavnú logiku funkcie prázdna slučka.

Krok 10: Prázdna slučka hlavnej funkcie ()

Kód je veľmi jednoduchý a celú logickú štruktúru uvádzame nižšie. V nasledujúcom texte vám vysvetlím úplnú logiku hlavnej funkcie.

prázdna slučka ()

{pin = 8; randomSeed (analogRead (A0)); numero = náhodný (8, 12); SortNumber = numero; numero = numero - 7; Serial.println (numero); sendCommand (0x03, 0, numero); oneskorenie (1000); do {button = digitalRead (pin); Serial.println (tlačidlo); pin ++; if (pin> 13) {pin = 8; } Serial.println ("Varrendo …"); Serial.println (pin); // oneskorenie (1000); } while (tlačidlo! = 1); Serial.println ("Saiu …"); if (button == 1 && (pin-1)! = SortNumber) {sendCommand (0x03, 0, 6); oneskorenie (3000); } if (button == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); oneskorenie (3000); } // Vyhľadajte odpoveď. if (mp3.available ()) {Serial.println (decodeMP3Answer ()); } oneskorenie (100); //Serial.println("Tocando musica … "); }

Na každom začiatku cyklu cyklu cyklu vygenerujeme novú hodnotu medzi 8 a 12, aby sa vygeneroval zvuk samohlásky. Hodnota od 8 do 12 sa týka digitálneho kolíka samohlásky.

Kód na generovanie náhodnej hodnoty je uvedený nižšie.

kolík = 8;

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

Okrem toho odpočítame 7 od sumy čerpanej medzi 8 a 12. To nám umožní poukázať na polohy 1 až 5 skladieb zaznamenaných na pamäťovej karte.

numero = numero - 7;

Potom som reprodukoval zvuk samohlásky nakreslenej na nižšie uvedenej čiare.

sendCommand (0x03, 0, numero);

oneskorenie (1000);

Teraz prišiel dôležitý čas: okamih, keď sa chystáme čítať tlačidlo, ktoré stlačilo dieťa. Časť kódu je uvedená nižšie.

urobiť

{tlačidlo = digitalRead (pin); Serial.println (tlačidlo); pin ++; if (pin> 13) {pin = 8; } Serial.println ("Varrendo …"); Serial.println (pin); // oneskorenie (1000); } while (tlačidlo! = 1);

Táto slučka sa spustí, kým používateľ nestlačí tlačidlá. Smyčka vám umožní naskenovať 5 digitálnych pinov a v momente, keď dieťa stlačí jedno z tlačidiel, vyjde zo slučky a skontroluje, či dieťa zareagovalo správne.

Overenie vykonáte pomocou nižšie uvedeného kódu.

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

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

Prvá podmienka sa vykoná, keď používateľ urobí chybu, pretože bolo stlačené tlačidlo a spustená hodnota pinu sa líšila od nakresleného pinu (SortNumber).

V tomto okamihu musíte vykonať príkaz uvedený nižšie.

sendCommand (0x03, 0, 6);

oneskorenie (3000);

Tento príkaz sa používa na spustenie nesprávneho tónu odpovede. Na záver tu máme druhú podmienku, ktorá bude slúžiť na kontrolu, či má dieťa pravdu.

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

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

Krok 11:

Obrázok
Obrázok

Ak bolo stlačené tlačidlo a digitálny kolík, ktorý bol stlačený, je rovnaký ako nakreslený kolík, systém spustí zvuk správnej odpovede.

Ako vám vysvetľujem, tento kód je veľmi jednoduchý a pomôže každému dieťaťu rozvinúť si znalosti o samohláskach prostredníctvom hry s Arduinom.

Na obrázku vyššie soundbox vykonáva skladbu uloženú na SD karte modulu MP3 YX5300.

Krok 12: Záver

Vzdelávanie v triede je potrebné neustále meniť a Arduino môže byť veľkým spojencom pri vytváraní zábavných úloh.

Prostredníctvom tohto projektu bolo možné vyvinúť jednoduchú aktivitu, ktorá môže rozvíjať zručnosti detí prostredníctvom znalosti zvuku a pravopisu každej samohlásky.

Na rozdiel od tradičných vyučovacích metód sa deti budú učiť prostredníctvom zábavy v triede prostredníctvom hier a elektroniky.

Krok 13: Potvrdenie

Tento projekt bol vyvinutý vďaka podpore a povzbudeniu spoločnosti JLCPCB. Podporovali vzdelávanie a pozvali nás, aby sme rozvíjali hru na samohlásky na vyučovanie detí v triede.

Ak si chcete kúpiť elektronické platne Hry o samohlásky, môžete sa dostať k tomuto odkazu a kúpiť 10 jednotiek za 2 doláre na JLCPCB.

Odporúča: