Odtważacz MP3 DFPLayer Mini - pilot podczerwieni wybór folderu - Bogdan 6 - 19-12-2018
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]);
}
}
|