اطلاعیه

Collapse
No announcement yet.

کار با شیلد ضبط و پخش صوت vs1053

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    کار با شیلد ضبط و پخش صوت vs1053

    بسم الله الرحمن الرحیم

    سلام دوستان
    دیدم داخل سایت های فارسی اموزش بدرد بخوری برای کار با این شیلد نیست (حالا منظورم این نیست که این مطالب من آموزش بدرد بخوری باشن ولی خب نهایتا یه قطعه کد گذاشته بودن)
    این شیلد رو فروشگاه همین سایت داره و معرفی هم کرده :

    خب همونطوری که داخل سایت نوشته شده شیلد جوری طراحی شده که روی آردوینو UNO سوار میشه و نیازی به سیم کشی نداره ولی یه مشکلی داره و اونم اینه که حافظه زیادی از آردوینو UNO رو اشغال میکنه و اگه حافظه 80 درصدش پر بشه دیگه جواب نمیده. البته این مورد فقط زمانی اتفاق میفته که بخواید صدایی رو ضبط کنید و پخش کنید (بعدا علتش رو میگم ) ولی اگه بخواید فقط فایلی رو پخش کنید مشکلی نداره بیشتر از 80 درصد پر بشه پس اگه کاری که میخواید انجام بدید فراتر از یه ضبط و پخش صداست و بخش های دیگه ای هم داره از سری های آردوینو با حافظه بیشتر استفاده کنید.
    در کل این شیلد برای کار نیاز به 10 تا پایه داره که دوتاش تغذیه هستند و 4 تا هم برای ارتباط با مموری کارت و 4 تا هم ارتباط با خود شیلد یا همون ic vs1053 که نقشه سیم کشیشون داخل لینک بالا هست.
    این شیلد بیشتر پسوند های صوتی رو میتونه پخش کنه ولی تا جایی که من جست و جو کردم فقط با پسوند ogg. ضبط میکنه که میشه گفت تقریبا کیفیتش با mp3 در یه حده.
    برای پخش صوت هم به فکر یه آمپلی فایر باشید چون خروجی AUX این شیلد توانی نداره .
    در پست بعدی برنامه پخش صوت رو میزارم و بعدش هم ضبط صوت رو.


    #2
    پاسخ : کار با شیلد ضبط و پخش صوت vs1053



    #include <SPI.h>
    #include <Adafruit_VS1053.h>
    #include <SD.h>

    // define the pins used
    #define RESET 8 // VS1053 reset pin (output)
    #define CS 6 // VS1053 chip select pin (output)
    #define DCS 7 // VS1053 Data/command select pin (output)
    #define CARDCS 9 // Card chip select pin
    #define DREQ 2 // VS1053 Data request, ideally an Interrupt pin
    Adafruit_VS1053_FilePlayer musicPlayer = Adafruit_VS1053_FilePlayer(RESET, CS, DCS, DREQ, CARDCS);

    void setup() {
    Serial.begin(9600);


    if (! musicPlayer.begin()) { // initialise the music player
    Serial.println(F("Couldn't find VS1053, do you have the right pins defined?"));
    while (1);
    }
    else {
    Serial.println(F("VS1053 found"));
    }


    if (!SD.begin(CARDCS)) { // initialise sd-card
    Serial.println(F("SD failed, or not present"));
    while (1); // don't do anything more
    }
    else {
    Serial.println("SD OK!");
    }


    //printDirectory(SD.open("/"), 0);

    // Set volume for left, right channels. lower numbers == louder volume!
    musicPlayer.setVolume(0,100);

    }

    void loop() {
    if (Serial.available()) {
    char r = Serial.read();


    if (r == 's') {
    Serial.println(F("Playing Stoped."));
    musicPlayer.stopPlaying();
    }
    if (r== 'p') {
    if (! musicPlayer.paused()) {
    Serial.println("Paused");
    musicPlayer.pausePlaying(true);
    }
    else {
    Serial.println("Resumed");
    musicPlayer.pausePlaying(false);
    }
    }


    if (r == '1') {

    Serial.println("Play 1.ogg");
    if (!musicPlayer.stopped())musicPlayer.stopPlaying();
    musicPlayer.playFullFile("n1.ogg");

    }
    if (r == '2') {
    Serial.println("Play 2.mp3");
    if (!musicPlayer.stopped())musicPlayer.stopPlaying();
    musicPlayer.startPlayingFile("2.mp3");
    }
    if (r == '3') {
    Serial.println("Play 3.mp3");
    if (!musicPlayer.stopped())musicPlayer.stopPlaying();
    musicPlayer.startPlayingFile("m842-2471.mp3");
    }

    }

    }


    /// File listing helper
    void printDirectory(File dir, int numTabs) {
    while(true) {

    File entry = dir.openNextFile();
    if (! entry) {
    // no more files
    //Serial.println("**nomorefiles**");
    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();
    }
    }
    جدیدترین ویرایش توسط mahdi782; ۱۸:۲۷ ۱۳۹۷/۰۵/۲۰.

    دیدگاه


      #3
      پاسخ : کار با شیلد ضبط و پخش صوت vs1053

      خب این برنامه میتونه 3 تا فایل رو با وارد کردن شماره های 1 تا 3 پخش کنه فقط اسم فایل هاتون رو که توی مموری ذخیره کردید با اسم فایل های داخل برنامه عوض کنید.
      چندتا دستور داره که کارشون معلومه ولی یه توضیح کوچیک میدم.
      دستور زیر برای تنظیم ولوم صدا هست که از صفر تا 100 میتونید بهش مقدار بدید یکیش برای بلندگوی چپ و یکیش برای بلندگوی راسته که وقتی فیش AUX به شیلد وصل کنید میتونید هر کدوم رو به امپلی فایر وصل کنید و خروجی بگیرید.
      musicPlayer.setVolume(50,50);

      دستورات بعدی به ترتیب برای pause, stopکردن آهنگ استفاده میشه.
      musicPlayer.stopPlaying();
      musicPlayer.pausePlaying(true);

      دستورات بعدی به ترتیب برای پخش کامل فایل و پخش فایل به صورت معمولی است. در پخش کامل فایل امکان stop و pause کردن فایل وجود ندارد.

      musicPlayer.playFullFile("***");
      musicPlayer.startPlayingFile("***");

      به جای *** بایدنام فایلی که میخواید پخش بشه رو همراه با پسوند بنویسید.

      دیدگاه

      لطفا صبر کنید...
      X