• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Odtważacz MP3 DFPLayer Mini - pilot podczerwieni wybór folderu
#1
Odtważacz MP3 DFPLayer Mini - pilot podczerwieni wybór folderu

Próbuje dodać do programu obsługę wyboru folderu z pilota podczerwieni
i jak na razie po wybraniu folderu 1 odtwarzacz się wyłącza, pewnie coś jeszcze trzeba dopisać ale nie wiem co.

Kod:
/*****************************************************************************************\
 Program do zdalnego sterowania na podczerwień modółem (DFPlayer mini odtwarzacz MP3)
 Data 22.09.2018
 Dostosowany dla pilota Sony Trinitron
 Wyłączono nie używane piny ✓
\*****************************************************************************************/

#include <SoftwareSerial.h>
#include <IRremote.h>
SoftwareSerial mySerial(10, 11);
# define Start_Byte 0x7E
# define Version_Byte 0xFF
# define Command_Length 0x06
# define End_Byte 0xEF
# define Acknowledge 0x00
//---------------------------------------------------------------------------//
# define pause_play 0x290
# define next_song 0x2F0
# define prev_song 0xaF0   //kod HEX z kodem pilota zdalnego sterowania “0x”
# define vol_inc 0x490
# define vol_dec 0xC90
# define sound_equalizer 0x5D0
# define folder_1 0x10
# define folder_2 0x810
# define folder_3 0x410
# define folder_4 0xC10
# define folder_5 0x210
# define folder_6 0xA10
# define folder_7 0x610
# define folder_8 0xE10
# define folder_9 0x110

//--------------------------------------------------------------------------//
const int receive = A0;
IRrecv irrecv(receive);
decode_results dec;
int volume = 10;
int eqset = 0;
boolean Playing = false;
void setup ()
{
 irrecv.enableIRIn();
 mySerial.begin(9600);
 delay(1000);
 playFirst();
 Playing = true;

 //piny wyłączone nie używane zmniejszają zużycie energii i stabilizują pracę układu ✓
 pinMode(0, OUTPUT); digitalWrite(0, LOW);
 pinMode(1, OUTPUT); digitalWrite(1, LOW);
 pinMode(2, OUTPUT); digitalWrite(2, LOW);
 pinMode(3, OUTPUT); digitalWrite(3, LOW);
 pinMode(4, OUTPUT); digitalWrite(4, LOW);
 pinMode(5, OUTPUT); digitalWrite(5, LOW);
 pinMode(6, OUTPUT); digitalWrite(6, LOW);
 pinMode(7, OUTPUT); digitalWrite(7, LOW);
 pinMode(8, OUTPUT); digitalWrite(8, LOW);
 pinMode(9, OUTPUT); digitalWrite(9, LOW);
 // pin 10 TX
 // pin 11 RX
 pinMode(12, OUTPUT); digitalWrite(12, LOW);
 pinMode(13, OUTPUT); digitalWrite(13, LOW);
 // pin A0 podczerwień
 pinMode(A1, OUTPUT); analogWrite(A1, LOW);
 pinMode(A2, OUTPUT); analogWrite(A2, LOW);
 pinMode(A3, OUTPUT); analogWrite(A3, LOW);
 pinMode(A4, OUTPUT); analogWrite(A4, LOW);
 pinMode(A5, OUTPUT); analogWrite(A5, LOW);
}
void loop ()
{
 if (irrecv.decode(&dec))
 {
   if (dec.value == pause_play)
   {
     if (Playing)
     {
       pause();
       Playing = false;
     }
     else
     {
       Playing = true;
       play();
     }
   }
   if (dec.value == folder_2)
   {
     if (Playing)
     {
       tracking();
     }
   }
   if (dec.value == next_song)
   {
     if (Playing)
     {
       next();
     }
   }
   if (dec.value == prev_song)
   {
     if (Playing)
     {
       previous();
     }
   }
   if (dec.value == vol_inc)
   {
     volumeINC();
   }
   if (dec.value == vol_dec)
   {
     volumeDEC();
   }
   if (dec.value == sound_equalizer)
   {
     equalizer();
   }
   irrecv.resume();
 }
}

void playFirst()
{
 exe_cmd(0x3F, 0, 0);
 delay(100);
 exe_cmd(0x06, 0, volume);
 delay(100);
 exe_cmd(0x11, 0, 1);
 delay(100);
}
void pause()
{
 exe_cmd(0x0E, 0, 0);
 delay(100);
}
void play()
{
 exe_cmd(0x0D, 0, 1);
 delay(100);
}
void folder2()
 {
 exe_cmd(0x0F, 0, 1);
 delay(100);
 }
 void tracking()
 {
   exe_cmd(0x01, 0, 1);
   delay(100);
}
void next()
{
 exe_cmd(0x01, 0, 1);
 delay(100);
}
void previous()
{
 exe_cmd(0x02, 0, 1);
 delay(100);
}
void volumeINC()
{
 volume = volume + 1;
 if (volume == 31)
 {
   volume = 30;
 }
 exe_cmd(0x06, 0, volume);
 delay(100);
}
void volumeDEC()
{
 volume = volume - 1;
 if (volume == -1)
 {
   volume = 0;
 }
 exe_cmd(0x06, 0, volume);
 delay(100);
}
void equalizer()
{
 eqset = eqset + 1;
 if (eqset == 6)
 {
   eqset = 0;
 }
 exe_cmd(0x07, 0 , eqset);
 delay(100);
}
void exe_cmd(byte CMD, byte Par1, byte Par2)
{
 word checksum = -(Version_Byte + Command_Length + CMD + Acknowledge + Par1 + Par2);
 byte Command_line[10] = { Start_Byte, Version_Byte, Command_Length, CMD, Acknowledge, Par1, Par2, highByte(checksum), lowByte(checksum), End_Byte};
 for (byte x = 0; x < 10; x++)
 {
   mySerial.write(Command_line[x]);
 }
}

Działający wygląda tak
Kod:
/*****************************************************************************************\
 Program do zdalnego sterowania na podczerwień modółem (DFPlayer mini odtwarzacz MP3)
 Data 22.09.2018
 Dostosowany dla pilota Sony Trinitron
 Wyłączono nie używane piny ✓
\*****************************************************************************************/

#include <SoftwareSerial.h>
#include <IRremote.h>
SoftwareSerial mySerial(10, 11);
# define Start_Byte 0x7E
# define Version_Byte 0xFF
# define Command_Length 0x06
# define End_Byte 0xEF
# define Acknowledge 0x00
//---------------------------------------------------------------------------//
# define pause_play 0x290
# define next_song 0x2F0
# define prev_song 0xaF0   //kod HEX z kodem pilota zdalnego sterowania “0x”
# define vol_inc 0x490
# define vol_dec 0xC90
# define sound_equalizer 0x5D0
//--------------------------------------------------------------------------//
const int receive = A0;
IRrecv irrecv(receive);
decode_results dec;
int volume = 15;
int eqset = 0;
boolean Playing = false;
void setup ()
{
 irrecv.enableIRIn();
 mySerial.begin(9600);
 delay(1000);
 playFirst();
 Playing = true;

 //piny wyłączone nie używane zmniejszają zużycie energii i stabilizują pracę układu ✓
 pinMode(0, OUTPUT); digitalWrite(0, LOW);
 pinMode(1, OUTPUT); digitalWrite(1, LOW);
 pinMode(2, OUTPUT); digitalWrite(2, LOW);
 pinMode(3, OUTPUT); digitalWrite(3, LOW);
 pinMode(4, OUTPUT); digitalWrite(4, LOW);
 pinMode(5, OUTPUT); digitalWrite(5, LOW);
 pinMode(6, OUTPUT); digitalWrite(6, LOW);
 pinMode(7, OUTPUT); digitalWrite(7, LOW);
 pinMode(8, OUTPUT); digitalWrite(8, LOW);
 pinMode(9, OUTPUT); digitalWrite(9, LOW);
 // pin 10 TX
 // pin 11 RX
 pinMode(12, OUTPUT); digitalWrite(12, LOW);
 pinMode(13, OUTPUT); digitalWrite(13, LOW);
 // pin A0 podczerwień
 pinMode(A1, OUTPUT); analogWrite(A1, LOW);
 pinMode(A2, OUTPUT); analogWrite(A2, LOW);
 pinMode(A3, OUTPUT); analogWrite(A3, LOW);
 pinMode(A4, OUTPUT); analogWrite(A4, LOW);
 pinMode(A5, OUTPUT); analogWrite(A5, LOW);
}
void loop ()
{
 if (irrecv.decode(&dec))
 {
   if (dec.value == pause_play)
   {
     if (Playing)
     {
       pause();
       Playing = false;
     }
     else
     {
       Playing = true;
       play();
     }
   }
   if (dec.value == next_song)
   {
     if (Playing)
     {
       next();
     }
   }
   if (dec.value == prev_song)
   {
     if (Playing)
     {
       previous();
     }
   }
   if (dec.value == vol_inc)
   {
     volumeINC();
   }
   if (dec.value == vol_dec)
   {
     volumeDEC();
   }
   if (dec.value == sound_equalizer)
   {
     equalizer();
   }
   irrecv.resume();
 }
}

void playFirst()
{
 exe_cmd(0x3F, 0, 0);
 delay(100);
 exe_cmd(0x06, 0, volume);
 delay(100);
 exe_cmd(0x11, 0, 1);
 delay(100);
}
void pause()
{
 exe_cmd(0x0E, 0, 0);
 delay(100);
}
void play()
{
 exe_cmd(0x0D, 0, 1);
 delay(100);
}
void next()
{
 exe_cmd(0x01, 0, 1);
 delay(100);
}
void previous()
{
 exe_cmd(0x02, 0, 1);
 delay(100);
}
void volumeINC()
{
 volume = volume + 1;
 if (volume == 31)
 {
   volume = 30;
 }
 exe_cmd(0x06, 0, volume);
 delay(100);
}
void volumeDEC()
{
 volume = volume - 1;
 if (volume == -1)
 {
   volume = 0;
 }
 exe_cmd(0x06, 0, volume);
 delay(100);
}
void equalizer()
{
 eqset = eqset + 1;
 if (eqset == 6)
 {
   eqset = 0;
 }
 exe_cmd(0x07, 0 , eqset);
 delay(100);
}
void exe_cmd(byte CMD, byte Par1, byte Par2)
{
 word checksum = -(Version_Byte + Command_Length + CMD + Acknowledge + Par1 + Par2);
 byte Command_line[10] = { Start_Byte, Version_Byte, Command_Length, CMD, Acknowledge, Par1, Par2, highByte(checksum), lowByte(checksum), End_Byte};
 for (byte x = 0; x < 10; x++)
 {
   mySerial.write(Command_line[x]);
 }
}


Załączone pliki
.pdf   DFPlayer Mini Manul (1).pdf (Rozmiar: 422.65 KB / Pobrań: 2)
.pdf   FN-M16P Embedded MP3 Audio Module.pdf (Rozmiar: 807.78 KB / Pobrań: 1)
.pdf   MP3 ver.2 komplet.pdf (Rozmiar: 71.74 KB / Pobrań: 1)
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości