Теперь внесем необходимые изменения в исходный код прошивки. Найдите и раскомментируйте следующие строки:
#define LED_FLASHER
#define LED_FLASHER_DDR DDRB
#define LED_FLASHER_PORT PORTB
#define LED_FLASHER_BIT PORTB4
Первая строка активирует функцию управления подсветкой. Следующие три строки назначают порт микроконтроллера и конкретный вывод порта, к которому мы будем подключать коммутатор. В данном случае изменения не потребуются, т. к. вывод назначен на линию 4 порта В, а это вывод D10 на плате полетного контроллера CRIOUS АIOР, расположенный на гребенке для подключения регуляторов. Поэтому коммутатор подсветки можно подключить обычным трехжильным проводом для сервомашинок. Напомним, что к выводам D11 и D12 у нас подключен сонар, а к выводу D46 — бипер.
Строка //#define LED_FLASHER_INVERT инвертирует выходной сигнал.
Следующие строки определяют свечение светодиодов в различных режимах:
#define LED_FLASHER_SEQUENCE 0b00000000
#define LED_FLASHER_SEQUENCE_ARMED 0b00000101
#define LED_FLASHER_SEQUENCE_MAX 0b11111111
#define LED_FLASHER_SEQUENCE_LOW 0b000000000
В каждой строке присутствует восьмибитное двоичное число. Это последовательность вспышек светодиода. Последовательность циклически повторяется. Ноль соответствует погашенному светодиоду, единица— включенному. Длительность одной вспышки 0,125 с, полный цикл 8∙0,125 = 1 секунда. Например, последовательность 0b00000101 означает, что светодиод дает две короткие вспышки длительностью 0,125 с циклически раз в секунду. Последовательность 0b11111111 соответствует постоянно горящему светодиоду, а 0b000000000 — полностью погашенному. Вы можете задавать произвольную последовательность для любого режима.
Первая строка соответствует режиму DISARMED (питание подано, моторы не активны). По умолчанию подсветка погашена. Изменив последовательность на 0b00000001, можно заставить подсветку вспыхивать раз в секунду, напоминая, что питание подключено. В режиме ARMED светодиод по умолчанию вспыхивает дважды.
После активации функции подсветки в панели конфигуратора становятся доступны для настройки еще два параметра, LEDMAX и LEDLOW, которыми можно управлять при помощи переключателей AUX. Разумеется, эти режимы взаимно противоположные и не должны включаться одновременно. Но их можно включать параллельно с другими режимами и задать произвольные последовательности мигания, изменив последовательность двоичных битов.
Посадочные огни предназначены для подсветки посадочной площадки при полетах в темное время суток. Обычно они представляют собой несколько мощных белых светодиодов, направленных вертикально вниз. Схема коммутатора для их включения и порядок расчета режима светодиодов идентичны описанным выше.
По умолчанию в прошивке для управления посадочными огнями назначен вывод 37 в виде контактной площадки на печатной плате. Для удобства подключения коммутатора мы переназначим выход на вывод D9 на штыревой гребенке. Найдите в тексте прошивки строки
//#define LANDING_LIGHTS_DDR DDRC
//#define LANDING_LIGHTS_PORT PORTC
//#define LANDING LIGHTS_BIT PORTC0
Раскомментируйте их и внесите следующие изменения:
#define LANDING_LIGHTS_DDR DDRH
#define LANDING_LIGHTS_PORT FORTH
#define LANDING_LIGHTS_BIT PORTH6
После активации этих строк в интерфейсе конфигуратора MultiWii WinGUI появляется опция LLIGHTS, позволяющая включать посадочные огни любым тумблером AUX. Поскольку каналов AUX мало, можно сделать включение посадочных огней инверсным по отношению к режиму удержания высоты BARO (ALTHOLD). Когда коптер взлетает или садится, режим удержания высоты отключен и горят посадочные огни.
Для подключения выхода приемника S-BUS ко входу RX1 порта SERIAL1 необходимо изготовить простейший инвертор сигнала на одном n-p-n-транзисторе. Это может быть любой маломощный n-p-n-транзистор, например самый распространенный С945 или ВС337. Компоненты схемы (рис. 6.10) можно не монтировать на плате, а спаять детали вывод к выводу и поместить их в термоусадочную трубку. Питание на инвертор подается с разъема приемника или контроллера.