ዝርዝር ሁኔታ:

አናባቢ ጨዋታ ከ Arduino እና YX5300 MP3 ሞዱል ካታሌክስ ጋር - 13 ደረጃዎች
አናባቢ ጨዋታ ከ Arduino እና YX5300 MP3 ሞዱል ካታሌክስ ጋር - 13 ደረጃዎች

ቪዲዮ: አናባቢ ጨዋታ ከ Arduino እና YX5300 MP3 ሞዱል ካታሌክስ ጋር - 13 ደረጃዎች

ቪዲዮ: አናባቢ ጨዋታ ከ Arduino እና YX5300 MP3 ሞዱል ካታሌክስ ጋር - 13 ደረጃዎች
ቪዲዮ: ሀ እስከ መ አማርኛ ፊደላት ከመልመጃ ጋር ክፍል 3 - ሀሁ - Amharic Alphabet with Quiz Part 3 - Amaregna Fidel 2020 2024, ህዳር
Anonim
አናባቢ ጨዋታ ከ Arduino እና YX5300 MP3 Module Catalex ጋር
አናባቢ ጨዋታ ከ Arduino እና YX5300 MP3 Module Catalex ጋር

ይህንን ጥያቄ ማንበብ ይችላሉ? ይህ እንግዳ ነው! ይህን ጥያቄ ያነሳሁት ሆን ብዬ ነው። ይህንን ጽሑፍ ማንበብ ከቻሉ ሙሉ ፊደሉን ስለሚያውቁ እና በእርግጥ ስለ ሁሉም አናባቢዎች ስለ ተማሩ ነው።

አናባቢዎች በሁሉም ቃላት ውስጥ ይገኛሉ። ከእያንዳንዳቸው ማምለጥ አይቻልም። አሁን አንድ ጥያቄ ልጠይቅህ። የልጅነት ትምህርትዎ አስደሳች እና የቴክኖሎጂ ሀብቶችን ያካተተ ነበር?

እርግጠኛ ነኝ የመማሪያ ሀብቶች ጥቂት ስለነበሩ አናባቢዎችን እና ፊደላትን ለመማር ባህላዊ ዘዴዎችን ተጠቅመዋል።

ለመሆኑ አናባቢዎችን ለመማር አንዳንድ የቴክኖሎጂ ሀብቶችን መጠቀም ይቻላል?

በዚህ ጽሑፍ ውስጥ ተማሪዎችዎን እና ልጆችዎን አናባቢዎችን በጨዋታ እንዴት እንደሚያስተምሩ አስተምራችኋለሁ።

ልጅዎ/ተማሪዎ የደብዳቤውን ድምጽ የሚሰማበት እና ትክክለኛውን ፊደል ለማመልከት አንድ አዝራርን መጫን ያለበት በድምፅ ስርዓት እንዴት መፍጠር እንደሚችሉ አስተምራችኋለሁ።

ስለሆነም እነሱ እየተጫወቱ ይማራሉ እናም ሁል ጊዜ ለማጥናት ይነሳሳሉ።

አሁን ፣ የራስዎን ጨዋታ እንዲፈጥሩ ፣ አናባቢዎችን ለልጆች እንዲያስተምሩ የደረጃ በደረጃ ሂደቱን አሳያችኋለሁ።

አቅርቦቶች

JLCPCB የታተመ የወረዳ ቦርድ

አርዱዲኖ ኡኖ

Ushሽቡተን መቀየሪያ

10kR ተከላካይ

ወንድ ራስጌ 2 ፣ 54 ሚሜ 1x7

ደረጃ 1: ከአርዲኖ ጋር የአናባቢዎችን ጨዋታ ማዳበር

አናባቢዎችን ጨዋታ ከአርዱዲኖ ጋር ማዳበር
አናባቢዎችን ጨዋታ ከአርዱዲኖ ጋር ማዳበር

የጨዋታው ልብ የአናባቢዎች JLCPCB የታተመ የወረዳ ቦርድ ነው። ይህንን አገናኝ መድረስ እና የፕሮጀክቱን ፋይሎች ማውረድ ይችላሉ። 5 አዝራሮች አሉት። አናባቢን ለመወከል እና ከእርስዎ አርዱinoኖ ጋር ለማገናኘት እያንዳንዱን ቁልፍ ይጠቀማሉ።

የታተመው የወረዳ ሰሌዳ በምስል 1 ውስጥ ይታያል።

ደረጃ 2

ምስል
ምስል

በዚህ የፒ.ሲ.ቢ ፕሮጀክት ፣ ከአርዲኖ ጋር ማገናኘት እና ጨዋታዎን መፍጠር ይችላሉ። በመቀጠል በፕሮቶቦርድዎ ላይ ፕሮጀክቱን እንዲሰበስቡ ወይም እንዲገነቡ የኤሌክትሮኒክ መርሃግብር እሰጥዎታለሁ።

ደረጃ 3

ከዚህ ንድፍ አውጪ ፣ የኤሌክትሮኒክ ሰሌዳውን አቀማመጥ እናዘጋጃለን። በስእል 2 ላይ ይታያል እና ፋይሎቹን ማውረድ እና ፕሮጀክትዎን መስራት ይችላሉ።

ከአርዱዲኖ 5 ፒኖችን ይምረጡ እና በቦርዱ ላይ ያሉትን መዝለያዎች ከአርዱዲኖ ጋር ያገናኙ። ወይም ካልሆነ ፣ የሚከተለውን የኤሌክትሮኒክ ዲያግራም መሰብሰብ ይችላሉ።

ደረጃ 4 የፕሮጀክቱ ሀሳብ

የፕሮጀክቱ ሀሳብ
የፕሮጀክቱ ሀሳብ

የ MP3 ድምጽ ስርዓትን ከአርዱዲኖ ጋር እንዴት ማሰባሰብ እንደሚችሉ አስተምራችኋለሁ። ይህ ሥርዓት ደብዳቤውን የሚናገረውን ድምጽ የማባዛት ኃላፊነት አለበት። የእያንዳንዱ ፊደል ድምጽ ከ 1 እስከ 5 ያለውን እሴት በመጠቀም ይሳላል ፣ 1 ደግሞ ሀ እና 5 ን ይወክላል።

ስለዚህ ልጁ ድምፁን ሲሰማ የቁልፍ ሰሌዳውን ማየት ፣ የአናባቢውን የፊደል አጻጻፍ ማወቅ እና ትክክለኛውን ቁልፍ መጫን አለበት።

ካልተሳካ ስርዓቱ ቀይ LED ን 3 ጊዜ ያበራል። ያለበለዚያ ስርዓቱ ለ 5 ሰከንዶች ያህል ጫጫታ ያነቃቃል እና አዲስ አናባቢ ይሳሉ።

ይህንን ለማድረግ የሚከተለውን ወረዳ መሰብሰብ አለብዎት።

በዚህ ወረዳ ውስጥ ፣ የ MP3 ሞዱሉን እና አናዱ ቦርድ ላይ በአርዱዲኖ ላይ ያገናኙታል። የብሉቱዝ ሞጁል የካታሌክስ MP3 ሞዱልን ለመወከል ያገለግል ነበር።

አርዱዲኖ 5 ቱን ቁጥሮች የመደርደር እና ከዚያም የተቀረጸውን አናባቢ ለማግበር ትዕዛዙን ይልካል።

ደረጃ 5

ምስል
ምስል

ከዚያ በኋላ ፣ ከላይ በስዕሉ ላይ እንደሚታየው ልጁ እስኪሰማ እና አንድ ቁልፍ እስኪጫን ድረስ እንጠብቃለን።

ከላይ ያለው እያንዳንዱ አዝራር የፊደሉን አናባቢ ይወክላል። በመቀጠል ፣ ለዚህ ፕሮጀክት የፕሮግራም አመክንዮ እንዴት እንደሚገነቡ አሳያችኋለሁ።

ደረጃ 6 - የጨዋታውን የፕሮግራም አመክንዮ መገንባት

የጨዋታውን የፕሮግራም አመክንዮ መገንባት
የጨዋታውን የፕሮግራም አመክንዮ መገንባት

የአናባቢ ጨዋታ ስርዓት በ YX5300 ሞዱል አሠራር ላይ የተመሠረተ ነው። ይህ ሞጁል አንዳንድ ተግባራት አሉት ፣ ሆኖም ፣ በ YX5300 ሞዱል ዋና ተግባራት በኩል የጨዋታውን የሥራ መዋቅር በማቅረብ ላይ እናተኩራለን።

ከዚህ በታች ሁሉንም የፕሮጀክቱን የፕሮግራም አመክንዮ እሰጥዎታለሁ።

ደረጃ 7

በሚከተለው ውስጥ ይህንን አስደሳች ጨዋታ ለልጆች አመክንዮ ለመገንባት ደረጃውን በደረጃ እገልጻለሁ።

#ያካትቱ

#ጥራት ARDUINO_RX 5 // ከተከታታይ MP3 ማጫወቻ ሞጁል ከ TX ጋር መገናኘት አለበት #define ARDUINO_TX 6 // ከ RX ሞዱል ሶፍትዌርSerial mp3 (ARDUINO_RX ፣ ARDUINO_TX) ጋር መገናኘት አለበት ፤ የማይንቀሳቀስ int8_t Send_buf [8] = {0}; // Buffer for Send ትዕዛዞችን። // የተሻለው አካባቢያዊ የማይንቀሳቀስ uint8_t ansbuf [10] = {0}; // ለመልሶቹ ያዝ። // የተሻለ የአካባቢያዊ ሕብረቁምፊ 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_PLAY 0X08 // ነጠላ ዑደት #መግለፅ CMD_SEL_SELE_DEV 0X09 #መግለፅ CMD_SLEEP_MODE 0X0A #መግለፅ CMD_WAKE_UP 0X0B #ዲኤምኤምዲ_RESET 0X0C #መግለፅ CMD_PLAY 0X0D #መግለፅ CMD_PAUSE 0X0E_DE_FE_FE_FEFEE_FE_FEFEFEFEFEFEFEEFEEFEEFE #ጥራት 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 / ********* *** ኦፕቲንስ ************************** / #ዲፊን DEV_TF 0X02 / ************** *************************************************** *****/ int numero; ባይት ኢስታዶ; ባይት buzzer = 2; ባይት ፒን = 0; ባይት SortNumber = 0; bool አዝራር = 0; ባዶነት ማዋቀር () {Serial.begin (9600); mp3.begin (9600); መዘግየት (500); ለ (ፒን = 8 ፤ ፒን 13) {pin = 8; } Serial.println ("Varrendo…"); Serial.println (ፒን); // መዘግየት (1000); } እያለ (አዝራር! = 1); Serial.println ("ሳይዩ …"); ከሆነ (አዝራር == 1 && (ፒን -1)! = SortNumber) {sendCommand (0x03, 0, 6); መዘግየት (3000); } ከሆነ (አዝራር == 1 && (ፒን -1) == SortNumber) {sendCommand (0x03, 0, 7) ፤ መዘግየት (3000); } // መልሱን ይፈትሹ። ከሆነ (mp3.available ()) {Serial.println (decodeMP3Answer ()); } መዘግየት (100); //Serial.println("Tocando musica… "); } /************************************************ ******************************* / /*ተግባር sendMP3Comand: የ 'c' ትዕዛዝ ፈልገው ወደ MP3 ይላኩት * / /*መለኪያ: ሐ. ለ MP3 ትዕዛዝ ኮድ ፣ ለእርዳታ ‹ሸ›። *// *መመለስ: ባዶነት// ባዶ ባዶ sendMP3Command (char c) {switch (c) {case '?': Case 'h': Serial.println ("HELP"); Serial.println ("p = Play"); Serial.println ("P = ለአፍታ አቁም"); Serial.println ("> = ቀጣይ"); ተከታታይ.: decodedMP3Answer + = " -> የተጠናቀቀ የጨዋታ ቁጥር" + ሕብረቁምፊ (ansbuf [6] ፣ DEC) ፤ // sendCommand (CMD_NEXT_SONG); // sendCommand (CMD_PLAYING_N) ፤ // የፋይሉን ቁጥር እረፍት በመጫወት ላይ መሆኑን ይጠይቁ ፤ ጉዳይ 0x40: decodedMP3Answer += " -> ስህተት" ፤ ሰበር ፤ ጉዳይ 0x41: decodedMP3Answer += " -> ውሂብ በትክክል ተመልሷል።" DEC); እረፍት ፤ መያዣ 0x48: ዲኮድ MP3Answer + = " -> የፋይል ቆጠራ -" + ሕብረቁምፊ (አንሱፍ [6] ፣ DEC) ፤ ዕረፍት ፤ ጉዳይ 0x4C: decodedMP3Answer + = " -> መጫወት ፦" + ሕብረቁምፊ (መልሱ [6] ፣ DEC) ፤ ዕረፍት ፤ መያዣ 0x4E ፦ ዲኮድ MP3Answer + = " -> የአቃፊ ፋይል ቆጠራ -" + ሕብረቁምፊ (ansbuf [6] ፣ DEC) ፤ ሰበር ፤ ጉዳይ 0x4F: decodedMP3Answer + = " -> የአቃፊ ብዛት ፦" + ሕብረቁምፊ (ansbuf) [6] ፣ DEC) ፤ ዕረፍት; ************ ********************************* / /*ተግባር ትዕዛዙን ወደ MP3* / /*መለኪያ ላክ ትዕዛዝ *// *መለኪያ - ለትእዛዙ ባይት dat1 ልኬት *// *ልኬት - ባይት dat2 መለኪያ ለትእዛዙ */ ባዶ ባዶ ላክCommand (ባይት ትእዛዝ) {sendCommand (ትዕዛዝ ፣ 0 ፣ 0) ፤ } ባዶ ተልኳል ትእዛዝ (ባይት ትእዛዝ ፣ ባይት dat1 ፣ ባይት dat2) {መዘግየት (20); ላክ_ቡፍ [0] = 0x7E; // Send_buf [1] = 0xFF; // Send_buf [2] = 0x06; // ሌን 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 ("መላክ:"); ለ (uint8_t i = 0; i <8; i ++) {mp3.write (Send_buf ); Serial.print (sbyte2hex (Send_buf ))); } Serial.println (); } /************************************************ ******************************** / /*ተግባር: sbyte2hex. በ HEX ቅርጸት የባይት መረጃን ይመልሳል። * / /*መለኪያ- uint8_t ለ. ወደ HEX ለመለወጥ ባይት። *// *መመለስ ፦ ሕብረቁምፊ */ ሕብረቁምፊ sbyte2hex (uint8_t ለ) {ሕብረቁምፊ shex; shex = "0X"; ከሆነ (ለ <16) shex += "0"; shex += ሕብረቁምፊ (ለ ፣ ሄክስ); shex += ""; ተመለስ shex; } /************************************************ ******************************** / /*ተግባር: shex2int. ከኤችአይኤክስ ሕብረቁምፊ አንድ int ይመልሳል። * / /*መለኪያ: ኤስ. ወደ HEX ለመለወጥ char *s። * / /*መለኪያ: n. የቻር *ርዝመት። *// *መመለስ ፦ 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 ለ. ባዶነት * / /*መመለስ: ሕብረቁምፊ። መልሱ በደንብ ከተቀረፀ መልስ። */ ሕብረቁምፊ መልስ (ባዶ) {uint8_t i = 0; ሕብረቁምፊ mp3answer = ""; // 10 ባይት ብቻ ያግኙ (mp3.available () && (i <10)) {uint8_t b = mp3.read (); አንቡፍ = ለ; i ++; mp3answer += sbyte2hex (ለ); } // የመልስ ቅርጸቱ ትክክል ከሆነ። ከሆነ ((ansbuf [0] == 0x7E) && (ansbuf [9] == 0xEF)) {መመለስ mp3answer; } መመለስ "???:" + mp3answer; }

በመጀመሪያ ፣ ሁሉንም የፕሮግራም ተለዋዋጮች እና የ YX5300 ሞዱል የመዳረሻ መመዝገቢያ አድራሻዎችን እንገልፃለን።

#ያካትቱ

#ጥራት ARDUINO_RX 5 // ከተከታታይ MP3 ማጫወቻ ሞጁል ከ TX ጋር መገናኘት አለበት #define ARDUINO_TX 6 // ከ RX ሞዱል ሶፍትዌርSerial mp3 (ARDUINO_RX ፣ ARDUINO_TX) ጋር መገናኘት አለበት ፤ የማይንቀሳቀስ int8_t Send_buf [8] = {0}; // Buffer for Send ትዕዛዞችን። // የተሻለው አካባቢያዊ የማይንቀሳቀስ uint8_t ansbuf [10] = {0}; // ለመልሶቹ ያዝ። // የተሻለ የአካባቢያዊ ሕብረቁምፊ 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_PLAY 0X08 // ነጠላ ዑደት #መግለፅ CMD_SEL_SELE_DEV 0X09 #መግለፅ CMD_SLEEP_MODE 0X0A #መግለፅ CMD_WAKE_UP 0X0B #ዲኤምኤምዲ_RESET 0X0C #መግለፅ CMD_PLAY 0X0D #መግለፅ CMD_PAUSE 0X0E_DE_FE_FE_FEFEE_FE_FEFEFEFEFEFEFEEFEEFEEFE #ጥራት 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 / ********* *** ኦፕቲንስ ************************** / #ዲፊን DEV_TF 0X02 / ************** *************************************************** *****/ int numero; ባይት ኢስታዶ; ባይት buzzer = 2; ባይት ፒን = 0; ባይት SortNumber = 0; bool አዝራር = 0;

ደረጃ 8

እነዚህ የመመዝገቢያ አድራሻዎች የሞዱሉን አሠራር ለማዋቀር ያገለግላሉ። ለምሳሌ ፣ ይህንን የምዝገባ አድራሻ ከዚህ በታች ይመልከቱ።

#CMD_PLAY_W_INDEX 0X03 ን ይግለጹ

አድራሻ 0x03 በ CMD_PLAY_W_INDEX ስም ይገለጻል። ዘፈኑን ከቁጥሩ ለማነቃቃት የሚያገለግል ነው ፣ ማለትም ፣ የድምፁን ቁጥር ያስገቡ እና ይጫወታል።

እኛ የምንጠቀምባቸው እና የፕሮጀክታችንን አሠራር የምናዋቅረው በእነዚህ እሴቶች ነው።

ጥቅም ላይ የሚውሉትን የተለያዩ አድራሻዎች ከገለጹ በኋላ ወደ የማዋቀሪያ ተግባር እንገባለን እና ለፕሮጀክታችን ፒኖችን እና ተከታታይ ግንኙነቶችን እናዋቅራለን።

ደረጃ 9 - ባዶነት ማዋቀር () ተግባር

በመቀጠል ባዶውን የማዋቀር ተግባር ይመልከቱ። ሁሉንም የአዝራር ቁልፎች ቅንብሮችን ፣ የ MP3 ሞጁሉን ተከታታይ ግንኙነት እና በ MP3 ውስጥ የካርድ ሞዱሉን ማስጀመር አደረግሁ።

ባዶነት ማዋቀር ()

{Serial.begin (9600); mp3.begin (9600); መዘግየት (500); ለ (ፒን = 8 ፤ ፒን <13 ፤ ፒን ++) {pinMode (pin ፣ INPUT) ፤ } ትዕዛዝ ላክ (CMD_SEL_DEV ፣ 0 ፣ DEV_TF) ፤ መዘግየት (500); }

በኮምፒተርው ተከታታይ ላይ መረጃ ለማተም ተከታታይ ግንኙነቱን ጀመርኩ እና ከዚያ በ mp3 ነገር በኩል ተከታታይ ግንኙነቱን ጀመርን።

Serial.begin (9600);

mp3.begin (9600); መዘግየት (500);

የ mp3 ሞዱል በአርዱዲኖ ተከታታይ በተረከቡት ትዕዛዞች ቁጥጥር ይደረግበታል። በዚህ ሂደት ውስጥ የሶፍትዌር ሰርቪስ ቤተ -መጽሐፍትን ተጠቀምን እና በአርዱዲኖ ዲጂታል ፒኖች ላይ ተከታታይን አስመስለናል።

ስለዚህ ፣ በተላኩ ትዕዛዞች በኩል የ MP3 ሞዱሉን ለመቆጣጠር አርዱዲኖን መጠቀም ይችላሉ።

በተጨማሪም ፣ የዲጂታል ፒኖችን ውቅር እና የ MP3 ካርድ ሞዱሉን ጅምር አደረግን

ለ (ፒን = 8 ፤ ፒን <13 ፤ ፒን ++) {pinMode (pin ፣ INPUT) ፤ } ትዕዛዝ ላክ (CMD_SEL_DEV ፣ 0 ፣ DEV_TF) ፤ መዘግየት (500);

ውቅረቱን ከሠራን በኋላ ባዶ በሆነ የሉፕ ተግባር ውስጥ ወደ ዋናው አመክንዮ መሄድ አለብን።

ደረጃ 10 ዋናው ተግባር ባዶ ዙር ()

ኮዱ በጣም ቀላል እና ጠቅላላው አመክንዮአዊ መዋቅር ከዚህ በታች ቀርቧል። በሚከተለው ውስጥ የዋናውን ተግባር ሙሉ አመክንዮ እገልጻለሁ።

ባዶነት loop ()

{ፒን = 8; randomSeed (analogRead (A0)); ቁጥር = በዘፈቀደ (8 ፣ 12); SortNumber = ቁጥር; ቁጥር = ቁጥር - 7; Serial.println (ቁጥር); ላክ ትዕዛዝ (0x03 ፣ 0 ፣ አሃዝ); መዘግየት (1000); አድርግ {አዝራር = digitalRead (ፒን); Serial.println (አዝራር); ፒን ++; ከሆነ (ሚስማር> 13) {pin = 8; } Serial.println ("Varrendo…"); Serial.println (ፒን); // መዘግየት (1000); } እያለ (አዝራር! = 1); Serial.println ("ሳይዩ …"); ከሆነ (አዝራር == 1 && (ፒን -1)! = SortNumber) {sendCommand (0x03, 0, 6); መዘግየት (3000); } ከሆነ (አዝራር == 1 && (ፒን -1) == SortNumber) {sendCommand (0x03, 0, 7) ፤ መዘግየት (3000); } // መልሱን ይፈትሹ። ከሆነ (mp3.available ()) {Serial.println (decodeMP3Answer ()); } መዘግየት (100); //Serial.println("Tocando musica… "); }

በእያንዳንዱ የሉፕ ተግባር ዑደት መጀመሪያ ላይ የአናባቢ ድምጽን ለማመንጨት በ 8 እና 12 መካከል አዲስ እሴት እናመነጫለን። ከ 8 እስከ 12 ያለው እሴት የአናባቢውን ዲጂታል ፒን ያመለክታል።

የዘፈቀደ እሴትን ለማመንጨት ኮዱ ከዚህ በታች ይታያል።

ፒን = 8;

randomSeed (analogRead (A0)); ቁጥር = በዘፈቀደ (8 ፣ 12); SortNumber = ቁጥር;

በተጨማሪም ፣ በ 8 እና በ 12 መካከል ከተቀመጠው መጠን 7 ን እንቀንሳለን ፣ ይህ በማስታወሻ ካርድ ላይ ከተመዘገቡት ዘፈኖች ከ 1 እስከ 5 ያለውን ቦታ እንድንጠቁም ያስችለናል።

ቁጥር = ቁጥር - 7;

ከዚያ በኋላ ከዚህ በታች ባለው መስመር ላይ የተቀረፀውን አናባቢ ድምጽ እንደገና አበዛለሁ።

ላክ ትዕዛዝ (0x03 ፣ 0 ፣ አሃዝ);

መዘግየት (1000);

አሁን አስፈላጊው ጊዜ መጥቷል -በልጁ የተጫነውን ቁልፍ የምናነብበት ቅጽበት። የኮዱ ክፍል ከዚህ በታች ቀርቧል።

መ ስ ራ ት

{button = digitalRead (ፒን); Serial.println (አዝራር); ፒን ++; ከሆነ (ሚስማር> 13) {pin = 8; } Serial.println ("Varrendo…"); Serial.println (ፒን); // መዘግየት (1000); } እያለ (አዝራር! = 1);

ተጠቃሚው ቁልፎቹን እስኪጫን ድረስ ይህ ዑደት ይፈጸማል። ቀለበቱ 5 ዲጂታል ፒኖችን እንዲቃኙ ያስችልዎታል እና ልጁ አንዱን አዝራሮች በተጫነበት ቅጽበት ከሉፕው ወጥቶ ልጁ በትክክል ምላሽ እንደሰጠ ይፈትሻል።

ከዚህ በታች ያለውን ኮድ በመጠቀም ማረጋገጫውን ያደርጋሉ።

ከሆነ (አዝራር == 1 && (ፒን -1)! = ደርድር ቁጥር)

{sendCommand (0x03, 0, 6); መዘግየት (3000); } ከሆነ (አዝራር == 1 && (ፒን -1) == SortNumber) {sendCommand (0x03, 0, 7) ፤ መዘግየት (3000); }

አንድ አዝራር ተጭኖ እና የፒን ተቀስቅሶ እሴት ከተሳለው ፒን (SortNumber) የተለየ በመሆኑ ተጠቃሚው ስህተት ሲሠራ የመጀመሪያው ሁኔታ ይፈጸማል።

በዚህ ጊዜ ከዚህ በታች ያለውን ትዕዛዝ መፈጸም አለብዎት።

ላክ ትዕዛዝ (0x03, 0, 6);

መዘግየት (3000);

ይህ ትእዛዝ የተሳሳተ የምላሽ ቃና ለመቀስቀስ ያገለግላል። በመጨረሻም ፣ ልጁ ትክክል መሆኑን ለመመርመር የሚያገለግል ሁለተኛው ሁኔታ አለን።

ከሆነ (አዝራር == 1 && (ፒን -1) == ደርድር ቁጥር)

{sendCommand (0x03, 0, 7); መዘግየት (3000); }

ደረጃ 11

ምስል
ምስል

አንድ አዝራር ተጭኖ ከሆነ እና የተጫነው ዲጂታል ፒን ከተሳለው ፒን ጋር ተመሳሳይ ከሆነ ስርዓቱ ትክክለኛውን የመልስ ድምጽ ያነሳሳል።

እኔ እንደማብራራዎት ፣ ይህ ኮድ በጣም ቀላል እና ማንኛውም ልጅ ከአርዱዲኖ ጋር ባለው ጨዋታ የአናባቢዎችን ዕውቀት እንዲያዳብር ይረዳል።

ከድምጽ ሳጥኑ በላይ ባለው ስእል በ MP3 ሞዱል YX5300 ኤስዲ ካርድ ውስጥ የተከማቸ ዘፈኑን እያከናወነ ነው።

ደረጃ 12 መደምደሚያ

የመማሪያ ክፍል ትምህርት ያለማቋረጥ መለወጥ አለበት እና አርዱዲኖ አስደሳች ተግባሮችን በመፍጠር ረገድ ታላቅ አጋር ሊሆን ይችላል።

በዚህ ፕሮጀክት አማካኝነት የእያንዳንዱን አናባቢ ድምጽ እና የፊደል አጻጻፍ በማወቅ የልጆችን ክህሎቶች ሊያዳብር የሚችል ቀላል እንቅስቃሴ ማዳበር ተችሏል።

ከተለምዷዊ የማስተማሪያ ዘዴዎች በተለየ ፣ ልጆች በጨዋታዎች እና በኤሌክትሮኒክስ አማካኝነት በክፍል መዝናኛ ይማራሉ።

ደረጃ 13 ዕውቅና

ይህ ፕሮጀክት የተገነባው በኩባንያው JLCPCB ድጋፍ እና ማበረታቻ ምክንያት ነው። ትምህርትን ያበረታቱ እና በክፍል ውስጥ ልጆችን ለማስተማር የአናባቢዎችን ጨዋታ እንድናሳድግ ጋበዙን።

የአናባቢዎች ጨዋታ የኤሌክትሮኒክስ ሰሌዳዎችን መግዛት ከፈለጉ ይህንን አገናኝ ማግኘት እና JLCPCB ላይ 10 ክፍሎችን በ 2 ዶላር መግዛት ይችላሉ።

የሚመከር: