Пін кнопки або датчика обертів не можна використати
Що пише ArduPilot:
- BTN_PINN=N, set SERVON_FUNCTION=-1
- RPMN_PIN not set
- RPMN_PIN=N invalid
- RPM: Failed to attach to pin N
- RPMN_PIN=N, set SERVON_FUNCTION=-1
- BTN_PINN=N invalid
Вхід кнопки (BTN_ENABLE 1, піни від BTN_PIN1 до BTN_PIN4) або датчик обертів, що читається з піна (RPMn_TYPE 1 чи 2), називає пін, який ArduPilot прочитати не може. «not set»: RPMn_PIN досі -1. «invalid»: на цій платі немає GPIO (пін загального призначення) з таким номером. «set SERVOn_FUNCTION=-1»: цей пін є виходом серво/мотора і досі працює як вихід. «RPM: Failed to attach to pin»: пін існує, але рахувати його імпульси не вдається.
Що робити: найімовірніше спершу
Пін — один із виходів серво/моторів, і його не перетворено на GPIO.
ПеревіртеПовідомлення називає вихід: «set
SERVO9_FUNCTION=-1» — це вихід 9.ВиправтеЗадайте цьому
SERVOn_FUNCTION-1 (GPIO) і перезавантажте: виходи стають пінами GPIO лише під час запуску.Оберти надходять від ESC, а не від датчика на піні, і
RPMn_TYPEнеправильний.ПеревіртеТипи 1 і 2 — лише для датчика Холла чи оптичного, під'єднаного до піна.
ВиправтеЗадайте
RPMn_TYPE5 (телеметрія ESC) або 0, якщо бібліотекою RPM узагалі не користуєтеся.Номер піна належить іншій платі, або входом кнопки взагалі не користуються.
ВиправтеВізьміть номер GPIO з документації своєї плати або задайте
BTN_ENABLE0 (а невживаним пінам -1).«Failed to attach»: ту саму лінію переривання вже займає інший пін із таким самим номером на іншому порту.
ВиправтеПеренесіть датчик на інший GPIO й задайте його в
RPMn_PIN.
Список параметрів називає RPMn_TYPE 1 «Not Used», але код поводиться з ним точно як із 2 (GPIO), разом із перевіркою піна.
Параметри, на які варто глянути
| Параметр | Що це |
|---|---|
BTN_ENABLE | Enable button reporting |
BTN_PIN1 | First button Pin |
BTN_PIN2 | Second button Pin |
RPM1_TYPE | RPM type |
RPM1_PIN | Input pin number |
RPM2_TYPE | RPM type |
RPM2_PIN | Input pin number |
SERVO9_FUNCTION | Servo output function |
Де це зробити:Планувальник плати й підключення
Код, який це надсилає
BTN_PINN=N, set SERVON_FUNCTION=-1
libraries/AP_Button/AP_Button.cpp AP_Button::arming_checks() · Відкрити в ArduPilot Copter-4.7.1
RPMN_PIN not set
libraries/AP_RPM/AP_RPM.cpp AP_RPM::arming_checks() · Відкрити в ArduPilot Copter-4.7.1
RPMN_PIN=N invalid
libraries/AP_RPM/AP_RPM.cpp AP_RPM::arming_checks() · Відкрити в ArduPilot Copter-4.7.1
RPM: Failed to attach to pin N
libraries/AP_RPM/RPM_Pin.cpp AP_RPM_Pin::update() · Відкрити в ArduPilot Copter-4.7.1
І ще 2 повідомлень, що надсилаються з тих самих місць.