Доп.стоп сигнал для авто. Нужна помощь
- Войдите на сайт для отправки комментариев
Решил переделать доп. стопак на машине.
Видео работы стопака на страничке драйва
Страничка на драйве: https://www.drive2.ru/l/479934627574710567/
Есть некоторые проблеммы в программировании:
Есть кнопка которой можно переключать режим работы при этом после нажатия выбранный режим записывается в епром. При включении ардуино, считывается записаный в память номер режима и воспроизводится. Проблема в том что ардуино долго грузится и потключать концевик от педали тормоза к питанию контроллера будет не совсем правильно.
Как я понимаю при включенном зажигании устройство должно загрузиться и постоянно работать а по нажатию на педаль тормоза воспроизводить часть кода. Вот собственно и сам вопрос: Не знаю как правильно прописать это все дело и на какой порт принимать сигнал от педали тормоза (аналоговый или цифровой)?
За помощь за ранее спасибо.
Схема подключения.
собственно сам скетч
#include <EEPROM.h> int led1 = 3; int led2 = 9; int led3 = 5; int led4 = 6; int address = 0; byte value; //int buttonPin = 2; int val=EEPROM.read(0), stope=1; long previousMillis = 0; int buttonState = 0; long interval = 300; void setup() { Serial.begin(9600); pinMode (led1, OUTPUT); pinMode (led2, OUTPUT); pinMode (led3, OUTPUT); pinMode (led4, OUTPUT); digitalWrite(2, LOW); digitalWrite(4, LOW); attachInterrupt(0, buttonPin, CHANGE); while(!Serial); } void one() { while(stope==1) { digitalWrite(led1, HIGH); digitalWrite(led2, HIGH); digitalWrite(led3, HIGH); digitalWrite(led4, HIGH); delay(300); Serial.print(0); Serial.print("\t"); Serial.print(value, DEC); Serial.println(); if(Serial.available() > 0) Serial.parseInt(); } digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); EEPROM.write(0, 2); } void two() { while(stope==1) { digitalWrite(led3, HIGH); delay(300); digitalWrite(led1, HIGH); delay(300); digitalWrite(led4, HIGH); delay(300); digitalWrite(led2, HIGH); delay(300); Serial.print(0); Serial.print("\t"); Serial.print(value, DEC); Serial.println(); if(Serial.available() > 0) Serial.parseInt(); } digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); EEPROM.write(0, 3); } void one1() { while(stope==1) { digitalWrite(led1, HIGH); digitalWrite(led3, HIGH); digitalWrite(led2, LOW); digitalWrite(led4, LOW); delay(300); digitalWrite(led1, LOW); digitalWrite(led3, LOW); digitalWrite(led2, HIGH); digitalWrite(led4, HIGH); delay(300); Serial.print(0); Serial.print("\t"); Serial.print(value, DEC); Serial.println(); if(Serial.available() > 0) Serial.parseInt(); } digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); EEPROM.write(0, 4); } void lsnk() { while(stope==1) { digitalWrite(led3, HIGH); delay(800); digitalWrite(led1, HIGH); digitalWrite(led3, LOW); delay(800); digitalWrite(led4, HIGH); digitalWrite(led1, LOW); delay(800); digitalWrite(led2, HIGH); digitalWrite(led4, LOW); delay(800); digitalWrite(led2, LOW); if(Serial.available() > 0) stope = Serial.parseInt(); Serial.print(0); Serial.print("\t"); Serial.print(value, DEC); Serial.println(); if(Serial.available() > 0) Serial.parseInt(); } digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); EEPROM.write(0, 5); } void slsnk() { while(stope==1) { digitalWrite(led3, HIGH); delay(40); digitalWrite(led3, LOW); delay(40); digitalWrite(led3, HIGH); delay(40); digitalWrite(led3, LOW); delay(40); digitalWrite(led3, HIGH); delay(40); digitalWrite(led3, LOW); delay(40); digitalWrite(led3, HIGH); delay(40); digitalWrite(led3, LOW); delay(140); digitalWrite(led1, HIGH); delay(40); digitalWrite(led1, LOW); delay(40); digitalWrite(led1, HIGH); delay(40); digitalWrite(led1, LOW); delay(40); digitalWrite(led1, HIGH); delay(40); digitalWrite(led1, LOW); delay(40); digitalWrite(led1, HIGH); delay(40); digitalWrite(led1, LOW); delay(140); delay(40); digitalWrite(led4, LOW); delay(40); digitalWrite(led4, HIGH); delay(40); digitalWrite(led4, LOW); delay(40); digitalWrite(led4, HIGH); delay(40); digitalWrite(led4, LOW); delay(40); digitalWrite(led4, HIGH); delay(40); digitalWrite(led4, LOW); delay(140); digitalWrite(led2, HIGH); delay(40); digitalWrite(led2, LOW); delay(40); digitalWrite(led2, HIGH); delay(40); digitalWrite(led2, LOW); delay(40); digitalWrite(led2, HIGH); delay(40); digitalWrite(led2, LOW); delay(40); digitalWrite(led2, HIGH); delay(40); digitalWrite(led2, LOW); delay(140); if(Serial.available() > 0) Serial.parseInt(); } digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); EEPROM.write(0, 6); } void sdtd() { while(stope==1) { digitalWrite(led3, HIGH); delay(800); digitalWrite(led1, HIGH); digitalWrite(led3, LOW); delay(800); digitalWrite(led4, HIGH); digitalWrite(led1, LOW); delay(800); digitalWrite(led2, HIGH); digitalWrite(led4, LOW); delay(800); digitalWrite(led4, HIGH); digitalWrite(led2, LOW); delay(800); digitalWrite(led1, HIGH); digitalWrite(led4, LOW); delay(800); digitalWrite(led1, LOW); if(Serial.available() > 0) stope = Serial.parseInt(); Serial.print(0); Serial.print("\t"); Serial.print(value, DEC); Serial.println(); if(Serial.available() > 0) Serial.parseInt(); } digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); EEPROM.write(0, 7); } void long1() { while(stope==1) { for(int i=0; i<=255; i++){analogWrite(led3, i);delay(5);} for(int i=0; i<=255; i++){analogWrite(led1, i);delay(5);} for(int i=0; i<=255; i++){analogWrite(led4, i); delay(5);} for(int i=0; i<=255; i++){analogWrite(led2, i); delay(5);} for(int k=255; k>=0; k--){analogWrite(led3, k); delay(5);} for(int k=255; k>=0; k--){analogWrite(led1, k); delay(5);} for(int k=255; k>=0; k--){analogWrite(led4, k); delay(5);} for(int k=255; k>=0; k--){analogWrite(led2, k); delay(5);} if(Serial.available() > 0) stope = Serial.parseInt(); Serial.print(0); Serial.print("\t"); Serial.print(value, DEC); Serial.println(); if(Serial.available() > 0) Serial.parseInt(); } digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); EEPROM.write(0, 8); } void long2() { while(stope==1) { for(int i=0; i<=255; i++){analogWrite(led3, i);delay(25);} for(int i=0; i<=255; i++){analogWrite(led1, i);delay(25);} for(int i=0; i<=255; i++){analogWrite(led4, i); delay(25);} for(int i=0; i<=255; i++){analogWrite(led2, i); delay(25);} if(Serial.available() > 0) stope = Serial.parseInt(); Serial.print(0); Serial.print("\t"); Serial.print(value, DEC); Serial.println(); if(Serial.available() > 0) Serial.parseInt(); } digitalWrite(led1, LOW); digitalWrite(led2, LOW); digitalWrite(led3, LOW); digitalWrite(led4, LOW); EEPROM.write(0, 1); } void loop() { // считываем значение текущего байта EEPROM: value = EEPROM.read(0); Serial.print(0); Serial.print("\t"); Serial.print(value, DEC); Serial.println(); // перемещаемся к следующему байту EEPROM: address = 0; // EEPROM содержит всего 512 байтов (с 0 по 511), // поэтому, добравшись до 512-ой позиции, // снова переходим к самому первому, т.е. к 0-ому байту: if (address == 5) address = 0; delay(500); if(Serial.available() > 0) val = Serial.parseInt(); switch(val) { case 1:stope=1; one();break; case 2:stope=1; two();break; case 3:stope=1; one1();break; case 4:stope=1; long1();break; case 5:stope=1; long2();break; case 6:stope=1; lsnk();break; case 7:stope=1; slsnk();break; case 8:stope=1; sdtd();break; } } void buttonPin() { static unsigned long millis_prev; if(millis()-1000 > millis_prev) { stope=1; delay(50); val++; delay(50); stope=0; Serial.println(val); if(val==9) EEPROM.write(0, 1); } millis_prev = millis(); }
я бы не стал экспериментировать со стопярями, чем их больше и чем быстрее и ярчк они все светят, то лучше, а вся остальная светомузыка до добра не доведет.
я бы не стал экспериментировать со стопярями, чем их больше и чем быстрее и ярчк они все светят, то лучше, а вся остальная светомузыка до добра не доведет.
Это дополнительный стоп сигнал...
За слепящий мигающий стоп - хочется вынести стекло "горе-кулибину". Я спокойный, но не все же такие сдержанные.
Что за дурацкая тяга что-то приколхозить к своему авто? Не устраивает машина - купи другую...
За слепящий мигающий стоп - хочется вынести стекло "горе-кулибину". Я спокойный, но не все же такие сдержанные.
Что за дурацкая тяга что-то приколхозить к своему авто? Не устраивает машина - купи другую...
Действительно не устраивает люстра купи другую квартиру... Ну не удержался уж простите. Каждому свое вобщем...
Можно кинуть через цифровой .Нажал педаль включилось реле контакты перемкнулись вот тебе и обычная кнопка.
Только через ардуино не пускай 12 вольт а то что ненужно выгорит.
И что нужно тоже.
Можно кинуть через цифровой .Нажал педаль включилось реле контакты перемкнулись вот тебе и обычная кнопка.
ок на цифровой вход подключаю +12в от разьема стопака (или от концевика педали) через понижающий стабилизатор. В результате имеем 5в+ на входе например D8... а вот скетч как переписать чтобы при (+5)high на D8 включался цикл. Желательно еще и без повторной записи в епром ))???
А может вы словами опишете работу программы. А то я чего-то не понял что и как работает.
Ну здесь я помочь наверно не смогу.Я сам начинающий еще не знаю всех зависимостей программы и переписать наверно не смогу.
seregaeshka - так, как вы хотите, этот скетч работать не будет. Программа написана так, что пока она не отыграет очередную последовательность миганий - она на кнопки не реагирует. То есть вы нажали на тормоз - огонечки побежали. Через мгновение тормоз отпустили - а огонечки все равно бегут. - Как долго? - зависит от режима. Я вижу у вас есть режимы и по 3секунды. и почти 5... То есть один раз нажали на тормоз - 5 секунд цветомузыки без остановки.
Чтобы эта трахома включалась при нажатии на педаль и ГАСЛА при отпускании педали - программу надо полностью переписывать.
seregaeshka - так, как вы хотите, этот скетч работать не будет. Программа написана так, что пока она не отыграет очередную последовательность миганий - она на кнопки не реагирует. То есть вы нажали на тормоз - огонечки побежали. Через мгновение тормоз отпустили - а огонечки все равно бегут. - Как долго? - зависит от режима. Я вижу у вас есть режимы и по 3секунды. и почти 5... То есть один раз нажали на тормоз - 5 секунд цветомузыки без остановки.
Чтобы эта трахома включалась при нажатии на педаль и ГАСЛА при отпускании педали - программу надо полностью переписывать.
кейсы можно переписать и покороче дело не в том.... там большинство написано так для примера.... просто я не пойму как написать чтоб при сигнале на еще один вход ардуино например D8 также воспроизводился цикл....
ну вот например сейчас: есть кнопка мы ее жмем у нас 1 раз воспроизводится кэйс №1 ( в конце значение 1 пишетсся в память я чейка 0) если жмем еще раз то вопроизводится в торой кейс и пишется в епром 2.... и т.д.
Что мне сделать чтобы при сигнале +5в на любой свободный порт ардуино происходило тоже самое? (например я подключу 2 кнопку) на порт D8.
Во первых не использовать прерывание. Здесь прерывание это зло.
Во вторых у вас две кнопки . Одна для запуска мигания и остановки. А вторая для выбора програмы мигания.
В третих. Чем сложно работать на заказчика, тем что он как хозяин своего слова, всегда может эти слова поменять.
кейсы можно переписать и покороче дело не в том.... там большинство написано так для примера.... просто я не пойму как написать чтоб при сигнале на еще один вход ардуино например D8 также воспроизводился цикл....
ну вот например сейчас: есть кнопка мы ее жмем у нас 1 раз воспроизводится кэйс №1 ( в конце значение 1 пишетсся в память я чейка 0) если жмем еще раз то вопроизводится в торой кейс и пишется в епром 2.... и т.д.
Во-первых, дело не в том, чтобы "переписать покороче", а в том, чтобы написать по-другому. Так, чтобы воспроизведение одного кейса не блокировало всю программу. То есть все кейсы у вас написаны неправильно.
Ну а дальше - насчет кнопки - она у вас работает? Уверены? Вот вы включили кейс1, он начал мигать - что будет, если в середине кейса нажать кнопку, знаете? - НИЧЕГО. Кнопка не работает, пока кейс не кончится.
Вы все твердите про какую-то вторую кнопку. А это не главное. Главное - вам надо избавится от зависонов в программе. А когда избавитесь - все остальное можно будет сделать добавлением буквально пары строк - всего лишь заменить кнопку. что у вас сейчас есть - на выключатель тормоза.
1- К сожалению я не знаю как переписать по другому. ((
2- в принципе разницы нет будет работать вторая кнопка или нет пока не закончится кейс1.... Вот смотрите - Включаем, выбираем на кнопке № 1 режим например 4(4 раза клацаем кнопку №1 при это ждем пока все кейсы закончатся )) ) при этом у нас в епром записалось значение 4. При этом мы видем как выглядит каждый режим(кейс) при нажатии на кнопку№1. Потом на пример когда жмем на кн№2 наш кейс №4 воспроизводится....Что будет при нажатии 2х кнопок одновременно абсолютно не имеет значения для пользователя т.к. кн№1 у нас около задних коллонок авто а кн№2 это педаль тормоза ))) вобщем сложновато будет нажать 2 кнопки сразу.
3-кн№2 утрированное понятие я так называю сигнал от педали тормоза.... сейчас на выключатель тормоза нет ничего в том то и беда. Я не пойму просто как исправить код чтобы при получении сигнала на любой свободный порт контроллера с кнопки, от педали, или еще не важно откуда включался выбраный ранее кейс вот и все.
Я не пойму просто как исправить код чтобы при получении сигнала на любой свободный порт контроллера с кнопки, от педали, или еще не важно откуда включался выбраный ранее кейс вот и все.
это как раз проще простого, у вас уже есть нужный кусок в коде
Но только это вам мало поможет, так как код надо переписывать весь. Если вы действительно хотите это сделать сами - начните изучать программирование, это не сложно. Если вам нужен готовый продукт - лучше найдите знающего человека и заплатите денег.
я бы не стал экспериментировать со стопярями, чем их больше и чем быстрее и ярчк они все светят, то лучше, а вся остальная светомузыка до добра не доведет.
Полностью согласен!
Как эксперемент, обучение, наработка опыта - почему бы нет.
Как реальная реализация на авто - повылазят следующие проблемы (если уж будете ставить - заранее их решайте):
1. Проблемы по питанию (согласование 12-5В, защита от серьезных помех по питанию)
2. Неустойчивая работа при минусовых температурах.
3. Проблемы реализации "на столе" и в машине. Например от вибраций перестанет работать один из двух таких мигающих стопов и с зади один работающий примут за поворотнк - дальше мысль развивать?
Если уж хоченться выделиться - светодиодная надпись с зади вместо мигания аварийкой - СПАСИБО!
Вот ее можно переливать и зажигать как фантазии хватит! И на безопасности ПОЧТИ не скажеться!
seregaeshka - подумалось - а нафига вам брать сигнал с датчика под педалью? Это неудобно, да и провода придется через салон назад тянуть. Я бы подключился к стоп-сигналу в штатных фонарях авто.
b707 за код спс сегодня попробую
на счет педали это так - образно было сказано ))
#140
Вот сдесь грамотное решение по питанию ардуины от сети автомобиля - рекомендую.
http://arduino.ru/forum/apparatnye-voprosy/podklyuchenie-nano-k-bortovoi-seti-avtomobilya
Проблема в том что ардуино долго грузится
Проблема решается так:
1. подключить через программатор
2. залить свою программу.
Результат:
3. загрузчик ардуино удалён
4. ваша программа запускается сразу при включении питания.
М... да, посмотрел на этото "колхоз" и полностью согласен с коментариями !
доп стоп фонарь - должен привлекать внимание , а не утомлять постоянным миганием.
Особенно остро проблемма проявляется в "пробках" , в плохих погодных условиях .... и тд.
Проявите уважение к тем ,кто стоит или едет за вами!
предлагаю скетч :https://yadi.sk/d/R1E2d3eC3RzwZd
В котором реализован :
1 эфект мигания в стиле F1 (если пауза между нажатиями не превышает 35 секунд , то повторного мигания не происходит , просто "доп фонарь" дублирует стоповые фонари.
2 При вкл. повороте реализован эфект "бегущий огонь".
3 при вкл. "авария" огоньки бегут навсречу друг другу.
4 при вкл. "задним ходом" прерывистое мигание.
входы : А0, А1,А2,А3 (сигналы от ламп тормоза, поворотов и заднего хода)
выходы : Pin 2 - Pin 13, А4,А5 ( 14 светодиодов )
если возникнут вопросы задавайте
если возникнут вопросы задавайте
у меня вопрос - это реклама? Если да - нафига она здесь?
А если хочется поделится своим опытом - есть раздел "Проекты", где люди выкладывают свои поделки, со схемами и с кодом, чтоб каждый мог повторить. Бесплатно.
огребете вы по полной при первом же ДПСнике за такой стопе... у вас видимо лишние 5000р и права запасные есть....
первый раз здесь. не знал про раздел "проекты"
корыстные цели не преследую.
если заметили скетч передоставлен бесплатно и по всем вопросам мзду брать не буду!
схема работает на макетке , как установлю в фонарь выложу в раздел.
Доброй ночи,ардуинщики!У меня есть такой скетч:
1. вы влезли в чужую тему.
это плохо.
создайте свою.
2. опубликуйте отформатированный код по правилам форума.
3. здесь программы помогают написать тем, кто что то сам сделал.
4. в разделе "Ищу исполнителя" могут написать за денежку.
Когда-то лепил себе на рассыпухе параллельную цепь на стопы (машина с автоматической коробкой!!):
при отпускании педали газа стопы зажигаются примерно на 0,5 секунды.
Считаю полезной.
Когда-то лепил себе на рассыпухе параллельную цепь на стопы (машина с автоматической коробкой!!):
при отпускании педали газа стопы зажигаются примерно на 0,5 секунды.
Считаю полезной.
Интересная идея! Не лишена рационального зерна. Надо будет при случае реализовать.
https://yadi.sk/d/NK97toRM98l8QA
скетч написан на FLprog для заднего доп .стоп фонаря :
при торможении эфект F1
при вкл поворотах , загорание светодиодов (16шт.) последовательно в сторону поворота
задний ход - мигание
аварийка - встречное направление вкл. светодиодов
доп стоп фонарь состоит из 16 светодиодов
Скетч в IDE
https://yadi.sk/d/oUaIx1YrQR4z0w