Бегущий поворотник на WS2812B своими руками - YouTube

Бегущие поворотники на arduino

Заметил что тема про динамические поворотники, довольно популярная в интернете. Вот и я решил приобщится к ней и внести свой вклад. Выбор пал на контроллер arduino Digispark так как он не дорого стоит, имеет маленькие габариты, минимум обвязки и не прихотлив. К тому же у меня уже есть опыт работы с Digispark ATtiny85

В качестве светодиодной ленты для тестов я использовал светодиодное кольцо на 24 пикселя, на нем установлены такие же как и на ленте светодиоды ws2812b.

 

Схема бегущих, динамических поворотников

Я думаю что рано или поздно, все производители автомобилей перейдут на светодиодную индикацию. Так как она имеет много преимуществ
1 – Почти не греется
2 – Мало потребляет энергии
3 – Имеет меньшие габариты
4 – Не требует специфической оптики
5 – Можно использовать один светосигнальный элемент для всех световых сигналов

Скетч для Arduino Digispark
В директивах #define можно менять настройки таймингов, если не нравятся предустановленные настройки.

#include 

/*
#define pause_dark 17 // задержка между пикселями при затухании
#define pause_light 17 // задержка между пикселями при загорании
#define delay_dark 200 // задержка затухания всей ленты
#define delay_light 200 // задержка свечения всей ленты

#define pause_dark 0 // задержка между пикселями при затухании
#define pause_light 20 // задержка между пикселями при загорании
#define delay_dark 250 // задержка затухания всей ленты
#define delay_light 100 // задержка свечения всей ленты
*/

#define pause_dark 10 // задержка между пикселями при затухании
#define pause_light 20 // задержка между пикселями при загорании
#define delay_dark 300 // задержка затухания всей ленты
#define delay_light 50 // задержка свечения всей ленты

#define num_pixel 24 // число пикселей в ленте
#define led_pin 4   // пин к которому подключена светодиодная лента
#define brightness 255 //яркость ленты
Adafruit_NeoPixel pixelink = Adafruit_NeoPixel(num_pixel, led_pin, NEO_GRB   NEO_KHZ800);

void setup()
{
  pinMode(0, INPUT_PULLUP); //Пин для подключения кнопки
  pinMode(1, INPUT_PULLUP); //Пин для подключения кнопки  
  pinMode(2, INPUT_PULLUP); //Пин для подключения кнопки

  pixelink.begin();
  pixelink.setBrightness(brightness); 
  pixelink.show(); 
}

void loop()
{
 if(digitalRead(0) == LOW) turn_light();
 if(digitalRead(1) == LOW) stop_light(); 
 if(digitalRead(2) == LOW) police_light();
 if(analogRead(3) < 30 ) parking_light();

 //test_port(analogRead(3));
}

//================================================
void turn_light()
{  
   fill_strip(255,92,0,pause_light);
        delay(delay_light); 
   fill_strip(0,0,0,pause_dark);
        delay(delay_dark);
}

//================================================
void stop_light()
{  
   set_strip(255,0,0);
     fill_strip(92,0,0,60);    
        fill_strip(255,0,0,20);
          
   if(digitalRead(1) == HIGH)
    { 
      fill_strip(0,0,0,10);
    }
}

//================================================
void police_light()
{  
  for (int j = 0; j < 4; j  )
  {
    set_strip(255,0,0);
    delay(50); 
    
   set_strip(0,0,0);
     delay(50);
  }

delay(200);
  for (int j = 0; j < 4; j  )
  {
    set_strip(0,0,255);
    delay(50); 
    
    set_strip(0,0,0);
    delay(50);
  }
delay(200);
}

//================================================
void parking_light()
{  
   fill_strip(255,255,255,30);
     while(analogRead(3) < 30){}
   fill_strip(0,0,0,30);
}

//================================================
void fill_strip(uint8_t red, uint8_t green, uint8_t blue, uint8_t pix_pause)
{  
   for (uint8_t i = 0; i < num_pixel; i  )
   {
      pixelink.setPixelColor(i, red, green, blue);
      pixelink.show();
      delay(pix_pause);
   }   
}     

//================================================
void set_strip(uint8_t red, uint8_t green,uint8_t blue)
{  
   for (uint8_t i = 0; i < num_pixel; i  )
   {
     pixelink.setPixelColor(i, red, green, blue);
   }   
   pixelink.show();
}  
/* реверс  
   for (int i = num_pixel-1; i > -1 ; i--)
    {
      pixelink.setPixelColor(i, 0, 0, 0);
      pixelink.show();
      delay(5);
    }
*/
//================================================
void test_port(int analog)
{  

 if(analog < 10) analog=1; else analog=analog/10;
   for (int i = 0; i < analog; i  )
   {
      pixelink.setPixelColor(i, 64, 64, 64);
    }
      pixelink.show();
      delay(100);
      set_strip(0,0,0);
}

 

Очень интересная конструкция которая позволяет сильно приобразить Ваши поворотники. Для питания нужен преобразователь 12 => 5 вольт.
Можно использовать обазную зарядку для мобилки.

Полный размер
Можно такой

Для меня лучше подойдет скрытый вариант, который оставит место для других потребителей.

Стоит меньше долара

Для построение чудо поворотника необходимо: 4 резистора 100 кОм и 4 резистора 47 кОм, сама ардуино, а также отрезки адресной светодиодной ленты ws2812b(обычная не подойдет)

Схема подключения

Для соединения вхес елементов в целое необходима пайка, я думаю с этим проблем не будет, схему подключить так чтобы напряжение на схему поступало от включения «зажигания».

Плюсовой провод от действующих поворотников подключаются к 5 и 6 контакту контроллера через делитель напряжения из резисторов. Аналогичным образом подключаются кнопки для дополнительных режимов работы контроллера

Прошивка контоллера
Для прошивки необходим usb кабель и компьютер, ноутбук.

НОВЫЙ скетч, в котором количество диодов меняется переменно count качайте тут.

Скачать готовый скетч в файле можете по этой ссылке.

Для работы с пиксельными светодиодами нужна будет библиотека . Установить ее можно будет следующим образом: Скетч -> Подключить библиотеку -> Управлять библиотеками. Далее в меню поиска ввести название библиотеки Adafruit_NeoPixel.h и нажать кнопку установить.

Как прошить ардуино, уже существует тысячи прекрасных постов поэтому я оставлю ссылку где подробно все расписано.

Весь код я оставлю ниже

Я думаю что лучше будет смотрется с силиконовыми каналами

По типу таких

Поворотник станет еще более плавным и приятным.
Осталось дело за страшным сном — разборка фары )
Если вам понравится думаю иногда выкладывать подобные посты.
Ну а на сегодня у меня все. Всем добра)
Видео работы:

 

Привет всем самодельщикам! Сегодня рассмотрим один из множества вариантов применения светодиодной ленты типа WS2812B на адресуемых RGB-светодиодах. Такие ленты (как и отдельно монтируемые светодиоды WS2812B) можно использовать для подсветки фона «Ambilight» мониторов компьютера а также телевизоров, светодинамической подсветки в автомашине, картины, фоторамки, аквариума и так далее. Широко применяются разработке дизайне любых помещений, в форме новогодних иллюминаций или световых шоу. Использование светодиодной ленты типа WS2812В дает возможность получить большое количество интересных проектов.

Светодиод WS2812B представляет собой RGB-светодиод вставленный в один корпус с чипом WS2801.

ТЕМАТИЧЕСКИЕ ИНСТРУМЕНТЫ И МАТЕРИАЛЫ:

Алюминиевый канал для светодиодных лент
Светодиодная лента WS2812B
Эластичная лента
Очень яркие светодиодные полоски для ваших проектов
Набор червячных хомутов
Диммер для светодиодных лент, 12 В, 24 В, 8 А, 30 А
Светодиодные ленты — разноцветные и RGB
Светодиодное кольцо WS2812
Самоклеящаяся светонакопительная лента
Лента для склейки шлифовальных лент
Backit ePN

Сам светодиод WS2812B представляет собой SMD элемент предназначенный для поверхностного монтажа. Внутри светодиод состоит из кристаллов красного света (red), зеленого света (green) и синего света (blue) кристаллов, находящихся в одном корпусе. С помощью этого светодиода можно получить большое ранообразие цветовых оттенков светового излучения.

Управление RGB-светодиода происходит через плату микроконтроллера Arduino.
Получил я от китайцев светодиодную ленту WS2812B.Она представляет собой отрезок длиной 1 метр с количеством светодиодов -144 штуки. Давно хотел попробовать для разных экспериментов. С помощью библиотек для Ардуино- Adafruit Neopixel и Fast led можно получить массу очень необычных световых эффектов. Но далее решил попробовать сделать динамические поворотники для автомобиля в так называем «стиле Ауди».Применять на практике эту схему я у себя пока не стал(как примут наши гиббддешники?) ,но эффект получился конечно очень привлекательный.

В роли контроллера управления светодиодной лентой служит плата Arduino Uno можно использовать и другие платы- Arduino Nano, Arduino Pro mini).
Весь процесс посмотреть в видео:

Перечень инструментов и материалов.
-плата Arduino Uno;
— понижающая плата 12В5В на 3А;
— резисторы 100Ком-4шт;
-резисторы 47Ком-4шт;
— резисторы 500Ом-1шт;
-кнопки (для имитации включения сигналов) -4шт;
-макетная плата
-отвертка;
лабораторный блок питания
-паяльник;
-кембрик;
-тестер.
-соединительные провода.

Шаг первый. Сборка схемы.

Собрал схему с помощью макетной платы (бредборда). Резисторы подключенные к цифровым входами Ардуино нужны для преобразования входных сигналов автомобиля с 12-ти до 5 вольт. Резистор 500 Ом для защиты линии управления светодиодной ленты WS2812B.

В качестве преобразователя с 12В на 5В использовал готовую плату с Алиэкспресс. Можно применить любой преобразователь с подходящими параметрами. Преобразователь нужен для стабильного питания Ардуино и светодиодной ленты WS2812B.

Шаг второй. Программирование Ардуино.

 СкетчПрошивка [2.14 Kb] (скачиваний: 2053)

Цифровые входы платы Ардуино №3,4 служат для включения левого и правого поворота. Пин №5 –включение стоп сигнала, пин №6 –включение заднего хода. Пин №8 –управляющий сигнал лентой WS2812B.

В среде Arduino IDE загружаем скетч (ссылка выше). Два варианта скетча-один для передней части автомобиля, другой – для задней. Используйте какой вам нужен. В начале скетча можно выставить нужное вам количество светодиодов. Так же можно откорректировать скорость поворотников соответственно вашему авто. Еще можно изменить яркость светодиодов параметром strip.Color(103,31,0) –менять первые две цифры от 0 до 255. То есть можно немного поэкспериментировать.

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

Фото в работе.

Неплохой эксперимент получился с этой конструкция выходного дня. Было интересно своими руками сделать и запрограммировать данную схему. Сделать самостоятельно такой прибор по силам начинающему без больших затрат времени и финансов.

Попутно световые эффекты с этой лентой(из библиотек Adafruit Neopixel и Fast led)
Фото с световыми эффектами.

На весь работу пошло один выходной вечер, всю электронику брал на Алиэкспресс. Остальные комплектующие у меня были в наличии. На базе платформы Ардуино можно собирать множество разнообразных полезных устройств.

Всем желаю удачи и успехов в жизни и творчестве!