数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 11910|回复: 20

[Arduino] ESP8266添加声卡播放MP3网络电台

[复制链接]
发表于 2020-5-24 23:14:00 | 显示全部楼层 |阅读模式
上次8266直接GPIO播放音频。音质不怎么样,
现在买了“声卡” 下同。
PCM5102驱动耳机,

98357直接驱动喇叭,
二选一,
程序通用,
音质提高了不少,

===========================






===========================



  1. // 按钮控制播放音频





  2. #include <Arduino.h>
  3. #include "AudioFileSourceSPIFFS.h"
  4. #include "AudioGeneratorMP3.h"
  5. #include "AudioOutputI2S.h"

  6. AudioGeneratorMP3 *mp3;
  7. AudioFileSourceSPIFFS *file;
  8. AudioOutputI2S *out;

  9. int SWITCH_PIN = 0;


  10. int switchVal = 1;


  11. int ID;


  12. int volume = 25;

  13. int ff;


  14. void setup()
  15. {
  16.   Serial.begin(115200);
  17.   delay(1000);



  18.        Serial.println(" ");
  19.         Serial.println(" ");
  20.    
  21.      Serial.println("==== ESP8266 OK   =====");
  22.      
  23.   
  24.   SPIFFS.begin();
  25.   out = new AudioOutputI2S();
  26.   mp3 = new AudioGeneratorMP3();

  27.    pinMode(   SWITCH_PIN,  INPUT_PULLUP);
  28. //  pinMode(SWITCH_PIN, INPUT);




  29. ID=12;


  30. }








  31. void loop()

  32. {




  33.   
  34.   switchVal = digitalRead(SWITCH_PIN);


  35.   
  36. //  Serial.println(switchVal);



  37.    if(  digitalRead(SWITCH_PIN)==0      )
  38.    {
  39. if(ff==1)
  40. {
  41.   ff=0;
  42.    volume=volume-10;
  43.    if(volume<=5 )
  44.    volume=100;
  45. }
  46.    
  47.    }
  48.    else
  49.    {

  50.     ff=1;
  51.    }











  52. //=======================================================

  53.   if (mp3->isRunning())
  54.   {
  55.     // 是否在播放
  56.     if (!mp3->loop())
  57.     {  
  58.       
  59.       // 是否播放完了
  60.        Serial.println( "== 播放完毕== ");
  61.       
  62.       mp3->stop();        // 停止播放
  63.       delete file;
  64.       delete mp3;
  65. delay(100);
  66.         out = new AudioOutputI2S();
  67.         mp3 = new AudioGeneratorMP3();
  68.   
  69.      
  70.       
  71. delay(1000);
  72.       
  73.     }
  74.     else
  75.     {
  76. Serial.println( "======= 正在播放== ");




  77.     }


  78.    
  79.   }


  80.   
  81.   else

  82.   
  83.   {


  84.   Serial.println( "==================== 播放 END == ");   
  85.     if (switchVal == 0)
  86.     {  


  87.     ID++;
  88.     if(ID>13)
  89.     ID=0;


  90.     if( ID==0 )
  91.        file = new AudioFileSourceSPIFFS("/0.mp3"); // 初始化音频文件
  92.       
  93. else  if( ID==1 )
  94.        file = new AudioFileSourceSPIFFS("/1.mp3"); // 初始化音频文件


  95. else  if( ID==2 )
  96.        file = new AudioFileSourceSPIFFS("/2.mp3"); // 初始化音频文件

  97.        else  if( ID==3 )
  98.        file = new AudioFileSourceSPIFFS("/3.mp3"); // 初始化音频文件

  99.        else  if( ID==4 )
  100.        file = new AudioFileSourceSPIFFS("/4.mp3"); // 初始化音频文件

  101.        else  if( ID==5 )
  102.        file = new AudioFileSourceSPIFFS("/5.mp3"); // 初始化音频文件

  103.        else  if( ID==6 )
  104.        file = new AudioFileSourceSPIFFS("/6.mp3"); // 初始化音频文件

  105.        else  if( ID==7 )
  106.        file = new AudioFileSourceSPIFFS("/7.mp3"); // 初始化音频文件

  107.        else  if( ID==8 )
  108.        file = new AudioFileSourceSPIFFS("/8.mp3"); // 初始化音频文件

  109.        else  if( ID==9 )
  110.        file = new AudioFileSourceSPIFFS("/9.mp3"); // 初始化音频文件

  111.        else  if( ID==10 )
  112.        file = new AudioFileSourceSPIFFS("/10.mp3"); // 初始化音频文件

  113.        else  if( ID==11 )
  114.        file = new AudioFileSourceSPIFFS("/11.mp3"); // 初始化音频文件



  115. else  if( ID==12 )
  116.        file = new AudioFileSourceSPIFFS("/12.mp3"); // 初始化音频文件



  117.       
  118.       else
  119.          file = new AudioFileSourceSPIFFS("/aa.mp3"); // 初始化音频文件
  120.       // 开关接通为低电平
  121.    
  122.       Serial.printf("MP3 done\n");
  123.          Serial.println( "== 跟换音频文件== ");
  124.           Serial.print( "=--ID=:  ");
  125.            Serial.println(    ID  );
  126.            
  127. delay(1000);
  128.           while (  digitalRead(SWITCH_PIN)==0      );  
  129.       delay(1000);
  130.       
  131.       mp3->begin(file, out);  // 开始播放文件
  132.       
  133.     //    decoder->begin(buff, out);
  134.   
  135.        out->SetGain(((float)volume)/100.0);
  136.       
  137.     }



  138.    
  139.   }


复制代码






======================================================








  
}












本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册 微信登录

x

打赏

参与人数 2家元 +38 收起 理由
hongo + 8 原創內容
家睦 + 30

查看全部打赏

本帖被以下淘专辑推荐:

  • · MCU|主题: 24, 订阅: 19
发表于 2020-5-25 07:23:01 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2020-5-25 08:44:30 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2020-5-25 09:15:06 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-25 18:15:56 来自手机浏览器 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2020-5-25 19:25:56 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2020-5-25 20:29:14 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2020-5-26 08:18:57 来自手机浏览器 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2020-5-26 14:53:02 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-26 23:43:57 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2020-5-28 08:09:20 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2020-5-28 08:53:09 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2020-5-28 09:17:01 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2020-5-28 10:10:31 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2020-5-28 10:34:58 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-29 05:34:51 来自手机浏览器 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2020-5-31 23:25:30 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2020-6-3 20:26:01 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2021-10-9 18:16:02 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

发表于 2021-10-9 18:16:52 | 显示全部楼层
游客请登录后查看回复内容
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册 微信登录

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|数码之家-技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2026-6-3 20:44 , Processed in 0.343200 second(s), 16 queries , Gzip On, Redis On.

Powered by Discuz!

© MyDigit.Net Since 2006

快速回复 返回顶部 返回列表