Arduino,ИК пульт и DF Player Mini

Baluu2001
Offline
Зарегистрирован: 04.04.2020

Ребят,кто поможет,я не новичок в сборках с Ардуино,но всё же нужна помощь.Я прикупил себе модуль,DF Player Mini,есть всё для ИК пульта,всё подключил,всё работает.Управление с пульта работает на ура,если бы не одно условие,не могу заставить пульт убавлять и прибавлять звук на этом плеере.Не так,что бы при нажатии на кнопку включался звук на 30 или на 15,а так что бы при зажатой кнопке + на пульте,плеер прибавлял звук,а на кнопку минус что бы его убавлял.Именно при задержанной кнопке.Если кто может помочь,скинуть скетч,чтоб это всё заработало,прошу помогите.Долго не могу разобраться.

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

Правила сетевой этики рекомендуют немого почитать форум прежде, чем на него писать.

Если бы Вы следовали этим правилам, то знали бы:

1. Платную помощь осуществляют в разделе "Ищу исполнителя".

2. Во всех остальных разделах (кроме "Проекты") чтобы получить помощь, необходимо:

2.1. Опубликовать схему (свою, а не похожую из И-нета).

2.2. Опубликовать скетч (свой, а не похожий из И-нета).

2.3. Сообщить, чего хочется добиться.

2.4. Описать, что вместо этого получается.

2.5. Подробно сформулировать, чем 2.3 отличается от 2.4.

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

Алгоритм прост: при зажатой кнопке пульт посылает код кнопки. Некоторые пульты - при зажатой кнопке посылают сперва код кнопки, а потом - код, сигнализирующий, что зажатие есть.

Со стороны контроллера необходимо:

1. Завести переменную uint32_t timer и флаг активности таймера;

2. При получении кода нужной кнопки запоминаем в timer значение millis(), взводим флаг, что таймер активен;

3. В loop через некоторые промежутки времени (см. стандартный пример Blink without delay) смотрим - таймер активен? Если да - то делаем нужное действие, например, уменьшаем громкость.

4. В loop в отдельном блоке кода проверяем: if(millis() - timer > timeout) { timerEnabled = false; }, т.е. если код нужной кнопки не приходил в течение какого-то времени, то сбрасываем флаг активности таймера;

5. Всё.

Baluu2001
Offline
Зарегистрирован: 04.04.2020

Извините,если отвлекаю,а когда я буду вписывать действие при нажатии кнопки,как мне вписать действие?
у этого плеера есть только одна команда для звука,это
mp3_set_volume(сюда вписывается значение от 0-30)
Если сюда можно вставить только численное значение,как мне сделать так,чтоб при зажатой кнопке + он увеличивался,а при минусе,что бы он уменьшался?

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

Добавляешь переменную, в которой будет храниться значение:  byte val=0;
При нажатии кнопки "+" увеличиваешь значение переменной (инкремент):  val++;
При нажатии кнопки "-" уменьшаешь значение переменной (декремент):  val--;
После чего вызываешь функцию mp3_set_volume и вместо самого значения пишешь туда имя переменной, которая содержит это значение:  mp3_set_volume(val);

Baluu2001
Offline
Зарегистрирован: 04.04.2020

Огромное спасибо.Буду Пробовать

Baluu2001
Offline
Зарегистрирован: 04.04.2020

Извините,но не срабатывает, единственное что я получил,при нажатии на кнопку - звук, звук улетает на максимум,при плюсе не происходит ничего впринципе.Не знаю в чём дело,до функции void setup добавил строку byte val=0,а при настройке кнопок вбил:
if (results.value==0xFFA857) {
val++;
mp3_set_volume(val)
(Это если что, кнопка плюс звука)
И то же самое с минус звуком,только сменил код кнопки,ну и функцию val на минус.
Ничего не выходит,который час уже мучаюсь,можете помочь?
P.S.-все остальные кнопки в скетче,такие как переключение песен,стоп и плей музыки,работают без всяких проблем.

Baluu2001
Offline
Зарегистрирован: 04.04.2020

Ребят,разобрался со звуком на DF Player,всё работает,спасибо огромное.Теперь появилась надбавка к этому проекту,хочется сделать VU метер,визуалайзер,который будет работать в совместке с этим плеером,на основе дисплея 1602,по I2C подключению,но не могу сообразить,как совместить скетч DF Player,инфракрасного порта и дисплея,ничего не получается,вечно вылезают всякие ошибки при компиляции

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

Baluu2001 пишет:
Теперь появилась надбавка к этому проекту,хочется сделать VU метер,визуалайзер,который будет работать в совместке с этим плеером,на основе дисплея 1602,по I2C подключению,но не могу сообразить,как совместить скетч DF Player,инфракрасного порта и дисплея,ничего не получается,вечно вылезают всякие ошибки при компиляции

Там бы надо начинать со схемы, а не со скетча.

Baluu2001
Offline
Зарегистрирован: 04.04.2020

В схеме которую собрал,уверен.Так как на дисплее появляются сообщения от аналоговых портов,а именно: левый и правый канал:L и R.Дело в том,что бары в полях L и R заполнены до максимума и при воспроизведении мелодии,на экране не происходит ни малейшего движения.В этом вся и проблема.Схема в порядке,проверял несколько раз и сверял с тем,что находил в инете.

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

Baluu2001 пишет:
Так как на дисплее появляются сообщения от аналоговых портов,а именно: левый и правый канал:L и R.Дело в том,что бары в полях L и R заполнены до максимума и при воспроизведении мелодии,на экране не происходит ни малейшего движения.
А почему Вы думаете, что там должно быть какое-то движение?

Baluu2001
Offline
Зарегистрирован: 04.04.2020

Элементарно потому,что VU meter создан для того,что бы отслеживать сигнал звуковых частот,ровно так же как на этом видео:
https://youtu.be/JTsCYXt5nC8

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

Я не знаю, о каком UV-мере Вы говорите. Я не вижу его в Вашем коде.

Денчик любитель
Offline
Зарегистрирован: 03.10.2021

Baluu 2001 если не сложно можешь показать свой скетч