Բովանդակություն:

Ձայնավորների խաղ Arduino- ով և YX5300 MP3 մոդուլով Catalex: 13 քայլ
Ձայնավորների խաղ Arduino- ով և YX5300 MP3 մոդուլով Catalex: 13 քայլ

Video: Ձայնավորների խաղ Arduino- ով և YX5300 MP3 մոդուլով Catalex: 13 քայլ

Video: Ձայնավորների խաղ Arduino- ով և YX5300 MP3 մոդուլով Catalex: 13 քայլ
Video: Պատմում ենք ձայնավորների ուղղագրության մասին 2024, Հուլիսի
Anonim
Ձայնային խաղ Arduino- ի և YX5300 MP3 մոդուլի Catalex- ի հետ
Ձայնային խաղ Arduino- ի և YX5300 MP3 մոդուլի Catalex- ի հետ

Կարո՞ղ եք կարդալ այս հարցը: Դա տարօրինակ է: Ես այս հարցը դիտմամբ տվեցի: Եթե կարող եք կարդալ այս տեքստը, դա այն պատճառով է, որ դուք տիրապետում եք ամբողջ այբուբենին և, իհարկե, սովորել եք բոլոր ձայնավորների մասին:

Բոլոր բառերում առկա են ձայնավորները: Նրանցից յուրաքանչյուրից անհնար է փախչել: Հիմա, թույլ տվեք ձեզ մի հարց տալ. Արդյո՞ք ձեր մանկությունը սովորելը զվարճալի էր և ներառում էր տեխնոլոգիական ռեսուրսներ:

Համոզված եմ, որ ուսուցման ռեսուրսները քիչ էին, և դուք օգտագործել եք ավանդական մեթոդներ `ձայնավորներն ու այբուբենը սովորելու համար:

Ի վերջո, հնարավո՞ր է որոշ տեխնոլոգիական ռեսուրսներ օգտագործել ձայնավորներ սովորելու համար:

Այս հոդվածում ես կսովորեցնեմ ձեզ, թե ինչպես սովորեցնել ձեր աշակերտներին և երեխաներին ձայնավորներ խաղի միջոցով:

Ես ձեզ կսովորեցնեմ, թե ինչպես ստեղծել ձայնով համակարգ, որտեղ ձեր երեխան/աշակերտը կլսի տառի ձայնը և պետք է սեղմել կոճակը `ճիշտ տառը նշելու համար:

Այսպիսով, նրանք կսովորեն խաղալու ընթացքում և միշտ մոտիվացիա կունենան սովորելու:

Այժմ ես ձեզ ցույց կտամ ձեր սեփական խաղը ստեղծելու քայլ առ քայլ գործընթացը և երեխաներին սովորեցնելու ձայնավորները:

Պարագաներ

JLCPCB տպագիր տպատախտակ

Արդուինո Ունո

Pushbutton անջատիչ

10kR դիմադրություն

Արական վերնագիր 2, 54 մմ 1x7

Քայլ 1. Ձայնավորների խաղի զարգացում Arduino- ի հետ

Ձայնավորների խաղի զարգացում Arduino- ի հետ
Ձայնավորների խաղի զարգացում Arduino- ի հետ

Խաղի սիրտը ձայնավորների JLCPCB տպագիր տպատախտակն է: Կարող եք մուտք գործել այս հղումը և ներբեռնել ծրագրի ֆայլերը: Այն ունի 5 կոճակ: Յուրաքանչյուր կոճակ կօգտագործեք ձայնավորը ներկայացնելու և այն ձեր Arduino- ին միացնելու համար:

Տպագիր տպատախտակը ներկայացված է Նկար 1 -ում:

Քայլ 2:

Պատկեր
Պատկեր

Այս PCB նախագծով դուք կարող եք այն կապել Arduino- ի հետ և ստեղծել ձեր խաղը: Հաջորդը, ես ձեզ կառաջարկեմ էլեկտրոնային սխեմա ՝ նախագիծը հավաքելու կամ կառուցելու ձեր նախատախտակի վրա:

Քայլ 3:

Այս սխեմատիկայից մենք ստեղծեցինք էլեկտրոնային տախտակի դասավորությունը: Այն ցուցադրվում է Նկար 2 -ում և կարող եք ներբեռնել ֆայլերը և կազմել ձեր նախագիծը:

Ընտրեք 5 կապում Arduino- ից և միացրեք տախտակի վրա թռչկոտողները Arduino- ի հետ: Կամ այլ կերպ, կարող եք հավաքել հետևյալ էլեկտրոնային դիագրամը:

Քայլ 4. Նախագծի գաղափարը

Նախագծի գաղափար
Նախագծի գաղափար

Ես ձեզ կսովորեցնեմ, թե ինչպես կարելի է Arduino- ով MP3 ձայնային համակարգ հավաքել: Այս համակարգը պատասխանատու կլինի տառով խոսող ձայնի վերարտադրման համար: Յուրաքանչյուր տառի ձայնը գծվելու է 1 -ից 5 -ի արժեքով, որտեղ 1 -ը ներկայացնում է A- ն, իսկ 5 -ը `U- ն:

Այսպիսով, երբ երեխան լսում է ձայնը, նա պետք է նայի ստեղնաշարին, ճանաչի ձայնավորի ուղղագրությունը և սեղմի ճիշտ ստեղնը:

Եթե այն ձախողվի, համակարգը 3 անգամ կթարթի Կարմիր LED- ը: Հակառակ դեպքում համակարգը 5 վայրկյան կակտիվացնի ազդանշանը և կքաշի նոր ձայնավոր:

Դա անելու համար դուք պետք է հավաքեք հետևյալ սխեման:

Այս շրջագծում դուք կկապեք MP3 մոդուլը և ձայնավոր տախտակը Arduino- ին: Bluetooth մոդուլն օգտագործվել է Catalex MP3 մոդուլը ներկայացնելու համար:

Arduino- ն պատասխանատու կլինի 5 համարները տեսակավորելու և այնուհետև ուղարկելու հրահանգը ՝ ակտիվացված ձայնավորը ակտիվացնելու համար:

Քայլ 5:

Պատկեր
Պատկեր

Դրանից հետո մենք կսպասենք, մինչև երեխան լսի և սեղմի կոճակը, ինչպես ցույց է տրված վերևում նկարում:

Վերը նշված յուրաքանչյուր կոճակ ներկայացնում է այբուբենի ձայնավորը: Հաջորդը, ես ձեզ ցույց կտամ, թե ինչպես եք կառուցելու ծրագրավորման տրամաբանությունը այս նախագծի համար:

Քայլ 6. Խաղի ծրագրավորման տրամաբանության կառուցում

Խաղի ծրագրավորման տրամաբանության կառուցում
Խաղի ծրագրավորման տրամաբանության կառուցում

Ձայնային խաղերի համակարգը հիմնված է YX5300 մոդուլի աշխատանքի վրա: Այս մոդուլն ունի որոշ գործառույթներ, այնուամենայնիվ, մենք կկենտրոնանանք խաղի աշխատանքային կառուցվածքը YX5300 մոդուլի հիմնական գործառույթների միջոցով ներկայացնելու վրա:

Ստորև ձեզ եմ ներկայացնում նախագծի ծրագրավորման ամբողջ տրամաբանությունը:

Քայլ 7:

Հետևյալում ես քայլ առ քայլ կբացատրեմ երեխաների համար այս զվարճալի խաղի տրամաբանությունը կառուցելու համար:

#ներառում

#սահմանեք ARDUINO_RX 5 // պետք է միանա Serial MP3 Player մոդուլի TX- ին #սահմանեք ARDUINO_TX 6 // միացեք SoftwareSerial մոդուլի RX- ին (ARDUINO_RX, ARDUINO_TX); ստատիկ int8_t Send_buf [8] = {0}; // Բուֆեր ՝ ուղարկվող հրամանների համար: // ԱՎԵԼԻ ՏԵOCԱԿԱՆ ստատիկ uint8_t ansbuf [10] = {0}; // Պատասխանների բուֆեր: // ԱՎԵԼԻ ՏԵOCԱԿԱՆ Լարային mp3 Պատասխան; // Պատասխան MP3- ից: Լարային պատասխան (անվավեր); Լարային sbyte2hex (uint8_t բ); / ************ Հրամանի բայթ ************************* # #սահմանել CMD_NEXT_SONG 0X01 // Խաղալ հաջորդ երգ. #սահմանեք CMD_PREV_SONG 0X02 // Նվագարկեք նախորդ երգը: #սահմանել CMD_PLAY_W_INDEX 0X03 #սահմանել CMD_VOLUME_UP 0X04 #սահմանել CMD_VOLUME_DOWN 0X05 #սահմանել CMD_SET_VOLUME 0X06 #սահմանել CMD_SNG_CYCL_PL #սահմանել CMD_SEL_DEV 0X09 #սահմանել CMD_SLEEP_MODE 0X0A #սահմանել CMD_WAKE_UP 0X0B #սահմանել CMD_RESET 0X0C #սահմանել CMD_PLAY 0X0D #define CMD_PAUSE 0X0 #սահմանել CMD_FOLDER_CYCLE 0X17 #սահմանել CMD_SHUFFLE_PLAY 0x18 // #սահմանել CMD_SET_SNGL_CYCL 0X19 // Սահմանել մեկ ցիկլ: #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 ************************ / #սահմանել DEV_TF 0X02 / ************** *********************************************** *****/ int numero; բայթ էստադո; բայթ ազդանշան = 2; բայթ քորոց = 0; բայթ SortNumber = 0; bool կոճակ = 0; void setup () {Serial.begin (9600); mp3. սկիզբ (9600); ուշացում (500); for (pin = 8; pin 13) {pin = 8; } Serial.println ("Varrendo …"); Serial.println (քորոց); // ուշացում (1000); } while (կոճակ! = 1); Serial.println ("Saiu …"); if (button == 1 && (pin-1)! = SortNumber) {sendCommand (0x03, 0, 6); ուշացում (3000); } if (button == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); ուշացում (3000); } // Ստուգեք պատասխանը: if (mp3.available ()) {Serial.println (decodeMP3Answer ()); } ուշացում (100); //Serial.println("Tocando musica … "); } /******************************************** ******************************* / /*Function sendMP3Command. Փնտրեք «c» հրաման և ուղարկեք այն MP3 * / /*Պարամետր ՝ ք. Կոդ ՝ MP3 հրամանի համար, «h» ՝ օգնության համար: *// *Վերադարձ. Անվավեր */ void sendMP3Command (char c) {switch (c) {case '?': Case 'h': Serial.println ("HELP"); Serial.println ("p = Խաղալ"); Serial.println ("P = Դադար"); Serial.println ("> = Հաջորդ"); Serial.println ("': Serial.println (" Հաջորդ "); sendCommand (CMD_NEXT_SONG); sendCommand (CMD_PLAYING_N); // հարցնել, թե քանի ֆայլ է ընդմիջում խաղում; գործի" Հիշաքարտ տեղադրված է: "; ընդմիջում; գործ 0x3D ՝ վերծանված MP3Answer + = " -> Ավարտված նվագարկումը num" + Լար (ansbuf [6], DEC); // sendCommand (CMD_NEXT_SONG); // sendCommand (CMD_PLAYING_N); // հարցնել, թե որ ֆայլն է խաղում ընդմիջում; գործ 0x40: decodedMP3Answer += " -> Սխալ"; ընդմիջում; գործ 0x41: decodedMP3Answer += " -> Տվյալները ճիշտ են հավաքված:"; ընդմիջում; գործ 0x42: ապակոդավորված MP3Answer += " -> Կարգավիճակի նվագարկում." +Լար (ansbuf [6], DEC); ընդմիջում; դեպք 0x48: վերծանված MP3Answer + = " -> Ֆայլերի քանակ." + Լար (ansbuf [6], DEC); ընդմիջում; գործ 0x4C: decodedMP3Answer + = " -> Նվագարկում." + Լար (ansbuf [6], DEC); ընդմիջում; գործ 0x4E: վերծանված MP3Answer + = " -> Թղթապանակի ֆայլերի քանակ." + Լար (ansbuf [6], DEC); ընդմիջում; գործ 0x4F: վերծանված MP3Answer + = " -> Թղթապանակների քանակ` " + Լար (ansbuf [6], DEC); ընդմիջում;} վերադարձնել վերծանված MP3 Պատասխան;} /********************************* ************ ******************************** / /*Գործառույթ. Հրաման ուղարկեք MP3- ին* / /*Պարամետր ՝ բայթ հրաման *// *Պարամետր. բայթ dat1 պարամետր հրամանի համար *// *Պարամետր. բայթ dat2 պարամետր հրամանի համար */ void sendCommand (բայթ հրաման) {sendCommand (հրաման, 0, 0); } void sendCommand (բայթ հրաման, բայթ dat1, բայթ dat2) {հետաձգում (20); Send_buf [0] = 0x7E; // Send_buf [1] = 0xFF; // Send_buf [2] = 0x06; // Len Send_buf [3] = հրաման; // Send_buf [4] = 0x01; // 0x00 ՈՉ, 0x01 արձագանք Send_buf [5] = dat1; // datah Send_buf [6] = dat2; // datal Send_buf [7] = 0xEF; // Serial.print ("Ուղարկում` "); for (uint8_t i = 0; i <8; i ++) {mp3. գրել (Send_buf ); Serial.print (sbyte2hex (Send_buf )); } Serial.println (); } /******************************************** ******************************* / /*Ֆունկցիա ՝ sbyte2hex: Վերադարձնում է բայթ տվյալները HEX ձևաչափով: * / /*Պարամետր.- uint8_t բ. Բայթ `HEX- ին փոխարկելու համար: *// *Վերադարձ ՝ լարային */ լարային sbyte2hex (uint8_t բ) {լարային շեքս; շեքս = "0X"; եթե (b <16) շեքս += "0"; shex += լարային (b, HEX); շեքս += ""; վերադարձ շեքս; } /******************************************** ******************************* / /*Ֆունկցիա ՝ shex2int. Վերադարձնում է int- ը HEX տողից: * / /*Պարամետր ՝ ս. char *s ՝ HEX- ի փոխարկելու համար: * / /*Պարամետր ՝ n. char *s 'երկարությունը: *// *Վերադարձ ՝ int */ int shex2int (char *s, int n) {int r = 0; (int i = 0; i = '0' && s = 'A' && s <= 'F') {r *= 16; r + = (s - 'A') + 10; }} վերադարձ r; } /******************************************** ******************************* / /*Գործառույթ. Վերադարձնում է լարային պատասխան mp3 UART մոդուլից: * / /*Պարամետր.- uint8_t բ. դատարկ * / /*Վերադարձ ՝ լարային: Եթե պատասխանը լավ ձևավորված է, պատասխանը: */ String sanswer (void) {uint8_t i = 0; Լարային mp3answer = ""; // Ստացեք ընդամենը 10 Բայթ մինչ (mp3.հասանելի () && (i <10)) {uint8_t b = mp3.read (); ansbuf = b; i ++; mp3answer += sbyte2hex (բ); } // եթե պատասխանի ձևաչափը ճիշտ է: if ((ansbuf [0] == 0x7E) && (ansbuf [9] == 0xEF)) {վերադարձ mp3answer; } վերադարձ "???:" + mp3answer; }

Նախ, մենք սահմանում ենք ծրագրի բոլոր փոփոխականները և YX5300 մոդուլի մուտքի գրանցամատյանի հասցեները:

#ներառում

#սահմանեք ARDUINO_RX 5 // պետք է միանա Serial MP3 Player մոդուլի TX- ին #սահմանեք ARDUINO_TX 6 // միացեք SoftwareSerial մոդուլի RX- ին (ARDUINO_RX, ARDUINO_TX); ստատիկ int8_t Send_buf [8] = {0}; // Բուֆեր ՝ ուղարկվող հրամանների համար: // ԱՎԵԼԻ ՏԵOCԱԿԱՆ ստատիկ uint8_t ansbuf [10] = {0}; // Պատասխանների բուֆեր: // ԱՎԵԼԻ ՏԵOCԱԿԱՆ Լարային mp3 Պատասխան; // Պատասխան MP3- ից: Լարային պատասխան (անվավեր); Լարային sbyte2hex (uint8_t բ); / ************ Հրամանի բայթ ************************* # #սահմանել CMD_NEXT_SONG 0X01 // Խաղալ հաջորդ երգ. #սահմանեք CMD_PREV_SONG 0X02 // Նվագարկեք նախորդ երգը: #սահմանել CMD_PLAY_W_INDEX 0X03 #սահմանել CMD_VOLUME_UP 0X04 #սահմանել CMD_VOLUME_DOWN 0X05 #սահմանել CMD_SET_VOLUME 0X06 #սահմանել CMD_SNG_CYCL_PL #սահմանել CMD_SEL_DEV 0X09 #սահմանել CMD_SLEEP_MODE 0X0A #սահմանել CMD_WAKE_UP 0X0B #սահմանել CMD_RESET 0X0C #սահմանել CMD_PLAY 0X0D #define CMD_PAUSE 0X0 #սահմանել CMD_FOLDER_CYCLE 0X17 #սահմանել CMD_SHUFFLE_PLAY 0x18 // #սահմանել CMD_SET_SNGL_CYCL 0X19 // Սահմանել մեկ ցիկլ: #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 ************************ / #սահմանել DEV_TF 0X02 / ************** *********************************************** *****/ int numero; բայթ էստադո; բայթ ազդանշան = 2; բայթ քորոց = 0; բայթ SortNumber = 0; bool կոճակ = 0;

Քայլ 8:

Այս գրանցամատյանների հասցեները օգտագործվում են մոդուլի աշխատանքը կարգավորելու համար: Օրինակ, տես ստորև գրանցման այս հասցեն:

#սահմանի CMD_PLAY_W_INDEX 0X03

0x03 հասցեն սահմանվում է CMD_PLAY_W_INDEX անունով: Այն օգտագործվում է երգը իր համարից սկսելու համար, այսինքն ՝ մուտքագրում ես ձայնի համարը և այն կհնչի:

Այս արժեքներով մենք դրանք կօգտագործենք և կկարգավորենք մեր նախագծի աշխատանքը:

Այն բանից հետո, երբ դուք կսահմանեք տարբեր հասցեներ, որոնք կօգտագործվեն, մենք կմտնենք կարգավորման գործառույթը և կկարգավորենք մեր նախագծի կապերն ու սերիական հաղորդակցությունը:

Քայլ 9: The Void Setup () գործառույթը

Հաջորդը, տեսեք դատարկության կարգավորման գործառույթը: Ես կատարեցի կոճակների կապիչների բոլոր կարգավորումները, MP3 մոդուլի սերիական հաղորդակցությունը և MP3 մոդուլում քարտի մոդուլի նախաստորագրումը:

դատարկ կարգավորում ()

{Serial.begin (9600); mp3. սկիզբ (9600); ուշացում (500); for (pin = 8; pin <13; pin ++) {pinMode (pin, INPUT); } sendCommand (CMD_SEL_DEV, 0, DEV_TF); ուշացում (500); }

Ես սկսեցի սերիական հաղորդակցությունը ՝ համակարգչի սերիալի վրա տվյալներ տպելու համար, այնուհետև մենք սկսեցինք սերիական հաղորդակցությունը mp3 օբյեկտի միջոցով:

Serial.begin (9600);

mp3. սկիզբ (9600); ուշացում (500);

Mp3 մոդուլը վերահսկվում է Arduino սերիալի կողմից ստացված հրամանների միջոցով: Այս գործընթացում մենք օգտագործեցինք SoftwareSerial գրադարանը և կրկնօրինակեցինք սերիան Arduino թվային կապում:

Այսպիսով, դուք կկարողանաք օգտագործել Arduino- ն ՝ MP3 մոդուլը վերահսկելու համար ՝ նրան ուղարկված հրամանների միջոցով:

Բացի այդ, մենք կատարեցինք թվային կապերի կազմաձևում և MP3 քարտի մոդուլի նախաստորագրում

for (pin = 8; pin <13; pin ++) {pinMode (pin, INPUT); } sendCommand (CMD_SEL_DEV, 0, DEV_TF); ուշացում (500);

Կազմաձևումը կատարելուց հետո մենք պետք է անցնենք դատարկ հանգույց գործառույթի հիմնական տրամաբանությանը:

Քայլ 10. Հիմնական գործառույթի դատարկ օղակը ()

Կոդը շատ պարզ է, և ամբողջ տրամաբանական կառուցվածքը ներկայացված է ստորև: Հետագայում ես ձեզ կբացատրեմ հիմնական գործառույթի ամբողջական տրամաբանությունը:

դատարկ շրջան ()

{քորոց = 8; randomSeed (analogRead (A0)); numero = պատահական (8, 12); Տեսակավորում = թիվ; թվեր = թվերո - 7; Serial.println (numero); sendCommand (0x03, 0, numero); ուշացում (1000); անել {կոճակ = digitalRead (քորոց); Serial.println (կոճակ); քորոց ++; if (pin> 13) {pin = 8; } Serial.println ("Varrendo …"); Serial.println (քորոց); // ուշացում (1000); } while (կոճակ! = 1); Serial.println ("Saiu …"); if (button == 1 && (pin-1)! = SortNumber) {sendCommand (0x03, 0, 6); ուշացում (3000); } if (button == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); ուշացում (3000); } // Ստուգեք պատասխանը: if (mp3.available ()) {Serial.println (decodeMP3Answer ()); } ուշացում (100); //Serial.println("Tocando musica … "); }

Օղակի գործառույթի ցիկլի յուրաքանչյուր սկզբում մենք կստեղծենք նոր արժեք 8 -ից 12 -ի միջև ՝ ձայնավորի ձայն ստեղծելու համար: 8 -ից 12 արժեքը վերաբերում է ձայնավորի թվային փինին:

Ստորև բերված է պատահական արժեք ստեղծելու ծածկագիրը:

քորոց = 8;

randomSeed (analogRead (A0)); numero = պատահական (8, 12); Տեսակավորում = թիվ;

Բացի այդ, մենք 8 -ից 12 -ը հանած գումարից հանում ենք 7 -ը: Սա թույլ կտա մեզ մատնանշել հիշողության քարտի վրա ձայնագրված երգերից 1 -ից 5 -ի դիրքերը:

թվեր = թվերո - 7;

Դրանից հետո ես վերարտադրեցի ներքևի գծի վրա գծված ձայնավորի ձայնը:

sendCommand (0x03, 0, numero);

ուշացում (1000);

Այժմ եկել է կարևոր ժամանակը. Այն պահը, երբ մենք պատրաստվում ենք կարդալ երեխայի սեղմած կոճակը: Կոդի հատվածը ներկայացված է ստորև:

անել

{կոճակ = digitalRead (քորոց); Serial.println (կոճակ); քորոց ++; if (pin> 13) {pin = 8; } Serial.println ("Varrendo …"); Serial.println (քորոց); // ուշացում (1000); } while (կոճակ! = 1);

Այս հանգույցը կկատարվի այնքան ժամանակ, քանի դեռ օգտվողը չի սեղմել կոճակները: Օղակը թույլ է տալիս սկանավորել թվային 5 կապում, և այն պահին, երբ երեխան սեղմում է կոճակներից մեկը, այն դուրս կգա օղակից և կստուգի, արդյոք երեխան ճիշտ է արձագանքել:

Դուք կկատարեք ստուգումը ՝ օգտագործելով ստորև նշված ծածկագիրը:

եթե (կոճակ == 1 && (փին -1)! = Տեսակավորման համար)

{sendCommand (0x03, 0, 6); ուշացում (3000); } if (button == 1 && (pin-1) == SortNumber) {sendCommand (0x03, 0, 7); ուշացում (3000); }

Առաջին պայմանը կկատարվի, երբ օգտվողը սխալվի, քանի որ կոճակը սեղմված էր, և քորոցի հարուցված արժեքը տարբերվում էր գծված քորոցից (SortNumber):

Այս պահին դուք պետք է կատարեք ստորև բերված հրամանը:

sendCommand (0x03, 0, 6);

ուշացում (3000);

Այս հրամանը օգտագործվում է պատասխանի սխալ տոնը առաջացնելու համար: Ի վերջո, մենք ունենք երկրորդ պայմանը, որը կօգտագործվի երեխայի ճիշտ լինելու ստուգման համար:

եթե (կոճակ == 1 && (փին -1) == Տեսակավորել)

{sendCommand (0x03, 0, 7); ուշացում (3000); }

Քայլ 11:

Պատկեր
Պատկեր

Եթե կոճակը սեղմված է, և սեղմված թվային քորոցը նույնն է, ինչ գծված քորոցը, համակարգը կհանգեցնի ճիշտ պատասխանի ձայնի:

Ինչպես բացատրում եմ ձեզ, այս ծածկագիրը շատ պարզ է և կօգնի ցանկացած երեխայի զարգացնել ձայնավորների մասին գիտելիքները Arduino- ի հետ խաղի միջոցով:

Վերևի նկարում ձայնային արկղը կատարում է MP3 մոդուլի YX5300 SD քարտում պահված երգը:

Քայլ 12: Եզրակացություն

Դասարանական կրթությունը պետք է անընդհատ փոխվի, և Arduino- ն կարող է հիանալի դաշնակից լինել զվարճալի առաջադրանքներ ստեղծելու գործում:

Այս նախագծի միջոցով հնարավոր դարձավ զարգացնել մի պարզ գործունեություն, որը կարող է զարգացնել երեխաների հմտությունները յուրաքանչյուր ձայնավորի ձայնի և ուղղագրության իմացության միջոցով:

Ի տարբերություն դասավանդման ավանդական մեթոդների, երեխաները կսովորեն դասարանում խաղերի և էլեկտրոնիկայի միջոցով:

Քայլ 13: cknowանաչում

Այս նախագիծը մշակվել է JLCPCB ընկերության աջակցության և խրախուսման շնորհիվ: Նրանք խրախուսեցին կրթությունը և մեզ հրավիրեցին զարգացնել դասարանում երեխաներին ուսուցանելու ձայնավորների խաղը:

Եթե ցանկանում եք գնել Ձայնավորների խաղի էլեկտրոնային թիթեղները, կարող եք մուտք գործել այս հղում և JLCPCB- ում գնել 2 միավոր 2 դոլարով:

Խորհուրդ ենք տալիս: