Flysky x6b схема подключения

Flysky x6b схема подключения

Здравствуйте коллеги!
Я начинающий моделист.
купил на али FLY SKY I6X c ним пришло 2 приемника X6B.
Самолет почти доделал, осталось проверить, настроить аппаратуру и собрать все в корпус.
Но возник вопрос. Никак не могу найти как подключить приемник к 4м сервомашинкам и мотору.
Подскажите в каком направлении действовать. Я так понял что пока шины I-bus и ppw меня не интерисуют.
Я так понял что питание и GND надо разветвить по всем остальным каналам?
2. Куда подается питание на передатчик.?

Подскажите, надо двигаться в этом направлении.? Я правильно понимаю?

Не очень подходящий приемник для новичка.
Лучше бы что-нибудь попроще типа fs-ia6 или подобного.
А с этим намучаетесь

В ролике все правильно показано,
только для надёжности надо конечно паять. Скрутка это не для авиации
Питание на приемник подаётся с регулятора хода по тем же проводам.
Ничего дополнительно не надо подключать.

Все сделал как на видео.
Но на приемнике индикатор только моргает.
И двигатель издает писк раз в секунду. Так и должно быть?

Пробовал другой приемник (у меня их 2) — тоже самое.
Кто может подсказать теорию работы этого приемника. Может надо какие то настройки сделать в передатчике?

Может не совпадение версий.? В передатчике написано V1.0 01-10-18

Биндинг приемника и передатчика делал?
Это привязка приемника к передатчика. Без этого работать не будет. Инструкции к приемнику нет?

Вот инструкция к приемнику

Зажимаешь кнопку bind на приемнике

Включаешь приемник. Кнопку можно отпустить. Индикатор мигает.

Зажимаешь кнопку bind на передатчика

Мигание приемника должно перейти в постоянное свечение.
На этом все.

По идее, биндинг делают на заводе. Но кто знает, как комплектовали твой заказ на Али?

Несовпадение версий — не думаю. Приемник по любому должен биндиться.

Источник

RSSI по iBus для приемников FlySky X6B и IA6B/C

Тонкости и нюансы

  • Шьется все это дело через программатор ST-Link v2. Купить можно на БГ или Али;
  • Предварительно для ST-Link v2 скачиваем и устанавливаем драйвера, STM32 ST-LINK Utility и обновление прошивки (по желанию). Для скачивания нужен email, на который придет ссылка на скачивание;
  • Подпаяться к приемнику удобнее одноконтактными разъемами типа dupont (от ардуино или компа) длинной 5-10см и сразу подать их на программатор;
  • Питание 3.3в лучше взять с программатора, подав на пин 3.3в приемника. Схема распайки на примере X6B ниже;
  • RX ID приемника — 4 байта по смещению 0x1C00. В новой прошивке их желательно заменить на свои, тогда не нужно будет биндить приемник по новой. Сделать это можно в самой STM32 ST-LINK Utility или через hex-редактор, кому как удобнее;
  • Если программатор не подключается, проверьте не перепутаны ли SWDIO и SWCLK;
  • . Не забываем сделать бэкап своей прошивки .
  • Подключаем приемник к программатору, программатор подключаем в USB. Должен замигать светодиод на приемнике;
  • Запускаем STM32 ST-LINK Utility, выставляем Size=0x8000, Data Width=8bit, жмем иконку со штепселем (connect);
  • При успешном подключении появится информация об устройстве в строке статуса и в окне справа, светодиод погаснет;
  • Сохраняем бэкап своей прошивки;
  • Открываем файл прошивки с RSSI, меняем по адресу 0x08001C00 RX ID на свой, сохраняем файл;
  • Прошиваем (иконка №6 блокнот с ручкой), в параметрах выставляем verify after programming.
  • На странице Receiver выставляем источник RSSI AUX10;
  • На странице OSD включаем RSSI;
  • В OSD лучше поднять порог warning для RSSI с 30 до 40.

Настройка Failsafe в аппаратуре FS-i6S

В Function/End points на ch3 (газ) выставляем первое значение в 120% (т.е. -120%);

В Function/Failsafe на ch3 выставляем -120% нажав кнопку Setup;

В Function/End points на ch3 обязательно возвращаем нормальное значение 100%.

Это единственный, известный мне, нормально работающий способ настройки FS на приемнике X6B (возможно и других). На других каналах, например переключения полетных режимов, такой способ настройки не подходит и FS не срабатывает.
Настройка FS на канал арминга не устраивает по причине дизарма в полете.

09.08.2018
По предварительным наблюдениям RSSI работает хорошо. Sig.S 10 = RSSI 90-99, Sig.S 9 = RSSI 80-90, и т.д. При сработке пищалки на аппе (Sig.S 4) RSSI плавает где-то в районе 25-35%. При RSSI 8-12% наблюдаются отвалы приемника.

05.09.2018
Протестил на дальность в полях. Антенны на аппе и приемнике стоковые, на приемнике торчат вверх под 45гр. к горизонту каждая. Макс. дальность 1452м, мин. RSSI 14%. RSSI на подлете плавало 16-25%, просадка из-за не оптимального положения антенн. На развороте RSSI поднялось до 52%, при курсе домой от 38% с возрастанием. Считаю, что RSSI работает адекватно, как и прогнозировалось по положению антенн.

Кривовато, но лучше чем выковыривать аналоговый rssi из под экрана.

“На других каналах, например переключения полетных режимов, такой способ настройки не подходит и FS не срабатывает.”

У меня на 5 канале всегда ФС был настроен… по такому же принципу.

п.с. за статью спасибо, закажу стм-программер тоже. РССИ с лрс не проблема, инжекция там есть, а вот без ЛРС через полётник не мог настроить… попробую так.

У меня на 5 канале всегда ФС был настроен… по такому же принципу.

У меня 6й канал, на нем не работает хоть застрелись. А на 5м у меня арминг.

Кривовато, но лучше чем выковыривать аналоговый rssi из под экрана.

Косяков я, пока, не заметил. Что касательно отвалов приемника при низком RSSI — так 30% RSSI это

Вам понравится:  Если емкостное сопротивление конденсатора при частоте 50 гц равно

10dB SNR, т.е. практически уже шум. Поэтому и порекомендовал warning на 40% устанавливать. По мере тестов в полях буду дополнять.

По failsafe: не понимаю прикола с 120 процентами, разве нельзя сделать чтобы при пропадании связи выщелкивался 5 канал? У меня так и на i6 и на evolution failsafe нормально срабатывает. Глянул код, там тупо отключается проверка целостности и запихивается в 10й аукс переменная обратно пропорциональная ошибке. В принципе передатчик и сам может такое делать, но на это будет тратиться один канал.

Прикол с -120% на ch3 в том, что при обрыве связи канал становится в 900 и четко срабатывает FS. Эта настройка сохраняется в приемнике и все отлично работает. Каналы 1,2 и 4 не пробовал — не вижу смысла.

На ch5 (арминг) FS срабатывает при настройке -100%. Но при этом мы получаем дизарм в полете, т.е. автореконнекта не будет. Чтобы попытаться поймать коптер — тумблер в положение дизарм, газ в ноль и снова арм, — слишком долго на малых высотах. А в условиях нестабильной связи это гарантированное втыкание в планету.

По поводу кода — не достатотчно знаний. На ch6 (полетные режимы), 7, 8 (свободные) и 9 (пищалка) заставить работать FS не удалось.

Я просто прошил аппу FlySky 6x на мод прошивку, iBus и на 14 канале появился RSSi, который точно работает. Да ток на iBus FS несрабатыват, на sBus работает, но эта не проблема в аппе все настраивается)

Прикол с -120% на ch3 …
На ch5 (арминг) FS срабатывает при настройке -100%. Но при этом мы получаем дизарм в полете, т.е. автореконнекта не будет.

А что мешает сделать +120 ?
У меня так на сколько помню, и ничего не мешает иметь ФС на полётном режиме 5… 😇

Я просто прошил аппу FlySky 6x на мод прошивку, iBus и на 14 канале появился RSSi

Для i6S мода прошивки нет, увы. Поэтому пришлось прошить приемник.

А что мешает сделать +120 ?

Пробовал и так, без толку. Может быть нужен именно 5й канал, ибо на 6м не работает никак. Попробую убрать арм с 5го на другой канал и проверить.

Пытаясь победить отсутствие failsafe по ibus на приемнике X6B пришел к такому решению: зашивается прошивка с rssi на aux10, потом в betaflight modes добавляю к failsafe еще один диапазон AUX10 (900-1025). Получаем режим failsafe при пропадании связи.

Может быть нужен именно 5й канал, ибо на 6м не работает никак. Попробую убрать арм с 5го на другой канал и проверить.

Поменял каналы местами, ch5 — полетные режимы, ch6 — арм. При любых настройках FS ch5 на аппе сработки FS нет.

Пытаясь победить отсутствие failsafe по ibus на приемнике X6B пришел к такому решению: зашивается прошивка с rssi на aux10, потом в betaflight modes добавляю к failsafe еще один диапазон AUX10 (900-1025). Получаем режим failsafe при пропадании связи.

Однако интересный вариант. Failsafe через ПК с отображением на OSD или просто дизарм?

Пробовал и так, без толку. Может быть нужен именно 5й канал, ибо на 6м не работает никак. Попробую убрать арм с 5го на другой канал и проверить.

не знаю… возможно это из-за изменений в прошивке (я не перепрошивал) по этому у меня полётные режимы на обоих приёмниках всегда настроены на 5 канале (ну и на остальных, и на нём же ФС по диапазону).

не знаю… возможно это из-за изменений в прошивке (я не перепрошивал) по этому у меня полётные режимы на обоих приёмниках всегда настроены на 5 канале (ну и на остальных, и на нём же ФС по диапазону).

Если вдруг решите перешить и увидите отличия, — значит у Вас удачная прошивка и хорошо бы ее допилить под RSSI. У меня на всех 3х прошивках (сток, FS по IBUS и RSSI) ведет себя одинаково.

Насчет удачной прошивки. Скачивал с гита рекомендуемую и сравнивал со слитой с приемника X6B, где не работает FS по iBUS. Отличие только одно — серийник. Так что нечего допиливать.

Жирный плюс рссишной прошивки это что на ней хоть с каким-то каналом что-то происходит при обрыве связи.

Жирный плюс рссишной прошивки это что на ней хоть с каким-то каналом что-то происходит при обрыве связи.

Это не плюс RSSI прошивки, у меня одинаково приемник реагирует на все прошивки. Хотя вовсю на рцгрупс ходят слухи о работающем FS по IBUS. Эту прошивку я пробовал, но безрезультатно.

Попробую систематизировать FS по своему X6B (моторстоп у меня по умолчанию):

  1. ch3 (канал газа), настройка FS на аппе -120%. Отключаю аппу (выдергиваю элемент питания) — канал=900, моторы стопятся, за исключением AIR MODE;
  2. ch5 (полетные режимы), настройка FS на аппе -100%. Отключаю аппу — канал=1000, включается STAB, моторы продолжают работать на последнем газу;
  3. ch6 (арминг), настройка FS на аппе -100%. Отключаю аппу — канал=1000, дизарм с таблицей статистики;
  4. ch7 (GPS RESCUE), настройка FS на аппе +100%. Отключаю аппу — канал=2000, включается GPS RESCUE.

Пытаясь победить отсутствие failsafe по ibus на приемнике X6B пришел к такому решению: зашивается прошивка с rssi на aux10, потом в betaflight modes добавляю к failsafe еще один диапазон AUX10 (900-1025). Получаем режим failsafe при пропадании связи.

Неправильная идея. Лучше от этого отказаться. Ради эксперимента дома обесточь аппаратуру и AUX10 не опустится до минимальных значений, а так и будет около 1900-2000.

Вам понравится:  Arpv lv12020 схема подключения

Неправильная идея. Лучше от этого отказаться. Ради эксперимента дома обесточь аппаратуру и AUX10 не опустится до минимальных значений, а так и будет около 1900-2000.

Все давным-давно проверено и работает как часы.

Тонкости и нюансы

\n

    \n
  • Шьется все это дело через программатор ST-Link v2. Купить можно на БГ или Али; \n
  • Предварительно для ST-Link v2 скачиваем и устанавливаем драйвера, STM32 ST-LINK Utility и обновление прошивки (по желанию). Для скачивания нужен email, на который придет ссылка на скачивание; \n
  • Подпаяться к приемнику удобнее одноконтактными разъемами типа dupont (от ардуино или компа) длинной 5-10см и сразу подать их на программатор; \n
  • Питание 3.3в лучше взять с программатора, подав на пин 3.3в приемника. Схема распайки на примере X6B ниже; \n
  • RX ID приемника — 4 байта по смещению 0x1C00. В новой прошивке их желательно заменить на свои, тогда не нужно будет биндить приемник по новой. Сделать это можно в самой STM32 ST-LINK Utility или через hex-редактор, кому как удобнее; \n
  • Если программатор не подключается, проверьте не перепутаны ли SWDIO и SWCLK; \n
  • . Не забываем сделать бэкап своей прошивки . \n

\n

\n

    \n
  • Подключаем приемник к программатору, программатор подключаем в USB. Должен замигать светодиод на приемнике; \n
  • Запускаем STM32 ST-LINK Utility, выставляем Size=0x8000, Data Width=8bit, жмем иконку со штепселем (connect); \n
  • При успешном подключении появится информация об устройстве в строке статуса и в окне справа, светодиод погаснет; \n
  • Сохраняем бэкап своей прошивки; \n
  • Открываем файл прошивки с RSSI, меняем по адресу 0x08001C00 RX ID на свой, сохраняем файл; \n
  • Прошиваем (иконка №6 блокнот с ручкой), в параметрах выставляем verify after programming. \n

\n

\n

    \n
  • На странице Receiver выставляем источник RSSI AUX10; \n
  • На странице OSD включаем RSSI; \n
  • В OSD лучше поднять порог warning для RSSI с 30 до 40. \n

\n

Настройка Failsafe в аппаратуре FS-i6S

В Function/End points на ch3 (газ) выставляем первое значение в 120% (т.е. -120%);

В Function/Failsafe на ch3 выставляем -120% нажав кнопку Setup;

В Function/End points на ch3 обязательно возвращаем нормальное значение 100%.

Это единственный, известный мне, нормально работающий способ настройки FS на приемнике X6B (возможно и других). На других каналах, например переключения полетных режимов, такой способ настройки не подходит и FS не срабатывает.
\nНастройка FS на канал арминга не устраивает по причине дизарма в полете.

09.08.2018
\nПо предварительным наблюдениям RSSI работает хорошо. Sig.S 10 = RSSI 90-99, Sig.S 9 = RSSI 80-90, и т.д. При сработке пищалки на аппе (Sig.S 4) RSSI плавает где-то в районе 25-35%. При RSSI 8-12% наблюдаются отвалы приемника.

05.09.2018
\nПротестил на дальность в полях. Антенны на аппе и приемнике стоковые, на приемнике торчат вверх под 45гр. к горизонту каждая. Макс. дальность 1452м, мин. RSSI 14%. RSSI на подлете плавало 16-25%, просадка из-за не оптимального положения антенн. На развороте RSSI поднялось до 52%, при курсе домой от 38% с возрастанием. Считаю, что RSSI работает адекватно, как и прогнозировалось по положению антенн.

Источник

Подключение аппаратуры удаленного управления FlySky (FS-i6 FS-iA6 FS-iA6B) к роботу на основе контроллера ESP32 (Arduino)

Удаленное управление роботом, актуальный вопрос, которого в то или иной степени касался каждый Конструктор роботов. Когда мой коллега, приобрел систему дистанционного управления FlySky, я отнесся к этому как к шагу назад, рассуждая, что мы и самостоятельно сможем делать подобные системы. Но, как показало время, создание качественных систем дистанционного управления непростая и недешевая задача. После того, как мы сделали и оттестировали один пульт на основе NRF24L01 и сконструировали несколько систем обмена информацией между роботами на основе данных модулей, я сделал вывод, что есть случаи, когда приобрести готовую систему дистанционного управления будет и дешевле и лучше/не хуже в эксплуатации.

Рисунок 1
В свое время также рассматривался вопрос удаленного управления по каналу Bluetooth («Мобильные роботы на базе Arduino»), это удобный и мало затратный способ, но имеет ряд ограничений:

  • малая дальность (до 10 метров) что вполне достаточно для помещений, но затрудняет или делает не возможным управление роботами квадрокоптерами или гоночными болидами и пр.;
  • низкая защита от помех, при зашумленности «эфира», возможны разрывы и «подтормаживания» соединений, что не страшно при связи с гарнитурой, но может привести робота к аварии;
  • удобство — управление с экрана смартфона или планшета не возможно без визуального контроля, т.е. нужно периодически смотреть на экран, ведь рычаги управления не имеют тактильной обратной связи, они просто нарисованы на экране.

И, в связи с наличием перечисленных мнений и ограничений, попытаюсь рассказать о способах подключения к контроллеру Arduino (на примере ESP32) аппаратуры удаленного управления Flysky, на примере FS-i6 (рис.2).

Рисунок 2. Аппаратура удаленного управления FS-i6
Аппаратура состоит из передатчика (FS-i6) и приемника (FS-iA6 или FS-iA6B). Передатчик на заводской прошивке может передавать до 6 значений от рычажков управления, какие из 10 рычажков будут задействованы, настраивается из меню передатчика. Довольно просто установить альтернативную прошивку, которая дает возможность задействовать одновременно все рычажки управления (я ее установил c https://github.com/qba667/FlySkyI6/releases ), но суть не в этом, и останавливаться на замене прошивки я не буду.
Для управления роботом потребуется как приемник, так и передатчик. Отличия приемников FS-iA6 и FS-iA6B в наличии у FS-iA6B дополнительной шины (bus) о которой поговорим ниже.
Передатчик FS-i6 пока отложим в сторону (как синхронизировать/связать приемник и передатчик ищем в других документах) и подробнее рассмотрим приемники, начнем с FS-iA6, он изображен на следующем рисунке.

Вам понравится:  Конденсатор для волос что это

Рисунок 3
Питание приемника осуществляется через верхний ряд контактов B/VCC, ряды CH1-CH6 , это выходы, и если питание с приемника брать не нужно, то потребуется использовать только левый столбец контактов, на которых приемник генерирует ШИМ сигнал с шириной импульса соответствующей положению рычажков на передатчике. Замечу, что генерация ШИМ-сигналов приемником, это отсыл к моделям, которые не имеют собственного микроконтроллера, и двигатели которых управляются непосредственно с пульта. Т.е. пульт подключается напрямую к сервомашинкам самолета, которые регулируют положение руля, подкрылков и …, я не специалист в области летательных аппаратов.
Но наши модели являются роботами, они имеют собственные микроконтроллер, который и должен обслуживать сигналы дистанционного управления. Для этого их нужно расшифровать, а конкретно в случае ШИМ сигналов нужно измерить длительность импульса в такте. Измеряем длину импульса в каждом интересующем нас канале и используем по назначению.
Простейший участок кода, отвечающий за обработку входных ШИМ последовательностей, выглядит следующим образом:
«Все листинги приведены для использования с контроллером ESP32».

Рисунок 5
Применяя функцию pulseIn(), поочередно измеряем длину импульса, на каждом GPIO к которому подключен ШИМ канал от приемника.
pulseIn() может применяться с двумя или тремя параметрами: первый – номер GPIO, второй –тип ожидаемого сигнала , третий – максимальное время ожидания. pulseIn() измеряет длину в микросекундах импульса на GPIO.
У вышеприведенного кода есть один существенный минус –считывание всех сигналов производится последовательно и возможно в разных циклах, что приводит нас к расчету максимальной задержки, которая равна сумме времени ожидания каждого вызова pulseIn().

Давайте попробуем исследовать сигналы не по очереди, а параллельно!
ESP32 быстрый контроллер, его частота 240МГц, и сильно оптимизировать код под него не нужно, хоть это возможно.
Разработаем алгоритм параллельного опроса GPIO в цикле с дискрецией 5мкСек. Сканируем GPIO в цикле, отлавливаем сигналы и измеряем их длину. Основная программа приведена ниже, а функция сканирования расположена в файле intpilt.h , там также описание всех сопутствующих переменных и прочее.

Рисунок 7
Листинг 1. Модуль intpult.h
#define PWMPOWERMIN 950 // Минимальное состоянние PWM управления от приемника
#define PWMPOWERMAX 2100 // Максимальное состояние PWM управления от приемника

#define MAXTIME 21000
#define MAXTIMECANAL 2100
#define pinCanal1 13
#define pinCanal2 14
#define pinCanal3 27
#define pinCanal4 26
#define DELTA 5 //Через сколько микросекунд начинается

bool Canal1, Canal2, Canal3, Canal4; bool ScanC1, ScanC2, ScanC3, ScanC4; bool flagCanal1, flagCanal2, flagCanal3, flagCanal4;
bool C1Err, C2Err, C3Err, C4Err, C5Err, CSErr; uint16_t Canal1Timeoff, Canal2Timeoff, Canal3Timeoff, Canal4Timeoff;
uint16_t Canal1Time, Canal2Time, Canal3Time, Canal4Time;
// Перед запуском: // 1. Поднимаем ScanC1=true // 2. Canal1Time = 0; // 3. Canal1Timeoff =0;
// 4. Canal1 = true; //На случай, если начали считывание с 1, нужн ждать пока она кончится
// 5. flagCanal1 = false; //Начало нормального импульса
void setup_CHANEL()
<
pinMode(pinCanal1, INPUT);
pinMode(pinCanal2, INPUT);
pinMode(pinCanal3, INPUT);
pinMode(pinCanal4, INPUT);
>

void ScanCHANEL()
<
uint32_t LERRUA;
ScanC1 = true; ScanC2 = true; ScanC3 = true; ScanC4 = true; Canal1Time = 0; Canal2Time = 0; Canal3Time = 0; Canal4Time = 0;
Canal1Timeoff = 0; Canal2Timeoff = 0; Canal3Timeoff = 0; Canal4Timeoff = 0; Canal1 = true; Canal2 = true; Canal3 = true; Canal4 = true;
flagCanal1 = false; flagCanal2 = false; flagCanal3 = false; flagCanal4 = false; C1Err = false; C2Err = false; C3Err = false; C4Err = false;
unsigned long tt, tectime, end_time;

tectime = micros();
end_time = tectime + MAXTIME + DELTA;
while ((tectime MAXTIMECANAL) <
C1Err = true;
ScanC1 = false;
>
>
else <
ScanC1 = false;
>
>
else //Если не поднят флаг расчет длины импульса
<
if (Canal1) //Если в канале 1, то мы в начале
<
Canal1 = digitalRead(pinCanal1);
>
else
<
Canal1 = digitalRead(pinCanal1);
if (Canal1)
<
Canal1Time = DELTA;
flagCanal1 = true;
>
else
<
Canal1Timeoff += DELTA; if (Canal1Timeoff > MAXTIME) ScanC1 = false; //Завершили
>
>
>
>
//============= C2
if (ScanC2) //Если поднято считывание с канала
<
if (flagCanal2) // Если поднят расчет длины импульса
<
Canal2 = digitalRead(pinCanal2);
if (Canal2) <
Canal2Time += DELTA;
if (Canal2Time > MAXTIMECANAL)
<
C2Err = true;
ScanC2 = false;
>
>
else
<
ScanC2 = false;
>
>
else //Если не поднят флаг расчет длины импульса
<
if (Canal2) //Если в канале 1, то мы в начале
<
Canal2 = digitalRead(pinCanal2);
>
else
<
Canal2 = digitalRead(pinCanal2);
if (Canal2)
<
Canal2Time = DELTA;
flagCanal2 = true;
>
else
<
Canal2Timeoff += DELTA; if (Canal2Timeoff > MAXTIME) ScanC2 = false; //Завершили
>
>
>
>
//===== C3
if (ScanC3) //Если поднято считывание с канала
<
if (flagCanal3) // Если поднят расчет длины импульса
<
Canal3 = digitalRead(pinCanal3);
if (Canal3) <
Canal3Time += DELTA;
if (Canal3Time > MAXTIMECANAL)
<
C3Err = true;
ScanC3 = false;
>
>
else
<
ScanC3 = false;
>
>
else //Если не поднят флаг расчет длины импульса
<
if (Canal3) //Если в канале 1, то мы в начале
<
Canal3 = digitalRead(pinCanal3);
>
else
<
Canal3 = digitalRead(pinCanal3);
if (Canal3)
<
Canal3Time = DELTA;
flagCanal3 = true;
>
else
<
Canal3Timeoff += DELTA; if (Canal3Timeoff > MAXTIME) ScanC3 = false; //Завершили
>
>
>
>
//===== C4
if (ScanC4) //Если поднято считывание с канала
<
if (flagCanal4) // Если поднят расчет длины импульса
<
Canal4 = digitalRead(pinCanal4);
if (Canal4) <
Canal4Time += DELTA;
if (Canal4Time > MAXTIMECANAL)
<
C4Err = true;
ScanC4 = false;
>
>
else
<
ScanC4 = false;
>
>
else //Если не поднят флаг расчет длины импульса
<
if (Canal4) //Если в канале 1, то мы в начале
<
Canal4 = digitalRead(pinCanal4);
>
else
<
Canal4 = digitalRead(pinCanal4);
if (Canal4)
<
Canal4Time = DELTA;
flagCanal4 = true;
>
else
<
Canal4Timeoff += DELTA; if (Canal4Timeoff > MAXTIME) ScanC4 = false; //Завершили
>
>
>
>
tt = micros();
while (tt

Теперь блок сканирования будет выполняться за время равное длине одного такта, 21 миллисекунд в нашем случае. Время уменьшено в 4 раза для 4х каналов, для 6 каналов, будет 6 раз соответственно.

Но, по-моему, все равно время велико!
Тратить 21 миллисекунду впустую тогда, когда наш контроллер мог бы производить полезные вычисления траектории робота или сканировать датчики, поэтому перейдем к рассмотрению приемника FS-iA6B.

А именно – добавляем адресные GPIO
Вот ка выглядит теперь основная программа:

Источник

Оцените статью
Частотные преобразователи
Adblock
detector