Mundarija:

Arduino bilan MP3 pleer: 6 qadam
Arduino bilan MP3 pleer: 6 qadam

Video: Arduino bilan MP3 pleer: 6 qadam

Video: Arduino bilan MP3 pleer: 6 qadam
Video: BU QIZ SINIFDOSHLARI BILAN BIRGA BÕLDI 2024, Noyabr
Anonim
Image
Image
Tafsilotli ro'yxat
Tafsilotli ro'yxat

Bu yig'ilishda biz Arduino Uno bilan mp3 pleer, ovoz balandligi sozlangan mini PAM8403 ovoz kuchaytirgichi, DFPlayer Mini mp3 moduli va 3 vattli karnaylardan foydalanardik.

Bu sxema nafaqat musiqa pleyeriga, balki to'xtash joyi yoki robot uchun ovozli funksiyalarga ruxsat beradi. Ushbu yig'ilish yozilgan ovozni qurilmalarga joylashtirish imkonini beradi. Bu ovoz tabiiy bo'ladi va sintez qilinmaydi. Ko'p odamlar uchun bu standart variantlarga qaraganda afzalroq xususiyatlar.

Ushbu yig'ilish uchun biz maxsus Arduino Uno -dan foydalanmoqdamiz, lekin siz ESP8266 yoki ESP32 -ga ulanishingiz mumkin. Shubhasiz, pimlarni sozlash talab qilinadi.

1 -qadam: ma'lumotlar jadvali

2 -qadam: DFPlayer moduli

DFPlayer moduli
DFPlayer moduli

DFPlayer moduli RX TX, VCC, GND ketma -ket aloqasidan foydalanadi. U ikkita karnayga chiqish va audio kirishga ega.

3 -qadam: PAM8403 mini kuchaytirgichi

Mini kuchaytirgich PAM8403
Mini kuchaytirgich PAM8403

4 -qadam: yig'ish

O'rnatish
O'rnatish

5 -qadam: kutubxonalar

Kutubxonalar
Kutubxonalar

Mp3 moduli bilan aloqa qilish uchun quyidagi "DFRobotDFPlayerMini" kutubxonasini qo'shing.

"Sketch >> kutubxonalarni qo'shish >> kutubxonalarni boshqarish …" ga kiring.

6 -qadam: Manba kodi

Biz o'z kodimiz bilan foydalanadigan kutubxonalar va doimiylarni aniqlashdan boshlaymiz.

Bir ob'ektni, ketma -ket dasturiy ta'minotni va boshqasini yaratish bilan boshlang, bu myDFPlayer.

String tipidagi buf o'zgaruvchisi MP3 modulining buyruqlari bo'lgan Arduino Serialdan keladigan ma'lumotlarni saqlashga xizmat qiladi. "To'xtatib turish" o'zgaruvchisi musiqa ijro etilayotganini yoki to'xtatilganligini ko'rsatish uchun ishlatiladi (pauza = rost, va u pauza qilinganligini ko'rsatadi, aks holda u ijro etilmoqda).

#include "SoftwareSerial.h" #include "DFRobotDFPlayerMini.h" // Inisia ketma -ket dasturiy ta'minot 10 va 11 SoftwareSerial mySoftwareSerial (10, 11); // RX, TX // MP3 -ni (DFPlayer Mini) DFRobotDFPlayerMini myDFPlayer -ga javob berish mumkin; // javob berish uchun javobgar o'yinchilar String buf; // player javob berish uchun javob beradi (0: tocando; 1: pausado) boolean pausa = false; // turli xil javoblar bilan tenglashtirish uchun // varia de 0 a 5 int equalizacao = 0; // (0 = Oddiy, 1 = Pop, 2 = Rok, 3 = Jazz, 4 = Klassik, 5 = Bass) "// barcha javoblar SD -kartani taqdim etmaydi. Int maxSongs = 0;

Sozlash

Bu bosqichda biz, masalan, noto'g'ri sharoitlarni baholash bilan, kontaktlarning zanglashiga olib kelishini ko'rsatadigan bosma variantlarni qo'yamiz.

void setup () {// mySoftwareSerial.begin (9600) modulli Comunicacao seriyali; // Arduino Serial.begin (115200) serialini rasmiylashtirish; // Verifica se o module esta answerendo e se o // cartao SD kodi Serial.println (); Serial.println ("DFRobot DFPlayer Mini"); Serial.println ("DFPlayer modulini ishga tushirish… (3 ~ 5 ta)"); if (! myDFPlayer.begin (mySoftwareSerial)) {Serial.println ("Nao inicializado:"); Serial.println ("1. DFPlayer Mini -ni ketma -ketlikdagi chexiya"); Serial.println ("2. Insira um cartao SD"); while (rost); } Serial.println (); Serial.println ("Modulli DFPlayer Mini rasmiy!"); // Definicoes iniciais myDFPlayer.setTimeOut (500); // 500ms myDFPlayer.volume (10) ketma -ketligi. // 10 -jild va 0 dan 30 gacha myDFPlayer. EQ (0); // Equalizacao normal // hech qanday SD kodi yo'q. maxSongs = myDFPlayer.readFileCounts (DFPLAYER_DEVICE_SD); Serial.println (); Serial.print ("Numero de arquivos no cartao SD:"); Serial.println (maxSongs); // Komandalar menyusi menyusi_opcoes ();

Tanlovlar menyusi

Siz butun montajni ketma -ket monitor orqali boshqarasiz. Shunday qilib, har safar sxema buyruqlar va ko'rsatmalar bilan sizda mavjud bo'lgan Options menyusini chop etadi.

void menu_opcoes () {Serial.println (); Serial.println ("Komandos:"); Serial.print ("[1-"); Serial.print (maxSongs); Serial.println ("] MP3 yoki boshqa fayllarni tanlash"); Serial.println ("[s] parar reproducao"); Serial.println ("[p] pausa/continua a musica"); Serial.println ("[e] seleciona equizacao"); Serial.println ("[+ yoki -] aumenta ou diminui o volume"); Serial.println (); }

Loop

void loop () {// Agar siz ketma -ket ketmoqchi bo'lsangiz (Serial.available ()> 0) {// recupera os dados de entrada buf = Serial.readStringUntil ('\ n'); // Reproducao (índice da música) if ((buf.toInt ()> = 1) && (buf.toInt () <= maxSongs)) {Serial.print ("Reproduzindo musica:"); Serial.println (buf.toInt ()); myDFPlayer.play (buf.toInt ()); // o'yin menyusi_opcoes () ni o'ynang; } // Pausa/Continua a musica if (buf == "p") {if (pauza) {Serial.println ("Continua musica…"); myDFPlayer.start (); } boshqa {Serial.println ("Musiqa pausada…"); myDFPlayer.pause (); } pauza =! pauza; menu_opcoes (); } // Parad if (buf == "s") {myDFPlayer.stop (); Serial.println ("Musiqa paradasi!"); menu_opcoes (); } // Seleciona equizacao if (buf == "e") {equalizacao ++; agar (Equalizacao == 6) {Equalizacao = 0; } myDFPlayer. EQ (equizacao); Serial.print ("Equalizacao:"); Ketma -ket chop etish (equalizacao); Serial.println ("(0 = Oddiy, 1 = Pop, 2 = Rok, 3 = Jazz, 4 = Klassik, 5 = Bass)"); menu_opcoes (); } // Ma'lumotlar hajmi, agar (buf == "+") {myDFPlayer.volumeUp (); Serial.print ("Ovoz balandligi:"); Serial.println (myDFPlayer.readVolume ()); menu_opcoes (); } // Diminui hajmi, agar (buf == "-") {myDFPlayer.volumeDown (); Serial.print ("Ovoz balandligi:"); Serial.println (myDFPlayer.readVolume ()); menu_opcoes (); }} // while} // loop

Tavsiya: