Плавный розжиг ws2812b. нужна помощь.

Тема в разделе "Arduino & Shields", создана пользователем mozanenko, 26 май 2020.

  1. mozanenko

    mozanenko Нуб

    Решил сделать себе дхо. В ардуино полный 0. По примерам чуть разобрался. Что сделал почти устраивает, не могу понять как сделать. Что бы при подачи на Pin7 высокого уровня (включение дхо) они не просто включались а плавно разжигались. Заранее спасибо за ответы.

    Код (C++):
    #include <Adafruit_NeoPixel.h>             // подключаем библиотеку
    Adafruit_NeoPixel strip = Adafruit_NeoPixel(5, 2, NEO_GRB + NEO_KHZ800); //Инициализируем первый поворотник 5 диодов на 2 цифровом выходе
    Adafruit_NeoPixel strip2 = Adafruit_NeoPixel(5, 3, NEO_GRB + NEO_KHZ800);//Инициализируем второй поворотник 5 диодов на 3 цифровом выходе



    void setup()
    {
      pinMode(4, INPUT);
      pinMode(5, INPUT);
      pinMode(6, INPUT);
      pinMode(7, INPUT);
      strip.begin();
      strip.show();
      strip2.begin();
      strip2.show();


    }
    void loop()
    {
     
       {
        if ((digitalRead(5) == HIGH) and (digitalRead(6) == HIGH))
        {
          //Режим аварийной сигнализации
          for(int k = 0; k < 2; k++)
          {
             for(int i = 0; i < 6; i++)
          {
              for(int j = 0; j < i; j++)
              {
                if ((digitalRead(5) == HIGH) and (digitalRead(6) == HIGH))
                {
                  k = 0;
                }
                strip.setPixelColor(j, strip.Color(255, 69, 0));
                strip2.setPixelColor(j, strip2.Color(255, 69, 0));
              }
              delay(5);
              strip.show();
              strip2.show();
            }
            for(int i = 0; i < 6; i++)
            {
              for(int j = 0; j < i; j++)
              {
               
                strip.setPixelColor(j, strip.Color(0, 0, 0));
                strip2.setPixelColor(j, strip2.Color(0, 0, 0));
           
              }
              delay(5);
              strip.show();
              strip2.show();
            }
          }
        }
                 
        if (digitalRead(5) == LOW and digitalRead(6) == HIGH)
        {
          // включается один поворотник
          for(int k = 0; k < 2; k++)
          {
            for(int i = 0; i < 6; i++)
            {
              for(int j = 0; j < i; j++)
              {
                if ((digitalRead(5) == LOW) and (digitalRead(6) == HIGH))
                  {
                    k = 0;
                  }
                  strip.setPixelColor(j, strip.Color(255, 69, 0));
              }
              delay(100);
              strip.show();
            }
            for(int i = 0; i < 6; i++)
            {
              for(int j = 0; j < i; j++)
              {
               
                strip.setPixelColor(j, strip.Color(0, 0, 0));
             
              }
              delay(50);
              strip.show();
            }
             
          }
        }
        if (digitalRead(5) == HIGH and digitalRead(6) == LOW)
        { // включаем второй поворотник
          for(int k = 0; k < 2; k++)
          {
             for(int i = 0; i < 6; i++)
            {
              for(int j = 0; j < i; j++)
              {
                if ((digitalRead(5) == HIGH) and (digitalRead(6) == LOW))
                {
                  k = 0;
                }
                strip2.setPixelColor(j, strip2.Color(255, 69, 0));
              }
              delay(100);
              strip2.show();
            }
            for(int i = 0; i < 6; i++)
            {
              for(int j = 0; j < i; j++)
              {
             
                strip2.setPixelColor(j, strip2.Color(0, 0, 0));
               
              }
              delay(50);
              strip2.show();
            }
          }
        }
     
        if (digitalRead(4) == HIGH and digitalRead(7) == HIGH)
        {
          for(int i = -1; i < 6; i++)
          {
            for(int j = -1; j < i; j++)
            {
            // Зажигаем габариты
            strip.setPixelColor(j, strip.Color(60, 60, 40));
            strip2.setPixelColor(j, strip2.Color(60, 60, 40));
           
          }
          delay(20);
          strip.show();
          strip2.show();
          }
         
       
        }
       if (digitalRead(7) == HIGH and digitalRead(4) == LOW)
        {
          for(int i = -1; i < 5; i++)
          {
            for(int j = -1; j < i; j++)
            {
            // Зажигаем дхо
            strip.setPixelColor(i, strip.Color(255, 255, 255));
            strip2.setPixelColor(i, strip2.Color(255, 255, 255));
           
          }
          delay(20);
          strip.show();
          strip2.show();
          }
        }
        if( digitalRead(4) == LOW and digitalRead(5) == LOW and digitalRead(6) == LOW and digitalRead(7) == LOW )
        {
          for(int i = -1; i < 5; i++)
          {
            for(int j = -1; j < i; j++)
            {
         
            // выключено все, если нет ниодного сигнала
            strip.setPixelColor(i, strip.Color(0, 0, 0));
            strip2.setPixelColor(i, strip2.Color(0,0, 0));
           
          }
          strip.show();
          strip2.show();
          delay(20);
          }
        }
      }
    }
     
  2. parovoZZ

    parovoZZ Гуру

    На авто? ОНО ТАМ РАБОТАТЬ НЕ БУДЕТ. ЗАБУДЬ.
     
  3. SergeiL

    SergeiL Оракул Модератор

    А если все стоит внутри фары? Корпус фары может быть и из металла.
    Почему не будет работать?
     
  4. parovoZZ

    parovoZZ Гуру

    Магнитным помехам пофигу на металл.
    Корпус фары из металла? УАЗ что-ле?
     
  5. SergeiL

    SergeiL Оракул Модератор

    А что есть опыт?
    Пустые слова не приветствуются...
     
  6. Airbus

    Airbus Радиохулиган Модератор

    Все можно.Только зачем там Ардуино?Зачем плавный розжиг ДХО?Я на девятку делал плавный розжиг ближенго и совсем без Ардуино—работает.
     
    SergeiL нравится это.
  7. Airbus

    Airbus Радиохулиган Модератор

    Это типа Лехоус или Ауди с бегущими огнями на поворотниках.А чо на шахе самое то будет!
     
  8. SergeiL

    SergeiL Оракул Модератор

    Ну все же мы были молодыми, хотелось что-то затюнинговать. Почему нет? ;)
     
  9. parovoZZ

    parovoZZ Гуру

    Как лента WS2812 ловит помехи? У меня 15 метров дома натянуто. 448 светодиодов. Писал об этом здесь
    http://forum.amperka.ru/threads/450-ws2812-на-attiny1614-и-немного-кода.20663/
    Так вот при выключении трансформаторного блока питания происходит сбой передачи данных. Благо у меня лента обновляется очень быстро, поэтому напрягает не сильно.
     
  10. parovoZZ

    parovoZZ Гуру

    Для ДХО вроде даже есть какие-то нормы. 2812 по яркости для ДХО не подходят.
     
  11. b707

    b707 Гуру

    оно там не будет работать в первую очередь потому, что у ТС код из одних делеев... а он хочет на основе этого делать поворотники.
    Ну а в двух последних циклах еще и индексы диодов в ленте - отрицательные...