Адресная лента

Тема в разделе "Arduino & Shields", создана пользователем sanya0017, 4 окт 2018.

  1. sanya0017

    sanya0017 Нуб

    Здравствуйте. Пытаюсь сделать такую штуку:
    Имеется адресная лента на 14 диодов, она должна вся гореть белым цветом на низкой яркости и периодично вспыхивать рандомными диодами на максимальной яркости.
    Второй пункт я сделал, а вот как сделать так, чтобы ярким был только вспыхивающий диод - не пойму...
    P.S. Fastled
     
  2. ostrov

    ostrov Гуру

    Рандомно выбирается конкретный диод и вспыхивает именно он. В программе есть возможность обращаться к каждому конкретному диоду по номеру. В чем проблема то?
     
  3. parovoZZ

    parovoZZ Гуру

    Да не, в библе fastled похитрее. У меня дома код лежит. Так на память не помню.
     
  4. AlessandrIT

    AlessandrIT Гик

    Поддерживаю.ТС, давайте посмотрим на ваш код?Я не знаю как можно было найти грабли по пути решения столь простой задачи.
     
  5. ostrov

    ostrov Гуру

    Да хоть на чем. Улетает пакет по n-бит на пиксель, в зависимости от типа ленты и все. Главное правильно этот пакет приготовить.
     
  6. AlessandrIT

    AlessandrIT Гик

    Ну хз.Приготовить пакет проще чем приготовить обед.Хотя может от умений зависит...
     
  7. parovoZZ

    parovoZZ Гуру

    В фастлед пакет готовится на лету. Там непосредственная адресация не приветствуется. Если 1024 светика? Никакой ОЗУ не хватит.
     
  8. sanya0017

    sanya0017 Нуб

    Да не, рандомно диодами моргать я могу) у меня вопрос, как сделать так, чтобы все остальные при этом горели на минимальной яркости). Но это уже не проблема, я сделал на neo pixel. Я начинающий в ардуино, ничего не смыслю) Мне проще аналогово собрать, чем написать код, но увы, такого я собрать не смогу.
    Вот как получилось)
    Код (C++):
    #define PIN 12      
    #define NUM_LEDS 14
    #include <Adafruit_NeoPixel.h>
    Adafruit_NeoPixel strip = Adafruit_NeoPixel(NUM_LEDS, PIN, NEO_GRB + NEO_KHZ800);
    void setup()
    {
    strip.begin();
    strip.setBrightness(255);
    strip.clear();
    strip.show();
    }
    void loop()
    {
    for (int j = 0; j < NUM_LEDS; j++ ) {
    strip.setPixelColor(j, 0x111111);
    strip.show();
    delay(1);}
    int i=random(0,14);
    strip.setPixelColor(i, 0xffffff);
    strip.show();
    delay(30);
    strip.setPixelColor(i, 0x000000);
    strip.show();
    delay(30);
    strip.setPixelColor(i, 0xffffff);
    strip.show();
    delay(30);
    strip.setPixelColor(i, 0x111111);
    strip.show();
    delay(600);
    }
    Задача поменялась, нужно сделать эффект перелива (не знаю как объяснить), что-то типа перелива блёсток на солнце.
     
    Последнее редактирование: 4 окт 2018
  9. ostrov

    ostrov Гуру

    Если ws2812 то светить начинают с 8 что ли или с 12 не помню, но сразу заметно так, минимум у них мощный. Перелив можно найти в примерах библиотеки.
     
  10. sanya0017

    sanya0017 Нуб

    да, минимум мощный, заметил) но это не критично. Если не сложно, можете дать ссылочку на примеры?
     
  11. ostrov

    ostrov Гуру

    К библиотеке они в комплекте идут.
     
  12. sanya0017

    sanya0017 Нуб

    не нашел там такого эффекта
     
  13. AlessandrIT

    AlessandrIT Гик

    Файл - Примеры или Образцы.
     
  14. iSeven

    iSeven Нуб

    Есть шикарное и готовое решение - McLighting