Поиск по этому блогу

12 апр. 2021 г.

Бегущий поворотник, дхо

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

Статья не моя внизу скину ссылку на первоисточник.
Схема построена на МК Ардуино, в этом нет ничего сложного.
 Очень интересная конструкция которая позволяет сильно преобразить Ваши поворотники. Для питания нужен преобразователь 12 => 5 вольт.



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

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

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

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

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

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

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

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

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

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

Весь код я оставлю ниже
#include <adafruit_NeoPixel.h> // подключаем библиотеку
Adafruit_NeoPixel strip = Adafruit_NeoPixel(7, 7, NEO_GRB + NEO_KHZ800); //Инициализируем первый поворотник 7 диодов на 7 цифровом выходе
Adafruit_NeoPixel strip2 = Adafruit_NeoPixel(7, 8, NEO_GRB + NEO_KHZ800);//Инициализируем второй поворотник 7 диодов на 8 цифровом выходе
void setup()
{
pinMode(3, INPUT);
pinMode(4, INPUT);
pinMode(5, INPUT);
pinMode(6, INPUT);
strip.begin();
strip.show();
strip2.begin();
strip2.show();
}
void loop()
{
{
if ((digitalRead(5) == HIGH) and (digitalRead(6) == HIGH))
{
//Режим аварийной сигнализации, если на 5 и 6 пин приходит плюс
for(int k = 0; k < 3; k++)
{
// цикл до трех — сигнал «перестроения», при кратковременном включении мигает 3 раза,
for(int i = 0; i < 8; i++)
{
for(int j = 0; j < i; j++)
{
if ((digitalRead(5) == HIGH) and (digitalRead(6) == HIGH))
{
k = 0; // если во время мигания поворотника получаем еще плюсовой сигнал, то обнуляем счетчик, чтобы поворотник мигал еще как минимум 3 раза
}
strip.setPixelColor(j, strip.Color(255, 69, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(j, strip2.Color(255, 69, 0)); // R=255, G=0, B=0 — цвет светодиода
}
delay(60);
strip.show();
strip2.show();
}
for(int i = 0; i < 10; i++)
{
for(int j = 0; j < i; j++)
{
// в этом цикле плавно тушим предыдущий светодиод, делаем его наполовину тусклее, чтобы движение было плавнее
strip.setPixelColor(j-2, strip.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
strip.setPixelColor(j-1, strip.Color(63, 17, 0)); // R=255, G=0, B=0 — цвет светодиода
strip.setPixelColor(j, strip.Color(127, 34, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(j-2, strip2.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(j-1, strip2.Color(63, 17, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(j, strip2.Color(127, 34, 0)); // R=255, G=0, B=0 — цвет светодиода
}
delay(60);
strip.show();
strip2.show();
}
}
}

if (digitalRead(5) == LOW and digitalRead(6) == HIGH)
{
// включается один поворотник
for(int k = 0; k < 3; k++)
{
// цикл до трех — сигнал «перестроения», при кратковременном включении мигает 3 раза,
for(int i = 0; i < 8; 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)); // R=255, G=0, B=0 — цвет светодиода
}
delay(60);
strip.show();
}
for(int i = 0; i < 10; i++)
{
for(int j = 0; j < i; j++)
{
// в этом цикле плавно тушим предыдущий светодиод, делаем его наполовину тусклее, чтобы движение было плавнее
strip.setPixelColor(j-2, strip.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
strip.setPixelColor(j-1, strip.Color(63, 17, 0)); // R=255, G=0, B=0 — цвет светодиода
strip.setPixelColor(j, strip.Color(127, 34, 0)); // R=255, G=0, B=0 — цвет светодиода
}
delay(60);
strip.show();
}

}
}
if (digitalRead(5) == HIGH and digitalRead(6) == LOW)
{ // включаем второй поворотник
for(int k = 0; k < 3; k++)
{
// цикл до трех — сигнал «перестроения», при кратковременном включении мигает 3 раза,
for(int i = 0; i < 8; 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)); // R=255, G=0, B=0 — цвет светодиода
}
delay(60);
strip2.show();
}
for(int i = 0; i < 10; i++)
{
for(int j = 0; j < i; j++)
{
// в этом цикле плавно тушим предыдущий светодиод, делаем его наполовину тусклее, чтобы движение было плавнее
strip2.setPixelColor(j-2, strip2.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(j-1, strip2.Color(63, 17, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(j, strip2.Color(127, 34, 0)); // R=255, G=0, B=0 — цвет светодиода
}
delay(60);
strip2.show();
}
}
}
if (digitalRead(3) == HIGH)
{
// режим спец сигналов, если на 3 пин подаем плюс
for(int j = 0; j < 16; j++)
{
for(int i = 0; i < 7; i++)
{
strip.setPixelColor(i, strip.Color(255, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(i, strip2.Color(0, 0, 255)); // R=255, G=0, B=0 — цвет светодиода
}
strip.show();
strip2.show();
delay(20);
for(int i = 0; i < 7; i++)
{
strip.setPixelColor(i, strip.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(i, strip2.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
}
strip.show();
strip2.show();
delay(20);
}
for(int j = 0; j < 16; j++)
{
for(int i = 0; i < 7; i++)
{
strip.setPixelColor(i, strip.Color(0, 0, 255)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(i, strip2.Color(255, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
}
strip.show();
strip2.show();
delay(20);
for(int i = 0; i < 7; i++)
{
strip.setPixelColor(i, strip.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(i, strip2.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
}
strip.show();
strip2.show();
delay(20);
}
}
if (digitalRead(4) == HIGH)
{
// Режим стробоскопа, если на 4 пин подаем питание
for(int j = 0; j < 24; j++)
{
for(int i = 0; i < 7; i++)
{
strip.setPixelColor(i, strip.Color(255, 255, 255)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(i, strip2.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
}
strip.show();
strip2.show();
delay(15);
for(int i = 0; i < 7; i++)
{
strip.setPixelColor(i, strip.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(i, strip2.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
}
strip.show();
strip2.show();
delay(15);
}
for(int j = 0; j < 24; j++)
{
for(int i = 0; i < 7; i++)
{
strip.setPixelColor(i, strip.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(i, strip2.Color(255, 255, 255)); // R=255, G=0, B=0 — цвет светодиода
}
strip.show();
strip2.show();
delay(15);
for(int i = 0; i < 7; i++)
{
strip.setPixelColor(i, strip.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
strip2.setPixelColor(i, strip2.Color(0, 0, 0)); // R=255, G=0, B=0 — цвет светодиода
}
strip.show();
strip2.show();
delay(15);
}
}
if( digitalRead(3) == LOW and digitalRead(5) == LOW and digitalRead(6) == LOW and digitalRead(9) == LOW)
{
for(int i = 0; i < 8; i++)
{
// Зажигаем ходовые огни, если нет ни одного сигнала
strip.setPixelColor(i, strip.Color(255, 255, 255));
strip2.setPixelColor(i, strip2.Color(255, 255, 255));
}
strip.show();
strip2.show();
}
}
}

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

По типу таких

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

Ссылка на первоисточник: >>>

Комментариев нет:

Отправить комментарий

Создайте свой комментарий.