Самодельная MIDI система для баяна или гармони

Больше
6 года 4 мес. назад - 6 года 4 мес. назад #43071 от Иван Подольский
Иван Подольский ответил в теме Самодельная MIDI система для баяна или гармони
А вот этот дебугЪ что выводит в режиме отладки?

#ifdef DEBUG_PRESSURE
// Вывести в порт значнеие с датчика
Serial.println(press_out_value ,DEC);
#else


Был неправ. А как насчет того, чтобы сразу привести к char:

volume = (((uint8_t)(md_data.md_channel_volume[channel]) * press_out_value / PRESS_MAX_VALUE));
Последнее редактирование: 6 года 4 мес. назад пользователем Иван Подольский.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
6 года 4 мес. назад - 6 года 4 мес. назад #43072 от Иван Подольский
Иван Подольский ответил в теме Самодельная MIDI система для баяна или гармони
Или довести паранойю до максимума:

int volume = (......формула....)&255 //оставляем 8 разрядов

А лучше вообше оставить только семь:

int volume = (......формула....)&127 //оставляем 7 разрядов
Последнее редактирование: 6 года 4 мес. назад пользователем Иван Подольский.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
6 года 4 мес. назад - 6 года 4 мес. назад #43073 от Александр
Иван, громкость не может стать меньше нуля или больше 127 (в MIDI допустима только громкость 0..127) и пока корректна громкость канала, записанная в массиве md_data.md_channel_volume[channel]
Поэтому нужно проверять только громкость канала.
А для защиты MIDI устройств от возможных некорректных команд достаточно добавить проверку в саму функцию Command3

У нас получилась какая-то странная проблема. Плата перезагружается только когда двигаем мех. При изменении давления вычисляется громкость и отправляется команда задания громкости.
Сейчас подождём что скажет Дмитрий. Пока не совсем ясно при каких условиях происходит перезагрузка.
Последнее редактирование: 6 года 4 мес. назад пользователем Александр.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
6 года 4 мес. назад - 6 года 4 мес. назад #43074 от Дмитрий
Александр
по первому варианту датчик громкость не меняет но шлет постоянно (при движении меха) команду громкости 64 по всем каналам
по 4. L моргает , громкость 64 но только по каналу "1"
Последнее редактирование: 6 года 4 мес. назад пользователем Дмитрий.

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
6 года 4 мес. назад #43075 от Александр
Я обнаружил одну неисправность, может всё это из-за неё.
Если выход датчика давления не равен нулю, то команды MIDI отправляются каждый раз, даже если давление постоянно. Предыдущее значение давления никогда не обновлялось, поэтому отправка шла непрерывно.

Нужно дописать сразу после #endif и скобок идущих за отправкой команды:

#endif
}
press_prev_value = press_out_value; // ЭТУ строку вставить
// ОБРАБОТКА КНОПОК

Должно будет реже отправлять и скорее всего заработает.
Спасибо сказали: Дмитрий, Иван Подольский

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Больше
6 года 4 мес. назад #43077 от Дмитрий
все заработало!!!!!! остальные строки вернул как были, спасибо!

Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.

Время создания страницы: 0.354 секунд
Работает на Kunena форум