
پخش صوت و آهنگ با آردوینو از روی مموری کارت
دسته بندی : آردوینو
پخش فایل صوتی با فرمت wav و mp3 با استفاده از آردوینو و خواندن فایل صوتی از مموری کارت یا همان sd card برای پخش فایل صوتی با آردوینو
مطالبی که قرار است بیاموزید
امروز با یه پروژه خیلی فوق العاده در خدمت شما عزیزان هستیم و میخوایم با استفاده از آردوینو فایل صوتی را پخش کنی
مطالبی که قرار است بیاموزید
پخش صوت و یا صدا با آردوینو
برای پخش صدا با آردوینو ما دو روش داریم که در ادامه این مقاله آن ها را بررسی میکنیم
ماژول MP3 player

ماژولی که در تصویر بالا میبینید یه ماژول DFPlayer هست که امکان پخش فایل های صوتی با فرمت mp3 را دارد که میتوانید به آن فلش و مموری یا وصل کنید و خروجی آن را به ماژول sim800 متصل کنید
مزایا :
- پخش فایل های صوتی با فرمت mp3 و WMV
- خواندن از مموری کارت و فلش
- قابلیت کنترل کامل پخش از طریق کلیدها
- قابلیت افزایش یا کاهش حجم صدا
معایب :
- قیمت بالا تر نسبت به روش دوم
- وابسته بودن محصول به ماژول خاص
ماژول مموری کارت

شما با استفاده از ماژول مموری کارت میتوانید فایل هایی با فرمت wav را از روی حافظه مموری کارت بخوانید و آن را با آردوینو پخش کنید علاوه بر آن میتوانید فایل صوتی را در حافظه مموری خود ذخیره کنید ، که این یک مزیت بسیار مهم برای این ماژول است
مزایا :
- قیمت پایین تر
- قابلیت ضبط صوت علاوه بر پخش
- متنوع بودن ماژول های sd card
معایب
- محدود بودن به فایل صوتی wav
- عدم امکان کنترل روی صدا
شروع برنامه نویسی
ما از ماژول مموری کارت برای این کار استفاده کردیم برای دریافت پخش فایل صوتی که هم هزینه کمتری داشته باشد و امکان ناموجود شدن آن کمتر هست
کتابخانه TMRpcm
این کتابخانه به شما این امکان را میدهد که فایل های wav را از روی مموری کارت بخوانید و با آردوینو آن را پخش کنید
تولید فایل صوتی با فرمت wav
برای تبدیل فایل صوتی mp3 به wav من از وبسایت audio.online-convert.com استفاده کردم ، همچنین تنظیمات فایل صوتی را مثل تصویر زیر انجام دهید

کد پروژه
#include // include Arduino SPI library #include // include Arduino SD library #include "TMRpcm.h" // include TMRpcm library #define next ۲ #define _pause ۳ TMRpcm audio; File root; void setup(void) { Serial.begin(9600); pinMode(next, INPUT_PULLUP); pinMode(_pause, INPUT_PULLUP); Serial.print("Initializing SD card..."); if (!SD.begin()) { Serial.println("failed!"); while(true); // stay here. } Serial.println("OK!"); audio.speakerPin = 9; // set speaker output to pin 9 root = SD.open("/"); // open SD card main root printDirectory(root, 0); // print all files names and sizes audio.setVolume(5); // ۰ to 7. Set volume level audio.quality(1); // Set 1 for 2x oversampling Set 0 for normal } // main loop void loop() { if ( !audio.isPlaying() ) { // no audio file is playing File entry = root.openNextFile(); // open next file if (! entry) { // no more files root.rewindDirectory(); // go to start of the folder return; } uint8_t nameSize = String(entry.name()).length(); // get file name size String str1 = String(entry.name()).substring( nameSize - 4 ); // save the last 4 characters (file extension) if ( str1.equalsIgnoreCase(".wav") ) { // the opened file has '.wav' extension audio.play( entry.name() ); // play the audio file Serial.print("Playing file: "); Serial.println( entry.name() ); } else { // not '.wav' format file entry.close(); return; } while( debounce(next) ) ; // wait until 'next' button is released } if ( !digitalRead(next) ) { // 'next' button is pressed audio.stopPlayback(); // stop playing return; } if ( !digitalRead(_pause) ) { // '_pause' button is pressed audio.pause(); // pauses/unpauses playback while( debounce(_pause) ) ; // wait until '_pause' button is released } } // a small function for buttons debounce bool debounce (int bt) { byte count = 0; for(byte i = 0; i < 5; i++) { if ( !digitalRead(bt) ) count++; delay(10); } if(count > 2) return 1; else return 0; } void printDirectory(File dir, int numTabs) { while (true) { File entry = dir.openNextFile(); if (! entry) { // no more files break; } for (uint8_t i = 0; i < numTabs; i++) { Serial.print('\t'); } Serial.print(entry.name()); if (entry.isDirectory()) { Serial.println("/"); printDirectory(entry, numTabs + 1); } else { // files have sizes, directories do not Serial.print("\t\t"); Serial.println(entry.size(), DEC); } entry.close(); } }