- Katılım
- 27 Şubat 2019
- Mesajlar
- 12,015
Yaklaşan yıl dönümümüz için eşime bir hediye alacağım.
Hediyenin içine Arduino + DFPlayer ikilsi ile bir müzik yerleştireceğim.
Planıma göre Hediyenin kapağı açıldığında LDR'nin değeri yükselecek ve DFPlayerdeki müzik çalmaya başlayacak.
Aşağıdaki kod ile bunu başardım ama sorun şu ki; kutunun kapağı kapatılırsa LDR'nin değeri düşünce müziğin susması gerek.
Bunun içinde bir kesme tanımlamak istedim ama netten baktığım videolar kesmelerin dijital pinden tanımlandığı yönünde.
LDR yi analog okuduğum için kesmeyi nasıl yapacağımı bilemedim.
Hediyenin içine Arduino + DFPlayer ikilsi ile bir müzik yerleştireceğim.
Planıma göre Hediyenin kapağı açıldığında LDR'nin değeri yükselecek ve DFPlayerdeki müzik çalmaya başlayacak.
Aşağıdaki kod ile bunu başardım ama sorun şu ki; kutunun kapağı kapatılırsa LDR'nin değeri düşünce müziğin susması gerek.
Bunun içinde bir kesme tanımlamak istedim ama netten baktığım videolar kesmelerin dijital pinden tanımlandığı yönünde.
LDR yi analog okuduğum için kesmeyi nasıl yapacağımı bilemedim.
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 LDR = 0;
void setup()
{
mySoftwareSerial.begin(9600);
Serial.begin(115200);
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
//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.
}
LDR = analogRead(A5);
Serial.println(LDR);
if(LDR >= 350){
myDFPlayer.play(1); //Play the first mp3
delay(60000);
}
}