Fireduino 开源创意平台 立即购买

拥有双核Cortex-M3处理器,集成高质量音频Codec和WiFi模组,拥有良好的IOT扩展性能,完美兼容Arduino IDE和Arduino标准接口,并支持FireBlock图形化编程软件,是一款首选的编程启蒙教学平台,更是一款开源的创意原型平台。

Audio

更新时间:2017-08-08 阅读:1734

Fireduino Audio

Fireduino 内部集成了HIFI级高质量的音频解码器、专业的硬件MP3解码加速器、硬件低损耗音频解码加速器和丰富的外设,支持WI-FI协议,支持24bits 192k Hz 采样率、低损耗、低功耗的音频解码。

Fireduino 支持播放在SD卡以及网络上的音频文件,解码格式支持APE/FLAC/WAV/MP3/WMA/AAC/OGG;

Fireduino Audio API 提供了播放、暂停、停止、以及设置和获取声音大小等。

Fireduino Audio 相关结构体

// playing status
typedef enum
{
	AudioFailed = 0,
	AudioPlay ,
	AudioPause ,
	AudioStop ,
}AudioStatus;
typedef enum
{
	AUDIO_SD,         // SD
	AUDIO_NET    	  // NET
}Storage;

Fireduino Audio API

begin(...)

   说明
       初始化 Audio。
语法 Audio.begin(AUDIO_NET); Audio.begin(AUDIO_SD);
参数 Storage:AUDIO_SD、AUDIO_NET
返回 无

playFile(...)

   说明
       播放指定文件。
语法 Audio.playFile("\\4.MP3");
参数 char * :文件路径
返回 无

playNetFile(...)

   说明
       播放网络资源的地址(仅支持http协议)。
语法 Audio.playNetFile("http://192.168.199.240/%E6%89%93%E8%80%81%E8%99%8E.MP3");
参数 char* :网络资源地址。
返回 无

setVolume(...)

   说明
       设置声音大小
语法 Audio. setVolume(16);
参数 int :声音大小(0~31)
返回 无

getVolume(...)

   说明
       获取声音大小
语法 Audio. getVolume();
参数 无
返回 音量大小值

pause()

   说明
       暂停播放。
语法 Audio. pause();
参数 无
返回 无

resume()

   说明
       恢复播放。
语法 Audio. resume();
参数 无
返回 无

stop()

   说明
       停止播放。
语法 Audio. stop();
参数 无
返回 无

getStatus()

   说明
       获取播放状态。
语法 Audio. getStatus();
参数 无
返回 返回状态

end()

   说明
       结束使用Audio,与begin 相反。
语法 Audio. end();
参数 无
返回 无

Fireduino Audio 示例程序

#include <Arduino.h>
#include "TF.h"
#include "Audio.h"
#include <WiFi.h>
 
char ssid[] = "Fireduino";     //  your network SSID (name)
char pass[] = "12345678";  // your network password
int status = WL_IDLE_STATUS;
 
//#define PLAY_SD
 
void printWifiStatus();
void setup() {
 
	Serial.begin(115200);
	Serial.print("\r\narduino setup ...\r\n");
 
	if(!SD.begin())
	{
		Serial.println("sd init err\r\n");
		while(1);
	}
#ifndef PLAY_SD
  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present");
    // don't continue:
    while (true);
  }
 
  String fv = WiFi.firmwareVersion();
  if (fv != "1.1.0") {
    Serial.println("Please upgrade the firmware");
  }
 
  // attempt to connect to Wifi network:
  while (status != WL_CONNECTED) {
    Serial.print("Attempting to connect to SSID: ");
    Serial.println(ssid);
    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:
    status = WiFi.begin(ssid, pass);
 
    // wait 10 seconds for connection:
    // delay(10000);
  }
  Serial.println("Connected to wifi");
  printWifiStatus();	
#endif
 
#ifdef PLAY_SD
	Audio.begin(AUDIO_SD);
	if(Audio)
	{
		Audio.playFile("\\4.MP3");
	}
#else
	Audio.begin(AUDIO_NET);
	Audio.playNetFile("http://192.168.199.240/%E6%89%93%E8%80%81%E8%99%8E.MP3");
#endif
}
 
void loop() {
	Serial.println("loop");
#ifdef PLAY_SD
	if(Audio.getStatus() == AudioStop)
	{
		Audio.playFile("\\3.MP3");
	}
#else
	if(Audio.getStatus() == AudioStop)
	{
		Audio.playNetFile("http://192.168.199.240/%E6%89%93%E8%80%81%E8%99%8E.MP3");
	}
#endif
}
 
#ifndef PLAY_SD
void printWifiStatus() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());
 
  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);
 
  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
}
#endif