Ви не увійшли.
Сторінки 1
Маю код для midi footswitcha на 2 кнопки, він має працювати так, якщо я натискаю першу кнопку він має перемикати на пресеь вперед, якщо натискаю другу кнопку має перемикати пресет назад. А він працює так якщо я натисну першу кнопку в мене вмикається перший пресет, якщо я натискаю другу кнопку в мене увімкається 57 пресет. Як мені виправити цю проблему? Пресети мають перемикатися в програмі amplitube 4
Код
#include <MIDI.h>
MIDI_CREATE_DEFAULT_INSTANCE();
int switch1Pin = 3; // Пин первой кнопки
int switch2Pin = 2; // Пин второй кнопки
int switch1State = 0; // Состояние первой кнопки
int switch2State = 0; // Состояние второй кнопки
bool switch1Pressed = false; // Флаг нажатия первой кнопки
bool switch2Pressed = false; // Флаг нажатия второй кнопки
void setup() {
pinMode(switch1Pin, INPUT_PULLUP); // Настройка пина первой кнопки как входа с подтяжкой
pinMode(switch2Pin, INPUT_PULLUP); // Настройка пина второй кнопки как входа с подтяжкой
MIDI.begin(); // Инициализация объекта MIDI
}
void loop() {
delay(10); // добавляем небольшую задержку
switch1State = digitalRead(switch1Pin); // Чтение состояния первой кнопки
switch2State = digitalRead(switch2Pin); // Чтение состояния второй кнопки
if (switch1State == LOW && !switch1Pressed) { // Если нажата первая кнопка и флаг нажатия не установлен
MIDI.sendControlChange(0, 1, 1); // Отправить команду "Control Change Preset Next" на MIDI-канал 1
switch1Pressed = true; // Установить флаг нажатия
} else if (switch1State == HIGH && switch1Pressed) { // Если первая кнопка отжата и флаг нажатия установлен
switch1Pressed = false; // Сбросить флаг нажатия
}
if (switch2State == LOW && !switch2Pressed) { // Если нажата вторая кнопка и флаг нажатия не установлен
MIDI.sendControlChange(0, 2, 1); // Отправить команду "Preset Back" на MIDI-канал 2
switch2Pressed = true; // Установить флаг нажатия
} else if (switch2State == HIGH && switch2Pressed) { // Если вторая кнопка отжата и флаг нажатия установлен
MIDI.sendControlChange(0, 2, 0); // Отправить команду "Preset Back" на MIDI-канал 2 с нулевым значением для отмены
switch2Pressed = false;
if (switch1State == HIGH && switch1Pressed) { // Если первая кнопка отжата и флаг нажатия установлен
switch1Pressed = false; // Сбросить флаг нажатия
}
}
if (switch2State == HIGH && switch2Pressed) { // Если вторая кнопка отжата и флаг нажатия установлен
MIDI.sendControlChange(0, 2, 0); // Отправить команду "Preset Back" на MIDI-канал 2 с нулевым значением для отмены
switch2Pressed = false; // Сбросить флаг нажатия
}
}
Неактивний
Привіт. Дуже сильно не поглиблювався у ваш код.
Бачу помилку
if (switch2State == LOW && !switch2Pressed) { // Если нажата вторая кнопка и флаг нажатия не установлен
MIDI.sendControlChange(0, 2, 1); // Отправить команду "Preset Back" на MIDI-канал 2
switch2Pressed = true; // Установить флаг нажатия
} else if (switch2State == HIGH && switch2Pressed) { // Если вторая кнопка отжата и флаг нажатия установлен
MIDI.sendControlChange(0, 2, 0); // Отправить команду "Preset Back" на MIDI-канал 2 с нулевым значением для отмены
switch2Pressed = false;
Не вистачає замикаючої фігурної скобки. Має бути
If (...){
....
}else if(...){
...
}
Неактивний
Всім привіт! Підкажіть будь ласка, як зробити декілька лічильників паралельно, при цьому кожен лічильник має різні проміжки часу за допомогою millis().
Для кожного лічильника робите свою змінну в яку записуєте початок відліку
Сторінки 1