Поставить на стоп с помощью кнопки
- Войдите на сайт для отправки комментариев
Пт, 17/12/2021 - 20:31
Привет привет мои друзья и товарищи!!! По несчастью или нет не могу быть уверена, но у меня встал вопрос! При нажатии на энкодер хочу чтобы ставилось звучание на паузу, а при повторном воспроизводилось снова. Получается сделать пока что только воспроизведение при удержании))
Жду Вашей помощи и активных обсуждений!
Моя безуспешная попытка:
void loop() { setMIDIBank (1); int instrument = abs(encoder0Pos); if(digitalRead(5)==LOW) isPaused = false; if (isPaused = false) { player.midiWriteData(0xC0, instrument, 127); player.midiNoteOn(0, instrument, 127); } else { player.midiNoteOff(0, instrument, 127); } Serial.println(encoder0Pos); Serial.println(digitalRead(5)); }
Моя успешная попытка, но это не то, чего я хочу((
void loop() { setMIDIBank (1); int instrument = abs(encoder0Pos); if(digitalRead(5)==LOW) { player.midiWriteData(0xC0, instrument, 127); player.midiNoteOn(0, instrument, 127); } else { player.midiNoteOff(0, instrument, 127); } Serial.println(encoder0Pos); Serial.println(digitalRead(5)); }
Для начала хочу убедиться: Вы понимаете, что в MIDI пауза совсем не такая как в WAV?
Ну и желательно формулировать вопрос по следующей схеме:
1. Чего хочется.
2. Что вместо этого получается.
3. Чем первое отличается от второго.
А то непонятно, чего именно Вы хотите, что Вас не устраивает.
В безуспешной попытке замените строку 6 на
я могу где то кинуть вам весь код чтобы посмотрели что не так?
Здесь и кидайте. Или он такой секретный?
в 11 строке
int
isPaused = 1;
И с кнопкой так не работают. Вам нужно ловить только момент нажатия, а не нажатое состояние вообще. Иначе состояние проигрывателя будет меняться со скоростью прохождения цикла loop. Ну и про дребезг контактов забывать не нужно
а как бы Вы сделали?
Вам нужно ловить только момент нажатия, а не нажатое состояние вообще.
2TC: Имеется в виду момент перехода из ненажатого состояния в нажатое.
А как это реализовать?
А как это реализовать?
выделить кнопку в отдельную процедуру, в процедуре отслеживаем не только нажатие но и отжатие, защиту от дребезга можно решить к примеру через delay(30) ну или воспользоваться готовым решением по обработке кнопки
А как это реализовать?
В точности так, как написано: отслеживаем наступление состояния, при котором вот только что было не нажато, а теперь - нажато.
А в общем случае - следует научиться правильно формулировать свои мысли по-русски. Правильная формулировка - она сама по себе является инструкцией к действию.
ну ты в своем стиле)) столько слов, а толку ноль))
а как бы Вы сделали?
https://github.com/VAleSh-Soft/shButton
а как бы Вы сделали?
Зависит от ситуации. Иногда достаточно delay(x) после нажатия.)