Arduino + DFPlayer + Reed Röle ile Müzik Çalmak

Gokrtl

Gökhan Kartal (TeknoDay)
Staff member
Katılım
27 Şubat 2019
Mesajlar
11,212
Özel bir günde alınan hediyenin içine duygusal bir müzik yerleştirerek karşı cinsin kalbini iki kere fethedebilirsiniz.

ThinkerCad sağolsun ne reed röle bulabildim nede dfplayer. O yüzden devre şemasını çizemedim.

Bağlantılar şu şekilde;
DFPlayer'in VCC ve GND bacaklarına Arduinonun 5v ve GND bacaklarından besleme verin.
DFPlayer'in SPK1 ve SPK2 bacaklarına tek bir 2W'lık hoparlör kablolarını bağlayın.
DFPlayer'in RX bacağını Arduinonun 10 nolu pinine direk bağlayın.
DFPlayer'in TX bacağını 1K Ohm luk bir direnç ile Arduinonun 11 nolu pinine bağlayın.
Reed Rölenin bir bacağına Arduinodan 5v verin.
Reed Rölenin diğer bacağına 10K Ohm luk bir direnç bağlayarak Arduinonun GND bacağına bağlayın.
Reed Rölenin 10K Ohm Direnç bağladığınız bacağından Arduinonun 2 nolu dijital pinine direk bir kablo bağlayın. (Direncin GND hattına giden tarafından değil.)
Böylece bağlantılar tamamlanmış oluyor.

Aşağıdaki kodları kullanarak istediğiniz müziği DFPlayer'a çaldırabilirsiniz.
Ayrıca DFPlayer için "DFRobotDFPlayerMini" Kütüphanesini arduino ide de kütüphane kısmından yüklemeniz gerek.

C++:
#include "Arduino.h"
#include "SoftwareSerial.h"
#include "DFRobotDFPlayerMini.h"

SoftwareSerial mySoftwareSerial(10, 11);  // RX, TX
DFRobotDFPlayerMini myDFPlayer;
void printDetail(uint8_t type, int value);
int reed = 2;
int reedoku = 0;

int kapakAcik = 0;
int kapakAcikEskiDurum = 0;
int muzikcaliyor = 0;
void setup() {
  mySoftwareSerial.begin(9600);
  Serial.begin(115200);

  pinMode(reed, INPUT);

  Serial.println();
  Serial.println(F("DFRobot DFPlayer Mini Demo"));
  Serial.println(F("Initializing DFPlayer ... (May take 3~5 seconds)"));

  if (!myDFPlayer.begin(mySoftwareSerial)) {  //Use softwareSerial to communicate with mp3.
    Serial.println(F("Unable to begin:"));
    Serial.println(F("1.Please recheck the connection!"));
    Serial.println(F("2.Please insert the SD card!"));
    while (true)
      ;
  }
  Serial.println(F("DFPlayer Mini online."));

  myDFPlayer.volume(23);  //Set volume value. From 0 to 30 23 yap
  //myDFPlayer.play(1);  //Play the first mp3
}

void loop() {
  static unsigned long timer = millis();

  if (millis() - timer > 3000) {
    timer = millis();
    //myDFPlayer.next();  //Play next mp3 every 3 second.
  }

  if (myDFPlayer.available()) {
    printDetail(myDFPlayer.readType(), myDFPlayer.read());  //Print the detail message from DFPlayer to handle different errors and states.
  }

  reedoku = digitalRead(reed);
  if (reedoku == 1) {
    kapakAcik = 0;
  } else if (reedoku == 0) {
    kapakAcik = 1;
  }

  if (kapakAcik != kapakAcikEskiDurum) {
    kapakAcikEskiDurum = kapakAcik;
    if (muzikcaliyor == 0) {
      muzikcaliyor = 1;
      myDFPlayer.play(1);
    } else {
      muzikcaliyor = 0;
      myDFPlayer.stop();
    }
  }
}

void printDetail(uint8_t type, int value) {
  switch (type) {
    case TimeOut:
      Serial.println(F("Time Out!"));
      break;
    case WrongStack:
      Serial.println(F("Stack Wrong!"));
      break;
    case DFPlayerCardInserted:
      Serial.println(F("Card Inserted!"));
      break;
    case DFPlayerCardRemoved:
      Serial.println(F("Card Removed!"));
      break;
    case DFPlayerCardOnline:
      Serial.println(F("Card Online!"));
      break;
    case DFPlayerPlayFinished:
      Serial.print(F("Number:"));
      Serial.print(value);
      Serial.println(F(" Play Finished!"));
      break;
    case DFPlayerError:
      Serial.print(F("DFPlayerError:"));
      switch (value) {
        case Busy:
          Serial.println(F("Card not found"));
          break;
        case Sleeping:
          Serial.println(F("Sleeping"));
          break;
        case SerialWrongStack:
          Serial.println(F("Get Wrong Stack"));
          break;
        case CheckSumNotMatch:
          Serial.println(F("Check Sum Not Match"));
          break;
        case FileIndexOut:
          Serial.println(F("File Index Out of Bound"));
          break;
        case FileMismatch:
          Serial.println(F("Cannot Find File"));
          break;
        case Advertise:
          Serial.println(F("In Advertise"));
          break;
        default:
          break;
      }
      break;
    default:
      break;
  }
}

 

Forum istatistikleri

Konular
5,841
Mesajlar
99,613
Üyeler
2,480
Son üye
mozcelikors

Son kaynaklar

Son profil mesajları

gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Back
Top