Все те, кто видел более менее современную и машину не во второй раз, а если еще и было дело проехался за рулем, уже давно отметил для себя одну из полезных опций… Именуют ее в народе ленивый поворотник или вежливый указатель поворота. Вся ее суть сводится к тому, что при повороте направо или налево водитель лишь единожды прикасается к рычагу указателя поворота, при этом без фиксации. То есть просто дает сработать цепи указателя поворотников, но не включает этот самый переключатель. В итоге после того как рычаг отпущен, указатели поворотов срабатывают еще 3-4 раза, а водитель в это время уже может заниматься «своими делами», то есть всецело отдаться дороге. Опция весьма полезная, когда приходится перестраиваться по полосам. Ведь при полном включении рычага указателей поворотов, автоматического отключения не произойдет, в связи с незначительным углом поворота руля, а значит надо будет тыкаться туда- обратно самим указателем или постоянно поддерживать его рукой на грани включения, дабы имитировать работу указателя поворотов. А если такая опция есть, то просто чуть коснулся рычага и забыл. В общем мы думаем, суть работы раскрыли в полной мере, теперь же стоит упомянуть о возможно реализации такой опции на своей машине.

Для каких электрических схем подойдет вежливый поворотник на Arduino

 Прежде чем пуститься во все тяжкие по поводу производства вежливого поворотника, необходимо понять, для каких электрических схем подключения он подойдет без доработки электрической схемы в автомобиле.
 Здесь нам представляются два основных различных по принципу варианта. Первый, когда поворотники включаются при  подключении их в качестве нагрузки. То есть включение происходит за счет коммутации цепи ламп указателей поворота, в которой стоит и сам рычаг указателей поворота, именно он и замыкает цепь, после чего и происходит срабатывание. В этом случае использовать наш вариант не получится, так как при размыкании рычагом цепи с лампами, мы сразу отключаем возможность световой индикации, даже если на сам рычаг и будет приходить сигнал, то дальше он просто не уйдет.
  Второй вариант  именно наш, когда есть управляющие сигналы и есть выходняе силовые сигналы. В этом случае вместо штатной релюшки можно поставить как раз схему, которую мы и хотели бы предложить вашему вниманию.

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

Скетч и схема ленивого (вежливого) указателя поворота на Arduino

 Итак, о применении Arduino в качестве головного устройства в качестве ленивых поворотников можно поспорить, так как это тоже не совсем идеальное решение, имеющее свои минусы. Скажем необходимо будет постоянное питание после включения зажигания, дабы обеспечить быстродействие, необходимо будет подключение силовых цепей. При этом сама обвязка из лишних радиодеталей здесь в принципе ни к чему, ведь в этом случае можно запрограммировать просто микроконтроллер и применять только его. Но этот минус является и плюсом, ведь позволить программировать Ардуино может себе каждый, у кого он есть, а для микроконтроллеров потребуется еще и программатор.
 Как раз написание программы и будет одной из самых сложных задач. Здесь новичку придется потратить не один час своего свободного времени и изучения работы алгоритмов, но благо есть интернет и есть мы. Поэтому вот скетч.

int switchPinR=8;
int switchPinL=7;

int ledPinR=11;
int ledPinL=12;

boolean ledOn = false;
int i=0;
int z=0;

void setup() {
// put your setup code here, to run once:

pinMode(switchPinR, INPUT);
pinMode(switchPinL, INPUT);
pinMode(ledPinR, OUTPUT);
pinMode(ledPinL, OUTPUT);

Serial.begin(9600);

}

void loop() {
// put your main code here, to run repeatedly:


//2
label:
if (digitalRead(switchPinR) == HIGH && digitalRead(switchPinL) == HIGH)

{
digitalWrite(ledPinR, HIGH);
digitalWrite(ledPinL, HIGH);

i=0;
while (i<7) {
ledOn = !ledOn;
digitalWrite(ledPinR, ledOn);
digitalWrite(ledPinL, ledOn);
delay(400);
i++;
z++;
if (digitalRead(switchPinL) == LOW && digitalRead(switchPinR) == LOW && z>=7) { break; }
}
}
else
{
digitalWrite(ledPinR, LOW);
digitalWrite(ledPinL, LOW);
z=0;
}

//зацикливание аварийки
if (digitalRead(switchPinR) == HIGH && digitalRead(switchPinL) == HIGH)

{goto label;}


//Правый поворотник.
if (digitalRead(switchPinR) == HIGH)

{
digitalWrite(ledPinR, HIGH);

i=0;
while (i<7) {
ledOn = !ledOn;
digitalWrite(ledPinR, ledOn);
delay(400);
i++;
z++;
if (digitalRead(switchPinR) == LOW && z>=7) { break; }
}
}
else
{
digitalWrite(ledPinR, LOW);
z=0;
}

//Левый поворотник.
if (digitalRead(switchPinL) == HIGH)

{
digitalWrite(ledPinL, HIGH);

i=0;
while (i<7) {
ledOn = !ledOn;
digitalWrite(ledPinL, ledOn);
delay(400);
i++;
z++;
if (digitalRead(switchPinL) == LOW && z>=7) { break; }
}
}
else
{
digitalWrite(ledPinL, LOW);
z=0;
}
}

}

Вкратце можно резюмировать, что в скетче имеется 2 входа и 2 выхода. При этом при входе положительного, то есть высокого уровня сигнала на входе (8,7), мы получаем определенное количество морганий (z или i) на соответствующем выходе (11,12). Если кратко, то как-то так. То есть если вы захотите что-то поменять в скетче относительно количества морганий и выходов входов, то обратите внимание именно на эти переменные. Если необходимо будет изменить длину морганий, то ваше внимание должно быть приковано к функции delay.
 Еще одной особенностью программы является несколько необычный выход на аварийную сигнализацию. Вначале отрабатывают левый и правый указатель, затем включается и аварийная световая сигнализация. Связано это с тем, что она может включиться только при условии высокого входа одновременно на входе 8 и 7. А это условие исполнится только на второй цикл, ведь нажать одновременно две кнопки разом не получится просто физически. Быстродействие микроконтроллера позволит считать высокий выход с какой-то кнопки быстрее и решит, что это все-таки условие срабатывания указателя поворота, а не аварийная сигнализация. Хотя не стоит об этом заморачиваться, разве что сказать спасибо на дороге будет проблематично.

Особенности подключения в автомобиле ленивого (вежливого) указателя поворота на Arduino

 Не стоит использовать в качестве выхода контакт 13, так как при каждом включении выключении питания, возможно мерцание указателей, которые будут подключены к этому выходу.
 При переходе от управляющих сигналов к силовым используйте соответствующие блоки купленные в интернете или собранные вами. Про такие блоки – модули мы уже рассказывали.
 При получении сигнала 1 от напряжения 12 вольт, поставьте перед входом резистор в 10 Ком.

Вот собственно и все напутствия при изготовлении ленивого указателя поворота для машины на микроконтроллере Arduino, а теперь о том же самом в видео...

Комментарии  

#2 Владимиру 19.08.2020 01:38
Ну видимо это решается установкой резисторов после ламп, чтобы можно было снять положительный потенциал, а там по нему контролировать, что лампа еще цела, когда будет приходить положительный сигнал.
#1 Владимир 19.08.2020 01:26
Штатная система поворотов имеет функцию контроля ламп. В вашей версии такой нет.