В настоящее время я планирую проект, который включает в себя несколько поворотных энкодеров, которые я хочу подключить к прерывателям, чтобы надежно получать от них входные сигналы. Я хочу, чтобы каждый кодировщик делал по существу одно и то же, но в зависимости от того, какой кодировщик включен, некоторые переменные в коде должны будут измениться.
Должен ли я написать отдельную функцию для каждого из них? Невозможно передать аргумент (в этом случае номер контакта прерывания) в вызываемую функцию из attachInterrupt, и я действительно не вижу никакой другой жизнеспособной опции, кроме как написать 5 функций (rotary1 () rotary2 () ... ), содержащий точно такой же код с измененными несколькими переменными.
Еще один вариант, о котором я подумал, - это вызвать «посредническую» функцию, которая проверяет текущий актуальный вывод, а затем вызывает поворотную функцию с этой переданной информацией. вниз, но это далеко не элегантное решение и, вероятно, сильно замедляет весь процесс. Я действительно не хочу делать отдельную проверку для того, какой кодер включен, потому что эта информация уже есть, я просто не знаю, как получить к ней доступ.
Буду признателен, если кто-то с более опыт может указать мне правильное направление, поскольку мне, как относительному новичку, так много раз писать один и тот же код много раз.