Obsah:
- Zásoby
- Krok 1: Rozvoj hry na samohlásky s Arduinom
- Krok 2:
- Krok 3:
- Krok 4: Idea projektu
- Krok 5:
- Krok 6: Budovanie logiky programovania hry
- Krok 7:
- Krok 8:
- Krok 9: Funkcia Void Setup ()
- Krok 10: Prázdna slučka hlavnej funkcie ()
- Krok 11:
- Krok 12: Záver
- Krok 13: Potvrdenie
Video: Hra so samohláskami s modulom MP3 Arduino a YX5300 MP3: 13 krokov
2024 Autor: John Day | [email protected]. Naposledy zmenené: 2024-01-30 11:57
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
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:
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
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:
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
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:
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:
Rozhranie Arduino Mega s modulom GPS (Neo-6M): 8 krokov
Rozhranie Arduino Mega s modulom GPS (Neo-6M): V tomto projekte som ukázal, ako prepojiť modul GPS (Neo-6M) s Arduino Mega. Knižnica TinyGPS sa používa na zobrazenie údajov zemepisnej šírky a šírky a TinyGPS ++ sa používa na zobrazenie zemepisnej šírky, dĺžky, nadmorskej výšky, rýchlosti a počtu satelitných
Hra Crack the Code, logická hra založená na Arduine: 4 kroky (s obrázkami)
Hra Crack the Code, logická škatuľka založená na Arduine: V tomto návode vám ukážem, ako si vytvoriť vlastnú crackovú hru, v ktorej pomocou otočného voliča uhádnete náhodne vygenerovaný kód do sejfu. Na prednej strane trezoru je 8 LED diód, ktoré vám informujú, koľko z
Aruduino LED hra Rýchle kliknutie Hra pre dvoch hráčov: 8 krokov
Aruduino LED hra Rýchle kliknutie Hra pre dvoch hráčov: Tento projekt je inšpirovaný @HassonAlkeim. Ak ste ochotní sa podrobne pozrieť, tu je odkaz, ktorý si môžete pozrieť https://www.instructables.com/id/Arduino-Two-Player-Fast-Button-Clicking-Game/. Táto hra je vylepšenou verziou hry Alkeim's. Jedná sa o
HiFive1 Arduino s modulom Bluetooth HC-05 Výučba: 7 krokov
HiFive1 Arduino s modulom Bluetooth HC-05 Výučba: HiFive1 je prvou doskou kompatibilnou s Arduino RISC-V postavenou na procesore FE310 od SiFive. Doska je asi 20 -krát rýchlejšia ako Arduino UNO a keďže UNO nemá žiadne bezdrôtové pripojenie. Našťastie existuje niekoľko lacných modulov
Doska HiFive1 Arduino s modulom WiFi ESP-01 WiFi: 5 krokov
Výučba HiFive1 Arduino s modulom WiFi ESP-01 WiFi: HiFive1 je prvou doskou kompatibilnou s Arduino RISC-V postavenou na procesore FE310 od SiFive. Doska je asi 20 -krát rýchlejšia ako Arduino UNO, ale podobne ako doska UNO jej chýba akékoľvek bezdrôtové pripojenie. Našťastie existuje niekoľko lacných