1. Уважаемый Гость! При написании вопросов в раздел форума [ArduCopter] Вопросы, проблемы и решения обязательно придерживаться шаблона сообщения, оговоренного в правилах раздела! Если сообщение не будет оформлено должным образом, то и ответ на вопрос будет с наименьшим приоритетом. Старайтесь дать максимально полную информацию по вашей проблеме, чтобы можно было более детально рассматривать вопрос!
    Скрыть объявление
  2. Уважаемый Гость! Хотите получать кэшбэк с покупок в online-магазинах? Сервис "Zozi.ru" дает такую возможность!
    Скрыть объявление
  3. Друзья! Для нашего ресурса необходим дополнительный объем пространства в облаке Dropbox. Подробнее.
    Скрыть объявление

Подсветка для коптера

Тема в разделе "[ Другое оборудование для РУ моделей ]", создана пользователем Santei, 19 мар 2015.

Реклама. Купить это место.
  1. Marksheider

    Marksheider Научный сотрудник

    Регистрация:
    1 дек 2016
    Сообщения:
    332
    Город:
    Прокопьевск
    Имя:
    Артем
    Ну что последний вариант на сегодня. сделал что смог, Это первая моя программа в жизни написанная мной.

    У меня почему то при миганием белым цветом он мерцает, но если оставить всего 1 канал то он горит ярко без мерцания. Что с этим можно сделать?

    Код:
    #include <Adafruit_NeoPixel.h>             // подключаем библиотеку
    
    
    #define PIN_1 6 // Это выход #6, куда подключено управление лентой.
    #define PIN_2 3
    #define PIN_3 5
    #define PIN_4 9       
    
    #define NUMPIXELS 16                            //Число светодиодов в ленте
    
    Adafruit_NeoPixel strip_1 = Adafruit_NeoPixel(NUMPIXELS, PIN_1, NEO_GRB + NEO_KHZ800);
    Adafruit_NeoPixel strip_2 = Adafruit_NeoPixel(NUMPIXELS, PIN_2, NEO_GRB + NEO_KHZ800);
    Adafruit_NeoPixel strip_3 = Adafruit_NeoPixel(NUMPIXELS, PIN_3, NEO_GRB + NEO_KHZ800);
    Adafruit_NeoPixel strip_4 = Adafruit_NeoPixel(NUMPIXELS, PIN_4, NEO_GRB + NEO_KHZ800);
    
    void setup() {
    
      strip_1.begin();
      strip_1.show();
      strip_2.begin();
      strip_2.show();
      strip_3.begin();
      strip_3.show();
      strip_4.begin();
      strip_4.show();
    
    }
    
    void loop() {
     
    for (int i = 0; i < 8; i++)
    
       {
    
        strip_1.setPixelColor(i, strip_1.Color(255, 0, 0)); //Задний стоп сигнал
       
        strip_1.show();
    
       }
       for (int i = 8; i < 16; i++)
    
       {
    
        strip_1.setPixelColor(i, strip_1.Color(0, 0, 255)); //правая задняя подсветка
       
        strip_1.show();
    
       }
    //////////////////////////////////////////////////////////////////   
    for (int i = 8; i < 16; i++)
    
       {
       
        strip_2.setPixelColor(i, strip_2.Color(255, 0, 0)); //Задний стоп сигнал
       
        strip_2.show();
    
       }
       for (int i = 0; i < 8; i++)
    
       {
    
        strip_2.setPixelColor(i, strip_2.Color(0, 0, 255)); //левая задняя подсветка
       
        strip_2.show();
    
       }
    ///////////////////////////////////////////////////////////////
       for (int i = 8; i < 16; i++)
    
       {
       
        strip_4.setPixelColor(i, strip_4.Color(0, 255, 0)); //Передние фары
       
        strip_4.show();
    
       }
       for (int i = 0; i < 8; i++)
    
       {
    
        strip_4.setPixelColor(i, strip_4.Color(0, 0, 255)); //левая передняя подсветка
       
        strip_4.show();
    
       }
    ///////////////////////////////////////////////////////////////////
       for (int i = 8; i < 16; i++)
    
       {
       
        strip_3.setPixelColor(i, strip_3.Color(0, 0, 255)); //Передние фары
       
        strip_3.show();
    
       }
       for (int i = 0; i < 8; i++)
    
       {
    
        strip_3.setPixelColor(i, strip_3.Color(0, 255, 0)); //левая передняя подсветка
       
        strip_3.show();
    
       }
    ////////////////////////////////////////////////////////////////////
    //Мигаем крайними светодиодами
    ////////////////////////////////////////////////////////////////////
    
       if (round(millis()/500)% 5==0) {//Скорость мигания послежних 2 светодиодов
       
        for (int i = 0; i < 2; i++){
    
        strip_1.setPixelColor(i, strip_1.Color(255, 255, 255));// Зажигаем 2 крайних светика белым с зади
       
        strip_1.show();
       
       }
       for (int i = 12; i < 16; i++)
    
        {
    
        strip_1.setPixelColor(i, strip_1.Color(0, 255, 0));// Зажигаем 4 крайних светика зеленым с права
       
        strip_1.show();
       
       }
       for (int i = 14; i < 16; i++)
    ///////////////////////////////////////////////////////////////////////////////
        {
    
        strip_2.setPixelColor(i, strip_2.Color(255, 255, 255));// Зажигаем 2 крайних светика белым с зади
       
        strip_2.show();
       
       }
       for (int i = 0; i < 4; i++)
    
        {
    
        strip_2.setPixelColor(i, strip_2.Color(0, 255, 0));// Зажигаем 2 крайних светика зеленым с лева
       
        strip_2.show();
       
       }
       ////////////////////////////////////////////////////////////////////////
       for (int i = 14; i < 16; i++)
    
        {
    
        strip_4.setPixelColor(i, strip_4.Color(255, 255, 255));// Зажигаем 2 крайних светика белым с переди
       
        strip_4.show();
       
       }
       for (int i = 0; i < 4; i++)
    
        {
    
        strip_4.setPixelColor(i, strip_4.Color(0, 255, 0));// Зажигаем 2 крайних светика зеленым с лева
       
        strip_4.show();
       
       }
       /////////////////////////////////////////////////////////////////
       for (int i = 12; i < 16; i++)
    
        {
    
        strip_3.setPixelColor(i, strip_3.Color(0, 255, 0));// Зажигаем 2 крайних светика белым с переди
       
        strip_3.show();
       
       }
       for (int i = 0; i < 2; i++)
    
        {
    
        strip_3.setPixelColor(i, strip_4.Color(255, 255, 255));// Зажигаем 2 крайних светика зеленым с права
       
        strip_3.show();
       
       }
       }
       
    
       
    
    }
    --- Сообщения объединены, 28 апр 2017 ---
     
  2. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.137
    Город:
    Реж
    Имя:
    Тимур
    Вот чёрт, у них ещё и своя библиотека подключается!
    Лиха беда - начало! Вроде смотрю все проблемы решены уже.
    Видео смотрится только на самом Ютубе - немного неудобно ("по требованию автора видео не воспроизводится на других сайтах" - можно изменить в настройках канала).
    Смотрел видео - там вспышки происходят белым цветом.
    А если горит ярко, без мерцания - это имеется ввиду, что скетч неизменный, если просто выдернуть линейки светодиодов?
    Может где-то в скетч принудительно нужно вставить тушение светиков
    (strip_ .setPixelColor(i, strip_ .Color(0, 0, 0)); )
    В смысле белый должен как моргать - на выключение или на другой цвет?

    И ещё, что-то мне показалось подозрительным в конце:
    - там всё правильно? Может в скобках нужно было написать strip_4.setPixelColor?
     
  3. Marksheider

    Marksheider Научный сотрудник

    Регистрация:
    1 дек 2016
    Сообщения:
    332
    Город:
    Прокопьевск
    Имя:
    Артем
    Дак как бы вроде и получилось и в то же время получилось не так как задумывалось. По логике должен был не мерцать а все время мерцания просто гореть белым с переди и с зади а по бокаи зеленым но он почему то мерцает. А сейчас даже нравится начинает, как вспышки стробоскоба получаются.

    По логике да ошибочка конечно. но с ней все равно работает как надо. Хотя сегодня посмотрю перепроверю.
    Получилось что белый цвет горит мерцая, как стробоскоп, а должен был просто мигать, Когда программа была написана для одного канала то белый цвет очень ярко зажигался на секунду и гас без всякого мерцания, а когда дописал оставшиеся 3 канала начал мерцать. посмотрите предыдущее видео в этой теме.
     
  4. 5yoda5

    5yoda5 Master Команда форума

    Регистрация:
    29 янв 2015
    Сообщения:
    7.137
    Город:
    Реж
    Имя:
    Тимур
    Пересмотрел. На первом видео горящие красным светики вспыхивают белым, потом опять зажигаются красным.
    На втором видео (с коптером) - вроде то же самое поведение - горящие фоновым цветом (сзади красным, спереди зеленым) светики вспыхивают белым, потом переключаются на фоновый.
    Кстати, как вариант "подчеркнуть" вспыхивания - два крайних светика можно сначала тушить в ноль, а лишь потом зажигать белым, и перед включением в фоновый режим - тоже можно "тушить". Это акцентирует внимание на вспышках.

    По "мерцать".
    Возможно, я чего-то не вижу, или просто чего-то не понимаю.
    Возможно, поможет ответ на вопрос - сколько потребляет одна линейка светодиодов? Или там своё питание? Просто, я где-то читал, что Мегу по цифровому выходу можно грузить не более 100-140 миллиампер (кто знает точно, пусть меня поправит). Я делал внешние индикаторы арминга и GPS, специально мерял токопотребление светиков, только после измерения я запитал их напрямую от Меги. А если бы ток был большой - то пришлось бы драйверы для светиков придумывать.
     
  5. Marksheider

    Marksheider Научный сотрудник

    Регистрация:
    1 дек 2016
    Сообщения:
    332
    Город:
    Прокопьевск
    Имя:
    Артем
    светики запитаны от отдельного преобразователя на 5 вольт. как и ардруинка от этого же преобразоватяля. а от меги большой нагрузки не требуется . там сами светики работают как сдвиговый регистр в коротый загоняются данные по одному проводку. и уже схема усановленная в каждом светодиоде управляет цветами и яркостью.
     
  6. Блок

    Блок Абитуриент

    Регистрация:
    22 июн 2017
    Сообщения:
    8
    Город:
    Новомосковск
    Имя:
    Никита
    Уважаемые форумчане. Прошу, ткните носом где найти информацию. На свой квадрокоптер установил подсветку лучей, но подключил напрямую от аккума. Очень хочу чтобы она включалась через кнопку на пульте дистанционного управления. Аппаратура Флайскай ай6. Как это сделать?
     
    Последнее редактирование модератором: 22 июн 2017
  7. raefa

    raefa Главнокомандующий Команда форума

    Регистрация:
    3 янв 2015
    Сообщения:
    4.324
    Город:
    Zhigulevsk
    Имя:
    Александр
    Вариантов три:
    1) Полностью надеяться на штатную функцию APM и ее поведение. Ссылку найдете в HOW-TO.
    В этом случае отключать полностью не сможете, но подсветка будет давать информативную индикацию арминга, gps, батареи...
    2) Использовать функцию APM Relay и транзисторный ключ.
    Тут сможете управлять с пульта от отдельного канала.
    3) Использовать так называемый RC-switch. Это может быть как самодельное устройство, так и покупное. Смысл в том, чтобы преобразовать ШИМ-сигнал в вкл/выкл.
    Тут контроллер не задействован и управление с пульта.

    Так же для информации перечитайте эту тему.
     
  8. Блок

    Блок Абитуриент

    Регистрация:
    22 июн 2017
    Сообщения:
    8
    Город:
    Новомосковск
    Имя:
    Никита
    мне очень нравится второй вариант! Хочу управлять 6-ым каналом. Транзистор уже есть, схему собрать проблем нет, а вот как быть с настройкой в MissionPlaner? где там что настраивать? и к какому выводу APM подключаться?
    Понимаю, вопросов куча, но хочу все знать))
     
  9. raefa

    raefa Главнокомандующий Команда форума

    Регистрация:
    3 янв 2015
    Сообщения:
    4.324
    Город:
    Zhigulevsk
    Имя:
    Александр
  10. Блок

    Блок Абитуриент

    Регистрация:
    22 июн 2017
    Сообщения:
    8
    Город:
    Новомосковск
    Имя:
    Никита
    Раефа Вы царь и бог! Спасибо, теперь есть что покурить!!!
     
  11. Блок

    Блок Абитуриент

    Регистрация:
    22 июн 2017
    Сообщения:
    8
    Город:
    Новомосковск
    Имя:
    Никита
    К сожалению моя аппаратура 6-и канальная(( а реле можно вешать только на 7 и 8 каналы...обидно
    Остается только 3-ий вариант, управление через RC-switch
     
  12. raefa

    raefa Главнокомандующий Команда форума

    Регистрация:
    3 янв 2015
    Сообщения:
    4.324
    Город:
    Zhigulevsk
    Имя:
    Александр
    Ничего не мешает 6й канал аппаратуры подключить на 7 канал APM.
     
  13. Блок

    Блок Абитуриент

    Регистрация:
    22 июн 2017
    Сообщения:
    8
    Город:
    Новомосковск
    Имя:
    Никита
    да это бы прямо меня спасло! Не подскажите как?
     
  14. raefa

    raefa Главнокомандующий Команда форума

    Регистрация:
    3 янв 2015
    Сообщения:
    4.324
    Город:
    Zhigulevsk
    Имя:
    Александр
    В чем проблема то? Читаете мануал на свою аппаратуру и связываете переключатель с 6 каналом. На приемнике находите CH6, подключаете его на Inputs 7 APM. Соответственно сделать перекалибровку аппаратуры в MP. При калибровке проверять, что двигается соответствующая шкала. Далее настраиваете Relay.
     
  15. Блок

    Блок Абитуриент

    Регистрация:
    22 июн 2017
    Сообщения:
    8
    Город:
    Новомосковск
    Имя:
    Никита
    Александр, неясен 1 момент, а имеено вот этот: "На приемнике находите CH6, подключаете его на Inputs 7 APM."
    это в МР надо сделать? не могу найти найти там эту функцию
    --- Сообщения объединены, 23 июн 2017 ---
    кажется до меня дошло...тоесть сам провод с шестого канала надо перекинуть на седьмой?
     
  16. Блок

    Блок Абитуриент

    Регистрация:
    22 июн 2017
    Сообщения:
    8
    Город:
    Новомосковск
    Имя:
    Никита
    Александр спасибо за помощь! Работает!
     
    5yoda5 нравится это.
Реклама. Купить это место.