Arduino,ИК пульт и DF Player Mini
- Войдите на сайт для отправки комментариев
Сб, 04/04/2020 - 16:35
Ребят,кто поможет,я не новичок в сборках с Ардуино,но всё же нужна помощь.Я прикупил себе модуль,DF Player Mini,есть всё для ИК пульта,всё подключил,всё работает.Управление с пульта работает на ура,если бы не одно условие,не могу заставить пульт убавлять и прибавлять звук на этом плеере.Не так,что бы при нажатии на кнопку включался звук на 30 или на 15,а так что бы при зажатой кнопке + на пульте,плеер прибавлял звук,а на кнопку минус что бы его убавлял.Именно при задержанной кнопке.Если кто может помочь,скинуть скетч,чтоб это всё заработало,прошу помогите.Долго не могу разобраться.
Правила сетевой этики рекомендуют немого почитать форум прежде, чем на него писать.
Если бы Вы следовали этим правилам, то знали бы:
1. Платную помощь осуществляют в разделе "Ищу исполнителя".
2. Во всех остальных разделах (кроме "Проекты") чтобы получить помощь, необходимо:
2.1. Опубликовать схему (свою, а не похожую из И-нета).
2.2. Опубликовать скетч (свой, а не похожий из И-нета).
2.3. Сообщить, чего хочется добиться.
2.4. Описать, что вместо этого получается.
2.5. Подробно сформулировать, чем 2.3 отличается от 2.4.
Алгоритм прост: при зажатой кнопке пульт посылает код кнопки. Некоторые пульты - при зажатой кнопке посылают сперва код кнопки, а потом - код, сигнализирующий, что зажатие есть.
Со стороны контроллера необходимо:
1. Завести переменную uint32_t timer и флаг активности таймера;
2. При получении кода нужной кнопки запоминаем в timer значение millis(), взводим флаг, что таймер активен;
3. В loop через некоторые промежутки времени (см. стандартный пример Blink without delay) смотрим - таймер активен? Если да - то делаем нужное действие, например, уменьшаем громкость.
4. В loop в отдельном блоке кода проверяем: if(millis() - timer > timeout) { timerEnabled = false; }, т.е. если код нужной кнопки не приходил в течение какого-то времени, то сбрасываем флаг активности таймера;
5. Всё.
Извините,если отвлекаю,а когда я буду вписывать действие при нажатии кнопки,как мне вписать действие?
у этого плеера есть только одна команда для звука,это
mp3_set_volume(сюда вписывается значение от 0-30)
Если сюда можно вставить только численное значение,как мне сделать так,чтоб при зажатой кнопке + он увеличивался,а при минусе,что бы он уменьшался?
Добавляешь переменную, в которой будет храниться значение: byte val=0;
При нажатии кнопки "+" увеличиваешь значение переменной (инкремент): val++;
При нажатии кнопки "-" уменьшаешь значение переменной (декремент): val--;
После чего вызываешь функцию mp3_set_volume и вместо самого значения пишешь туда имя переменной, которая содержит это значение: mp3_set_volume(val);
Огромное спасибо.Буду Пробовать
Извините,но не срабатывает, единственное что я получил,при нажатии на кнопку - звук, звук улетает на максимум,при плюсе не происходит ничего впринципе.Не знаю в чём дело,до функции void setup добавил строку byte val=0,а при настройке кнопок вбил:
if (results.value==0xFFA857) {
val++;
mp3_set_volume(val)
(Это если что, кнопка плюс звука)
И то же самое с минус звуком,только сменил код кнопки,ну и функцию val на минус.
Ничего не выходит,который час уже мучаюсь,можете помочь?
P.S.-все остальные кнопки в скетче,такие как переключение песен,стоп и плей музыки,работают без всяких проблем.
Ребят,разобрался со звуком на DF Player,всё работает,спасибо огромное.Теперь появилась надбавка к этому проекту,хочется сделать VU метер,визуалайзер,который будет работать в совместке с этим плеером,на основе дисплея 1602,по I2C подключению,но не могу сообразить,как совместить скетч DF Player,инфракрасного порта и дисплея,ничего не получается,вечно вылезают всякие ошибки при компиляции
Там бы надо начинать со схемы, а не со скетча.
В схеме которую собрал,уверен.Так как на дисплее появляются сообщения от аналоговых портов,а именно: левый и правый канал:L и R.Дело в том,что бары в полях L и R заполнены до максимума и при воспроизведении мелодии,на экране не происходит ни малейшего движения.В этом вся и проблема.Схема в порядке,проверял несколько раз и сверял с тем,что находил в инете.
Элементарно потому,что VU meter создан для того,что бы отслеживать сигнал звуковых частот,ровно так же как на этом видео:
https://youtu.be/JTsCYXt5nC8
Я не знаю, о каком UV-мере Вы говорите. Я не вижу его в Вашем коде.
Baluu 2001 если не сложно можешь показать свой скетч