• 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
Arduino nie działa raz na około 10 włączeń
#10
Przeprowadziłem serię testów na różnych konfiguracjach (raz bez elektromagnesu, innym razem bez DFPlayera itd.) i okazało się, że problem jest z DFPlayerem (bez niego wszystko działa jak należy). Czy ktoś z Was pracował z nim i napotkał podobny problem - zwiesza się raz na jakiś czas, losowo, statystycznie raz na jakieś 50 odtworzeń mp3.

Poniżej kod, z którego korzystam:
Kod:
//początek MP3
#include "SoftwareSerial.h"
SoftwareSerial mySerial(7, 8);
# define Start_Byte 0x7E
# define Version_Byte 0xFF
# define Command_Length 0x06
# define End_Byte 0xEF
# define Acknowledge 0x00 //Returns info with command 0x41 [0x01: info, 0x00: no info]
# define ACTIVATED LOW
boolean isPlaying = false;
/// koniec mp3

void setup() {

mySerial.begin (9600);
delay(100);
playFirst();

}

// void od mp3
void playFirst()
{
execute_CMD(0x3F, 0, 0);
delay(500);
setVolume(25);
pause();
}

void pause()
{
execute_CMD(0x0E,0,0);
delay(500);
}

void play()
{
execute_CMD(0x0D,0,1);
delay(500);
}

void playNext()
{
execute_CMD(0x01,0,1);
delay(500);
}

void playPrevious()
{
execute_CMD(0x02,0,1);
delay(500);
}

void setVolume(int volume)
{
execute_CMD(0x06, 0, volume); // Set the volume (0x00~0x30)
delay(2000);
}

void konkretnamuzykagra (int numer){
execute_CMD(0x03, 0, numer);
}

void execute_CMD(byte CMD, byte Par1, byte Par2)
// Excecute the command and parameters
{
// Calculate the checksum (2 bytes)
word checksum = -(Version_Byte + Command_Length + CMD + Acknowledge + Par1 + Par2);
// Build the command line
byte Command_line[10] = { Start_Byte, Version_Byte, Command_Length, CMD, Acknowledge,
Par1, Par2, highByte(checksum), lowByte(checksum), End_Byte};
//Send the command line to the module
for (byte k=0; k<10; k++)
{
mySerial.write( Command_line[k]);
}
}
// koniec void od mp3

i jak chcę odtworzyć konkretny utwór to w pętli korzystam z tej formuły, którą dodałem czyli:
  konkretnamuzykagra(numer utworu);
Kod:
    delay(1000);  //taką długość odtwarzania mp3 akurat potrzebuję
         pause();
         delay(200);
 
Odpowiedź
  


Wiadomości w tym wątku
RE: Arduino nie działa raz na około 10 włączeń - przez Wowas - 19-10-2018, 11:43

Skocz do:


Przeglądający: 1 gości