久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 6716|回復: 21
打印 上一主題 下一主題
收起左側

【Arduino】108種傳感器模塊系列實驗(126)---JQ6500語音模塊

[復制鏈接]
跳轉到指定樓層
樓主
37款傳感器與模塊的提法,在網絡上廣泛流傳,其實Arduino能夠兼容的傳感器模塊肯定是不止37種的。鑒于本人手頭積累了一些傳感器和模塊,依照實踐出真知(一定要動手做)的理念,以學習和交流為目的,這里準備逐一動手試試做實驗,不管成功與否,都會記錄下來---小小的進步或是搞不定的問題,希望能夠拋磚引玉。

【Arduino】108種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
實驗一百二十六:JQ6500語音模塊 MP3模塊 MCU串口控制播報 一對一5路控制 音樂IC







分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:513258 發表于 2019-9-26 14:00 | 只看該作者

JQ6500
是一個提供串口的MP3芯片,完美的集成了MP3、WMV的硬解碼。同時軟件支持TF卡驅動,支持電腦直接更新spi flash的內容,支持FAT16、FAT32文件系統。通過簡單的串口指令即可完成播放指定的音樂,以及如何播放音樂等功能,無需繁瑣的底層操作,使用方便,穩定可靠是此款產品的最大特點。另外該芯片也是深度定制的產品,專為固定語音播放領域開發的低成本解決方案。

回復

使用道具 舉報

板凳
ID:513258 發表于 2019-9-26 15:34 | 只看該作者
模塊功能
1、支持采樣率(KHz):8/11.025/12/16/22.05/24/32/44.1/48
2、24 位 DAC 輸出,動態范圍支持 90dB,信噪比支持 85dB
3、完全支持 FAT16、FAT32 文件系統,最大支持 32G 的 TF 卡,支持 32G 的 U 盤、64M 字節的NORFLASH
4、多種控制模式,串口模式、AD 按鍵控制模式
5、廣播語插播功能,可以暫停正在播放的背景音樂
6、音頻數據按文件夾排序,最多支持 100 個文件夾,每隔文件夾可以分配 1000 首歌曲
7、30 級音量可調,10 級 EQ 可調
8、可以外掛 spi flash,連接電腦可以顯示 spi flash 的盤符進行更新內容
9、可以通過單片機串口進行控制播放指定的音樂
10、在按鍵模式下,可以進行播放模式選擇:脈沖可重復、脈沖不可重復、電平非保持可循環、電平保持可循環。




回復

使用道具 舉報

地板
ID:513258 發表于 2019-9-26 15:40 | 只看該作者


模塊應用
1、 車載導航語音播報
2、 公路運輸稽查、收費站語音提示;
3、 火車站、汽車站安全檢查語音提示;
4、 電力、通信、金融營業廳語音提示;
5、 車輛進、出通道驗證語音提示;
6、 公安邊防檢查通道語音提示;
7、 多路語音告警或設備操作引導語音;
8、 電動觀光車安全行駛語音告示;
9、 機電設備故障自動報警;
10、消防語音報警提示;
11、自動廣播設備,定時播報。

回復

使用道具 舉報

5#
ID:513258 發表于 2019-9-26 16:09 | 只看該作者

回復

使用道具 舉報

6#
ID:513258 發表于 2019-9-26 16:30 | 只看該作者

回復

使用道具 舉報

7#
ID:513258 發表于 2019-9-26 16:32 | 只看該作者

回復

使用道具 舉報

8#
ID:513258 發表于 2019-9-26 16:33 | 只看該作者

回復

使用道具 舉報

9#
ID:513258 發表于 2019-9-26 16:34 | 只看該作者

回復

使用道具 舉報

10#
ID:513258 發表于 2019-9-26 16:35 | 只看該作者

回復

使用道具 舉報

11#
ID:513258 發表于 2019-9-26 16:36 | 只看該作者

回復

使用道具 舉報

12#
ID:513258 發表于 2019-9-26 16:38 | 只看該作者

回復

使用道具 舉報

13#
ID:513258 發表于 2019-9-26 16:38 | 只看該作者

回復

使用道具 舉報

14#
ID:513258 發表于 2019-9-26 17:45 | 只看該作者
  1. /*
  2. 【Arduino】108種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  3. 實驗一百二十六:JQ6500語音模塊 MP3模塊 MCU串口控制播報
  4. GitHub官網:https://github.com/sleemanj/JQ6500_Serial#jq6500_serial
  5. 庫文件 下載:http://sparks.gogo.co.nz/JQ6500_Serial.zip
  6. 項目:MP3播放器的最小示例,只需循環播放所有曲目。
  7. */

  8. #include <Arduino.h>
  9. #include <SoftwareSerial.h>
  10. #include <JQ6500_Serial.h>

  11. // Create the mp3 module object,
  12. //   Arduino Pin 8 is connected to TX of the JQ6500
  13. //   Arduino Pin 9 is connected to one end of a  1k resistor,
  14. //     the other end of the 1k resistor is connected to RX of the JQ6500
  15. //   If your Arduino is 3v3 powered, you can omit the 1k series resistor
  16.    JQ6500_Serial mp3(8,9);

  17. void setup() {
  18.   mp3.begin(9600);
  19.   mp3.reset();
  20.   mp3.setVolume(20);
  21.   mp3.setLoopMode(MP3_LOOP_ALL);
  22.   mp3.play();  
  23. }

  24. void loop() {
  25.   // Do nothing, it's already playing and looping :-)
  26. }
復制代碼


回復

使用道具 舉報

15#
ID:513258 發表于 2019-9-26 17:50 | 只看該作者

回復

使用道具 舉報

16#
ID:513258 發表于 2019-9-26 17:59 | 只看該作者
  1. /*
  2. 【Arduino】108種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  3. 實驗一百二十六:JQ6500語音模塊 MP3模塊 MCU串口控制播報
  4. GitHub官網:https://github.com/sleemanj/JQ6500_Serial#jq6500_serial
  5. 庫文件 下載:http://sparks.gogo.co.nz/JQ6500_Serial.zip
  6. 項目:語音模塊JQ6500庫說明
  7. */

  8. 語音模塊JQ6500庫說明
  9. play()     開始播放當前文件。
  10. restart()  重新播放
  11. pause()      暫停
  12. next()        下一曲
  13. volumeUp()   音量+
  14. volumeDn()   音量-
  15. prev()      播放前一個文件。
  16. nextFolder() 播放下一個文件夾。
  17. prevFolder() 播放前一個文件夾。
  18. setVolume(byte volumeFrom0To30) 音量設置 為一個特定的水平(0至30)。
  19. setSource(byte source) 設置源以讀取MP3數據
  20. 以下兩種模式:
  21. MP3_SRC_BUILTIN    -從板上閃存讀取文件
  22. MP3_SRC_SDCARD     -從SD卡讀取文件MP3_LOOP_NONE (JQ6500-28Ponly)
  23. setEqualizer(byte equalizerMode) 設置均衡器 將均衡器設置為6種預置模式中的一種。
  24. 以下是6種模式:
  25. MP3_EQ_NORMAL
  26. MP3_EQ_POP        
  27. MP3_EQ_ROCK      
  28. MP3_EQ_JAZZ      
  29. MP3_EQ_CLASSIC   
  30. MP3_EQ_BASS
  31. setLoopMode(byte loopMode) 設置循環模式  下面的5種模式
  32. *  *  MP3_LOOP_ALL       -循環遍歷所有文件.
  33. *  * MP3_LOOP_FOLDER    -循環遍歷同一文件夾中的所有文件(SD Cardonly)
  34. *  * MP3_LOOP_ONE       -循環的一個文件.
  35. *  * MP3_LOOP_RAM       -循環的一個文件(不確定它是如何不同于以往!)
  36. *  * MP3_LOOP_NONE      -沒有循環,只需播放一個文件,然后停止。 (akaMP3_LOOP_ONE_STOP)
  37. playFileByIndexNumber(unsignedint fileNumber)  播放指定的語音  發揮基于其特定的文件(FAT表)指數。注意索引號
  38. *與文件名無關(除非您上傳/復制到文件名中的媒體)。
  39. *對SD卡FAT表進行排序,為操作系統搜索FAT排序實用程序
  40. *選擇。
  41. playFileNumberInFolderNumber(unsignedint folderNumber, unsigned int fileNumber)  *根據文件夾和文件的名稱在特定文件夾中播放特定文件。
  42. *僅適用于SD卡。
  43. *要使用這個函數,文件夾必須從00到99以及文件夾中的文件命名。
  44. *必須命名為從000.mp3到999.mp3
  45. 所以對sd卡進行“/ 03 / 006播放MP3文件,使用MP3。
  46. playfilenumberinfoldernumber(3, 6);
  47. sleep() 睡眠模式 如果使用SD卡,不推薦使用。原因:SD卡會出現無法讀取,直到設備再次上電。
  48. reset() 軟復位 ;在實際操作中,有時可能需要對設備進行電源循環,這可能是必要的,因為有時它可能會有點混亂,尤其是如果改變了SD卡的狀態。所以如果設計一個PCB /電路包括jq6500模塊可能是值得包括這樣的能力(即動力裝置通過MOSFET可以打開/關閉時)。
  49. getStatus() 狀態查詢命令,從設備獲取狀態。謹慎!這是由于以下原因,有些是不可靠的
  50. * 1。工作的時候從上次的記憶(MP3_SRC_BUILTIN),停了下來,似乎永遠不會回來,只有播放和暫停
  51. * 2。有時停下來還當它是工作,要抓住這getStatus()其實查詢模塊幾次,以確保它是真的知道它告訴了我們什么。
  52. getVolume()     獲取當前 音量 between 0 and 30
  53. getEqualizer()  獲取當前 均很器模式
  54. getLoopMode()   獲取當前 循環模式
  55. getVersion()    獲取版本
  56. countFiles(byte source)
  57. 在指定媒體 計數文件數量。
  58. *@param源之一mp3_src_builtin和mp3_src_sdcard
  59. * @返回文件數量上的媒體。
  60. countFolders(byte source)
  61. 計數文件夾的數量在指定媒體。
  62. *請注意,只有SD卡可以有文件夾。
  63. *@param源之一mp3_src_builtin和mp3_src_sdcard
  64. * @return數量的文件夾上的媒體。
  65. currentFileIndexNumber(bytesource)
  66. 當前播放(或暫停,或將播放下一個停止的文件)文件,返回文件的(FAT表)索引號。
  67. *這個數可以用playfilebyindexnumber();
  68. *@param源之一mp3_src_builtin和mp3_src_sdcard
  69. *  @return文件數。
  70. currentFilePositionInSeconds()
  71. *對于當前播放或暫停的文件,返回當前位置(以秒為單位)。
  72. * @return當前播放的文件的秒數。
  73. currentFileLengthInSeconds()
  74. *對于當前播放或暫停的文件,將文件的總長度以秒為單位返回。
  75. * @return音頻文件長度以秒為單位。
  76. currentFileName(char *buffer,unsigned int bufferLength)
  77. 對“當前”文件名,在SD卡。
  78. *當前文件是正在播放、暫停或停止的文件,然后可以是下一個播放,也可以是最后播放的,不確定的。
  79. *最好只在播放或暫停時咨詢,您知道SD卡是激活源。
  80. *不幸的是,沒有辦法查詢該設備,以找出哪些媒體是活動的來源(至少不是我所知道的)。
  81. sendCommand(byte command, bytearg1, byte arg2, char *responseBuffer, unsigned int bufferLength) 發送命令到jq6500模塊
  82. 其他版本:
  83. sendCommand(bytecommand);   
  84. sendCommand(bytecommand, byte arg1);   
  85. sendCommand(bytecommand, byte arg1, byte arg2);
  86. *@param command        從數據表發送的字節值。.
  87. *@param arg1           第一(如果有的話)參數字節
  88. *@param arg2           第二個參數(如果存在)字節
  89. *@param responseBuffer 緩沖區來存儲一行回應,如果為空,沒有響應讀。
  90. *@param buffLength     響應緩沖區包括空終止符的長度。
  91. sendCommandWithUnsignedIntResponse(bytecommand) 發送命令到jq6500模塊,并得到回應
  92. *為查詢命令的jq6500通常發送一個整數的響應(在UART為4進制數字)。
  93. *@param命令字節的值將從數據表。
  94. *  @return模塊響應。
復制代碼


回復

使用道具 舉報

17#
ID:513258 發表于 2019-9-26 21:44 | 只看該作者
  1. /*
  2. 【Arduino】108種傳感器模塊系列實驗(資料+代碼+圖形+仿真)
  3. 實驗一百二十六:JQ6500語音模塊 MP3模塊 MCU串口控制播報
  4. GitHub官網:https://github.com/sleemanj/JQ6500_Serial#jq6500_serial
  5. 庫文件 下載:http://sparks.gogo.co.nz/JQ6500_Serial.zip
  6. 項目:測試MP3播放器模塊
  7. */

  8. #include <Arduino.h>
  9. #include <SoftwareSerial.h>
  10. #include <JQ6500_Serial.h>

  11. // Create the mp3 module object,
  12. //   Arduino Pin 8 is connected to TX of the JQ6500
  13. //   Arduino Pin 9 is connected to one end of a  1k resistor,
  14. //     the other end of the 1k resistor is connected to RX of the JQ6500
  15. //   If your Arduino is 3v3 powered, you can omit the 1k series resistor
  16. JQ6500_Serial mp3(8,9);

  17. void setup() {
  18.   // put your setup code here, to run once:
  19.   Serial.begin(9600);
  20.   mp3.begin(9600);
  21.   mp3.reset();
  22.   statusAndHelpOutput();
  23. }

  24. void loop() {
  25.   
  26.     byte b;
  27.     if(Serial.available())
  28.     {
  29.       b = Serial.read();

  30.       switch(b)
  31.       {
  32.         case 'p': Serial.println("Play");   mp3.play();     return;
  33.         case 'r': Serial.println("Restart"); mp3.restart(); return;
  34.         case ' ': Serial.println("Pause"); mp3.pause();     return;
  35.         case '>': Serial.println("Next");  mp3.next();      return;
  36.         case '<': Serial.println("Prev");  mp3.prev();      return;
  37.         
  38.         case ']': Serial.println("Next Folder");  mp3.nextFolder(); return;
  39.         case '[': Serial.println("Prev Folder");  mp3.prevFolder(); return;
  40.    
  41.         case '+': Serial.println("Vol +"); mp3.volumeUp(); return;
  42.         case '-': Serial.println("Vol -"); mp3.volumeDn(); return;
  43.         case 'm': Serial.println("Vol 0"); mp3.setVolume(0); return;
  44.         
  45.         case 'v':
  46.         {
  47.           char volBuff[10];
  48.           memset(volBuff, 0, sizeof(volBuff));         
  49.           Serial.readBytesUntil('\n',volBuff, sizeof(volBuff)-1);
  50.           mp3.setVolume(max(0,min(30, atoi(volBuff))));
  51.          
  52.           Serial.print("Vol ");
  53.           Serial.println(max(0,min(30, atoi(volBuff))));                    
  54.         }
  55.         return;

  56.         case 'e':
  57.         {
  58.           do
  59.           {
  60.             while(!Serial.available()); // Wait
  61.             b = Serial.read();
  62.             if(b != ' ') break; // Allow "e N" or "eN" etc...
  63.           } while(1);
  64.          
  65.           Serial.print("Equalizer ");
  66.           switch(b)
  67.           {
  68.             case 'N': Serial.println("Normal");  mp3.setEqualizer(MP3_EQ_NORMAL);  break;
  69.             case 'P': Serial.println("Pop");     mp3.setEqualizer(MP3_EQ_POP);     break;
  70.             case 'R': Serial.println("Rock");    mp3.setEqualizer(MP3_EQ_ROCK);    break;
  71.             case 'J': Serial.println("Jazz");    mp3.setEqualizer(MP3_EQ_JAZZ);    break;
  72.             case 'C': Serial.println("Classic"); mp3.setEqualizer(MP3_EQ_CLASSIC); break;
  73.             case 'B': Serial.println("Bass");    mp3.setEqualizer(MP3_EQ_BASS);    break;
  74.           }
  75.         }
  76.         return;

  77.         case 'l':
  78.         {
  79.           do
  80.           {
  81.             while(!Serial.available()); // Wait
  82.             b = Serial.read();
  83.             if(b != ' ') break; // Allow "e N" or "eN" etc...
  84.           } while(1);
  85.          
  86.           Serial.print("Loop ");
  87.           switch(b)
  88.           {
  89.             case 'A': Serial.println("All"); mp3.setLoopMode(MP3_LOOP_ALL);      break;  // Plays the tracks one after another and repeats
  90.             case 'F': Serial.println("Folder"); mp3.setLoopMode(MP3_LOOP_FOLDER);       break; // Loop within folder
  91.             case 'O': Serial.println("One (repeat playing same file)"); mp3.setLoopMode(MP3_LOOP_ONE);       break; // | These seem to do the same, repeat the same track over and over
  92.             case 'R': Serial.println("??? - Don't know what it means exactly, in the datasheet it is \"RAM\""); mp3.setLoopMode(MP3_LOOP_RAM);       break; //-
  93.             case 'N':
  94.             case 'S': Serial.println("None (play file and stop)"); mp3.setLoopMode(MP3_LOOP_ONE_STOP); break;  // Default, plays track and stops
  95.           }
  96.         }
  97.         return;

  98.         case 's':
  99.         {
  100.           do
  101.           {
  102.             while(!Serial.available()); // Wait
  103.             b = Serial.read();
  104.             if(b != ' ') break; // Allow "e N" or "eN" etc...
  105.           } while(1);
  106.          
  107.           Serial.print("Source ");
  108.           switch(b)
  109.           {
  110.             case 'S': Serial.println("SD Card (if available)."); mp3.setSource(MP3_SRC_SDCARD);      break;
  111.             case 'B': Serial.println("on board memory.");mp3.setSource(MP3_SRC_BUILTIN);   break;            
  112.           }
  113.         }
  114.         return;

  115.         case 'f':
  116.         {
  117.           char fnumBuff[10];
  118.           memset(fnumBuff, 0, sizeof(fnumBuff));         
  119.           Serial.readBytesUntil('\n',fnumBuff, sizeof(fnumBuff)-1);
  120.           unsigned int fnum = strtoul(fnumBuff, NULL, 10);

  121.           Serial.println();
  122.           Serial.print("Play file #");
  123.           Serial.print(fnum);
  124.           Serial.println(F(" (if it exists)."));
  125.           mp3.playFileByIndexNumber(fnum); // 48 == ord('0')   
  126.           return;
  127.          
  128.         }
  129.         return;
  130.         
  131.         case 'F':
  132.         {
  133.           char fnumBuff[10];
  134.           memset(fnumBuff, 0, sizeof(fnumBuff));         
  135.           Serial.readBytesUntil('/',fnumBuff, sizeof(fnumBuff)-1);
  136.           unsigned int folnum = strtoul(fnumBuff, NULL, 10);
  137.          
  138.           memset(fnumBuff, 0, sizeof(fnumBuff));         
  139.           Serial.readBytesUntil('\n',fnumBuff, sizeof(fnumBuff)-1);
  140.           unsigned int fnum = strtoul(fnumBuff, NULL, 10);
  141.          
  142.           fnum   = max(1,min(fnum, 999));
  143.           folnum = max(1,min(folnum, 99));
  144.          
  145.           Serial.print("Play ");
  146.             if(folnum < 10) Serial.print('0');
  147.           Serial.print(folnum);
  148.           Serial.print('/');
  149.             if(fnum < 10) Serial.print("00");
  150.             else if(fnum < 10) Serial.print('0');
  151.           Serial.print(fnum);
  152.           Serial.println(".mp3 (if it exists).");
  153.           mp3.playFileNumberInFolderNumber(folnum, fnum); // 48 == ord('0')   
  154.         }
  155.         return;
  156.                   
  157.         case '?': statusAndHelpOutput(); return;
  158.         
  159.         case 'S': Serial.println("Sleep"); mp3.sleep(); return;
  160.         case 'z': Serial.println("Reset"); mp3.reset(); return;
  161.         
  162.       }
  163.       
  164.     }
  165.    
  166.     static unsigned long m = millis();
  167.    
  168.     if(millis() > 1000 && m < (millis() - 1000))
  169.     {
  170.       if((mp3.getStatus() == MP3_STATUS_PLAYING))
  171.       {
  172.         Serial.print(F("Playing, Current Position: "));
  173.         Serial.print(mp3.currentFilePositionInSeconds());
  174.         Serial.print(F("s / "));
  175.         Serial.print(mp3.currentFileLengthInSeconds());      
  176.         Serial.println('s');
  177.       }
  178.       m = millis();
  179.     }  
  180. }

  181. void statusAndHelpOutput()
  182. {
  183.    Serial.println();
  184.    Serial.println(F("JQ6500 MP3 Player Demo"));
  185.    Serial.println(F("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"));
  186.    
  187.    Serial.print(F("Status           : "));
  188.    switch(mp3.getStatus())
  189.    {
  190.      case MP3_STATUS_STOPPED: Serial.println(F("Stopped")); break;
  191.      case MP3_STATUS_PLAYING: Serial.println(F("Playing")); break;
  192.      case MP3_STATUS_PAUSED:  Serial.println(F("Paused"));  break;
  193.    }
  194.    
  195.    Serial.print(F("Volume (0-30)    : "));
  196.    Serial.println(mp3.getVolume());
  197.   
  198.    Serial.print(F("Equalizer        : "));
  199.    switch(mp3.getEqualizer())
  200.    {
  201.      case MP3_EQ_NORMAL:     Serial.println(F("Normal"));  break;
  202.      case MP3_EQ_POP:        Serial.println(F("Pop"));     break;
  203.      case MP3_EQ_ROCK:       Serial.println(F("Rock"));    break;
  204.      case MP3_EQ_JAZZ:       Serial.println(F("Jazz"));    break;
  205.      case MP3_EQ_CLASSIC:    Serial.println(F("Classic")); break;
  206.      case MP3_EQ_BASS:       Serial.println(F("Bass"));    break;     
  207.    }
  208.    
  209.    Serial.print(F("Loop Mode        : "));
  210.    switch(mp3.getLoopMode())
  211.    {
  212.      case MP3_LOOP_ALL:      Serial.println(F("Play all tracks, then repeat."));  break;
  213.      case MP3_LOOP_FOLDER:   Serial.println(F("Play all tracks in folder, then repeat."));     break;
  214.      case MP3_LOOP_ONE:      Serial.println(F("Play one track then repeat (loop track)."));    break;
  215.      case MP3_LOOP_RAM:      Serial.println(F("Unknown function exactly, seems to play one track then repeat?"));    break;
  216.      case MP3_LOOP_ONE_STOP: Serial.println(F("Play one track then stop."));    break;         
  217.    }
  218.    Serial.println();
  219.    
  220.    Serial.print(F("# of On Board Memory Files    : "));
  221.    Serial.println(mp3.countFiles(MP3_SRC_BUILTIN));
  222.       
  223.    Serial.print(F("\"Current\" On Board Memory File Index: "));
  224.    Serial.println(mp3.currentFileIndexNumber(MP3_SRC_BUILTIN));
  225.    Serial.println();
  226.    
  227.    Serial.print(F("# of SD Card Files    : "));
  228.    Serial.println(mp3.countFiles(MP3_SRC_SDCARD));
  229.    
  230.    Serial.print(F("# of SD Card Folders  : "));
  231.    Serial.println(mp3.countFolders(MP3_SRC_SDCARD));
  232.    
  233.    Serial.print(F("\"Current\" SD Card File Index: "));
  234.    Serial.println(mp3.currentFileIndexNumber(MP3_SRC_SDCARD));
  235.    
  236.    Serial.print(F("\"Current\" SD Card File Name : "));   
  237.    char buff[120];
  238.    mp3.currentFileName(buff, sizeof(buff));
  239.    Serial.println(buff);
  240.    
  241.    Serial.println();
  242.    Serial.println(F("Controls (type in serial monitor and hit send): "));
  243.    Serial.println(F("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"));
  244.    Serial.println(F("? Display this menu.\n"));
  245.    
  246.    Serial.println(F("p Play\t\t> Next\t\t< Prev\n[space] Pause\tr Restart from start of file\n] Next folder\t[ Prev folder\n"));
  247.    
  248.    Serial.println(F("f[1-65534]      Play file by (FAT table) index number\nF[01-99]/[001-999].mp3 Play [001-999].mp3 in folder [01-99]\n"));
  249.    
  250.    Serial.println(F("+ Vol up\t- Vol down\tm Mute\nv[0-30] Set volume\n\ne[N/P/R/J/C/B] Equalizer (N)ormal, (P)op, (R)ock, (J)azz, (C)lassic, (B)ass\nl[A/F/O/R/N]   Loop (A)ll, (F)older, (O)ne, (R)???, (N)o Loop\ns[S/B]         Switch to (S)D Card/(B)uilt In Memory\n\n"));
  251. }
復制代碼


回復

使用道具 舉報

18#
ID:513258 發表于 2019-9-26 21:47 | 只看該作者

回復

使用道具 舉報

19#
ID:658723 發表于 2020-1-10 18:36 | 只看該作者
能問問 51單片機怎么通過串口控制它放指定音頻嗎
回復

使用道具 舉報

20#
ID:513258 發表于 2020-1-11 18:32 | 只看該作者
youwanlian 發表于 2020-1-10 18:36
能問問 51單片機怎么通過串口控制它放指定音頻嗎

51單片機不懂啊,不好意思
回復

使用道具 舉報

21#
ID:555401 發表于 2021-1-8 15:33 | 只看該作者
您好,請問有JQ8200嗎?
回復

使用道具 舉報

22#
ID:555401 發表于 2021-1-8 15:43 | 只看該作者
emmmhhh 發表于 2021-1-8 15:33
您好,請問有JQ8200嗎?

說錯了,是JQ8400.
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美精品在线免费观看 | 亚洲精品成人在线 | 亚洲成人一区二区 | 亚洲高清视频在线观看 | 毛片com | 四虎成人免费电影 | 日本精品一区二区三区在线观看视频 | 免费观看一级特黄欧美大片 | 欧美视频二区 | 日日噜噜噜夜夜爽爽狠狠视频, | 精品久久久久久久久久久久久 | 久久久精品一区二区三区 | 久久久久久久久久爱 | 成人网av | 午夜影院免费体验区 | 日韩av中文 | 成人一区二区三区在线 | 四虎成人免费电影 | 国产精品久久久久久久久久久久久久 | 久久久久网站 | 色婷婷av一区二区三区软件 | 成人国产精品色哟哟 | 午夜影院在线观看视频 | 在线观看日本网站 | 午夜久久 | 国产伦精品一区二区三区在线 | 日韩欧美操 | 成年人在线视频 | 亚洲一级毛片 | 成人精品一区二区三区中文字幕 | 欧美色综合天天久久综合精品 | 欧美午夜精品理论片a级按摩 | 精品国产乱码久久久久久闺蜜 | 精品乱码一区二区三四区视频 | 国产激情精品一区二区三区 | 91高清在线观看 | 欧美激情a∨在线视频播放 成人免费共享视频 | 亚洲精品乱码久久久久v最新版 | 国产精品一区二区三区四区 | 欧美成人一区二区三区片免费 | 午夜影晥 |