Программирование плеера

krosslove
Offline
Зарегистрирован: 12.06.2015
#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>

const int f = 8;
const int w = 9;


void setup()
{

Serial.begin (9600);
    mp3_set_serial (Serial);    //set Serial for DFPlayer-mini mp3 module 
  delay (100);
  mp3_play (3);
  mp3_set_volume (15);
  
 }


 void loop()
{

if (digitalRead(w)== LOW)
                 {
                  mp3_play (1);
                 }               
                 else  
                  {
                  mp3_play (3);
                   } 
      if (digitalRead(f)== LOW)
                 {
                  mp3_play (2);
                 }  
                  else   
                  {
                  mp3_play (3);
                   }  
                           
                                          
 }

Вот такой код. Должен по идее работать так - при включении играет трек 3, а при нажатии кнопок треки 2 или 1, после отжатия кнопок должен опять возвращаться на трек 3. Но что то не работает.(((

alexval2007
Offline
Зарегистрирован: 10.11.2012

я когда игрался плеером заметил что между командами нужно задержку ставить поставьте задержку 100мс между командами вечером проверю ваш код если будет время

блин вы американец сразу неувидел кто в сетупе пины на вход настраивать будет пушкин чтоли и подтяжку к +5В либо програмно либо резистором

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

krosslove пишет:
Должен по идее работать так - при включении играет трек 3, а при нажатии кнопок треки 2 или 1, после отжатия кнопок должен опять возвращаться на трек 3. Но что то не работает.(((

Что не работает? Не играет при включнии? Не переключается на другой трек при нажатии кнопки? Не возвращается к треку 3 после отпускания кнопки?

krosslove
Offline
Зарегистрирован: 12.06.2015

Когда включаешь ничего вообще не происходит. Без елсе все работает но после отпускания кнопки продолжает играть тот же трек который включался при нажатии кнопки. С елзе вообще не включается. Резисторы стоят.

 

#include <SoftwareSerial.h>
#include <DFPlayer_Mini_Mp3.h>

const int f = 8;
const int w = 9;


void setup()
{

Serial.begin (9600);
    mp3_set_serial (Serial);    //set Serial for DFPlayer-mini mp3 module 
  delay (100);
  mp3_set_volume (15);
  
 }


 void loop()
{

 if (digitalRead(w)== LOW)
                 {
                  mp3_play (1);
                 }               
               
                                 
 if (digitalRead(f)== LOW)
                 {
                  mp3_play (2);
                 }  
     
                           
                                          
 }

Вот этот код работает - при нажатии на одну из кнопок влючается один из треков

krosslove
Offline
Зарегистрирован: 12.06.2015

Как можно сделать так. Чтобы при нажатии кнопки шел всего один импульс, команда. Например в этих строчках 

if (digitalRead(c)== HIGH)
                 {
                  mp3_play (4);
                 } 

если нажать кнопку сигнал будет постоянно проигрываться в лупе, то есть команда

mp3_play (4)

будет постоянно запускаться, тем самым включая трек много раз в секунду, а надо так сделать, чтобы когда нажата кнопка команда подавалась всего один раз и луп обрабатывался дальше, или это только с аппаратными прерываниями возможно?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

Заведите переменную состояния (или флаг), индицирующую текущий режим: если режим "0" и нажата кнопка, пускаем воспроизведение и переопределяем режим на "1". Если режим "1", ничего не делаем, пока не будет отпущена кнопка (или пока не закончится мелодия - это уж как порложено по логике программы), а потом переопределяем обратно в "0".