Как добавить индикаторы на скетч кнопки
Я хотел бы добавить светодиоды к каждому кнопочному переключателю в первом коде. Первый код отправляет миди-сообщения в DAW. Я хотел бы, чтобы он также включал светодиод в качестве светового индикатора. Выключатель должен включать свет, если он выключен, и выключать, если он включен. Второй код является примером, который делает это, он хорошо работает с одной кнопкой. Я хотел бы иметь 3 кнопки на контактах 0, 1, 2 и светодиоды на контактах 3, 4 и 5.
#include <Bounce.h>
const int channel = 1;
Bounce button0 = Bounce(0, 5);
Bounce button1 = Bounce(1, 5);
Bounce button2 = Bounce(2, 5);
void setup() {
pinMode(0, INPUT_PULLUP);
pinMode(1, INPUT_PULLUP);
pinMode(2, INPUT_PULLUP);
}
void loop() {
button0.update();
button1.update();
button2.update();
if (button0.fallingEdge()) {
usbMIDI.sendNoteOn(60, 99, channel); // 60 = C4
}
if (button1.fallingEdge()) {
usbMIDI.sendNoteOn(61, 99, channel); // 61 = C#4
}
if (button2.fallingEdge()) {
usbMIDI.sendNoteOn(62, 99, channel); // 62 = D4
}
if (button0.risingEdge()) {
usbMIDI.sendNoteOff(60, 0, channel);// 60 = C4
}
if (button1.risingEdge()) {
usbMIDI.sendNoteOff(61, 0, channel); // 61 = C#4
}
if (button2.risingEdge()) {
usbMIDI.sendNoteOff(62, 0, channel); // 62 = D4
}
while (usbMIDI.read()) {
}
}
Второй набросок:
/*********************
Simple toggle switch
Created by: P.Agiakatsikas
*********************/
int button = 0;
int led = 13;
int status = false;
void setup(){
pinMode(led, OUTPUT);
pinMode(button, INPUT_PULLUP); // устанавливаем внутренний подтягивающий резистор, ненажатая кнопка имеет высокий уровень
}
void loop(){
//a) если кнопка не нажата, ложное состояние меняется на противоположное с помощью !status и загорается светодиод
//b) если кнопка нажата, истинное состояние изменяется на !status и светодиод гаснет
if (digitalRead(button) == true) {
status = !status;
digitalWrite(led, status);
} while(digitalRead(button) == true);
delay(50); // сохраняем небольшую задержку
}
@edrummer, 👍0
Обсуждение1 ответ
Я бы предложил создать массив структур MIDI-кнопок. Для каждой записи у вас будет объект кнопки, светодиодный вывод и BOOL для отслеживания состояния этой кнопки.
Напишите функцию, которая перебирает массив структур, проверяет состояние каждой из них и выполняет работу по воспроизведению/остановке нот и переключению состояний светодиодов в зависимости от состояния каждой кнопки.
- Прерывание при нажатии кнопки + устранение дребезга
- Кнопка переключения переключает между операторами обращения с разблокированием кнопки
- Как включить 3 светодиода в повторяющейся последовательности, чтобы все три светодиода затем выключались при отпускании используемой кнопки?
- Нажать одну кнопку, потом другую?
- Устранение дребезга кнопки с помощью прерывания
- Хорошая кнопка debouncing/Библиотека StateChange
- Остановить мигание светодиодов
- Интеграция 2 кнопок для включения и выключения светодиода.
Ваш код «Простой тумблер» включает/выключает состояние кнопки при каждом нажатии кнопки. Ваш MIDI-скетч больше похож на клавишу органа, где нота воспроизводится, пока клавиша удерживается нажатой, и перестает играть, когда кнопку отпускают. Вы хотите, чтобы светодиоды включались/выключались при каждом нажатии кнопки, даже если MIDI-нота ведет себя иначе?, @Duncan C
Это не сервис по написанию кода. Вы должны попытаться отредактировать свой код самостоятельно и задать вопросы, если у вас возникнут проблемы., @Duncan C
Миди-скетч используется для включения и выключения вещей, а не для воспроизведения нот, я не знаю почему, но это единственный работающий скетч, который я нашел. Я пытался включить/выключить заметку на сообщения копии, но это не работает. Миди-скетч включит параметр в Ableton (например) функцию записи, и он останется включенным до повторного нажатия. именно для этого мне и нужен свет. Я не прошу никого писать для меня полный код. Просто пример того, как это сделать., @edrummer