Комфортные поворотники) Срочность высокая...
- Войдите на сайт для отправки комментариев
Втр, 26/05/2020 - 13:23
Для профи не должно составить никакого труда.
Два входа (подтянуты к +)... При появлении логического ноля на одном из входов продолжительностью менее 500мс (в идеале изменяемый параметр) на одном из выходов появляется логическая единица с продолжительностью 2000мс (в идеале изменяемый параметр), если в течении этого времени ноль появляется на этом или другом входе то все сбрасывается к начальному состоянию.
К сожалению несколько переоценил свои силы и железе все уже собрано (Arduino Nano, Pin4 - вход левого поворота, Pin5 - вход правого поворота, Pin11 - выход левого поворота, Pin12 - выход правого поворота)
тыщ 5 за риск.
Надеялся отделаться дошиком и бутылкой балтики 7))))) А если серьезно, то пожалуй подожду более лояльных исполнителей. Так как надеялся рубля в 2-3 уложиться. А в чем риск, если не секрет?)
Два входа (подтянуты к +)... При появлении логического ноля на одном из входов продолжительностью менее 500мс (в идеале изменяемый параметр) на одном из выходов появляется логическая единица с продолжительностью 2000мс (в идеале изменяемый параметр), если в течении этого времени ноль появляется на этом или другом входе то все сбрасывается к начальному состоянию.
Странный алгоритм... или описываете не точно.
Обычно "быстрые поворотники" делают три мырга при кратком замыкании контакта. а не включаются на 2 сек на постоянку
Моргает пускай уже сам автомобиль, вклиниваемся только в проводку с рычажка) по факту эти 2 секунды как раз и выльются в 3 "мырга"
вклиниваемся только в проводку с рычажка)
вот в этом и риск.
Бармалей, твой выход. Ты хде?
В железе все сделано и работает (пара транзисторов, два диода и немного резисторов) проблема чисто в софте
вот в этом и риск.
да ладно, пусть это будут его проблемы :)
тыщ 5 за риск.
Ну судя по всему желающих сделать дешевле нет. Вы можете озвучить сроки?
если никто не возьмется, то я могу помочь. fridgetester@mail.ru
Надеялся отделаться дошиком и бутылкой балтики 7))))) А если серьезно, то пожалуй подожду более лояльных исполнителей. Так как надеялся рубля в 2-3 уложиться. А в чем риск, если не секрет?)
4 т.р.
до выходных будет программа и настольная "демка" .
Ну судя по всему желающих сделать дешевле нет.
Дело не в цене, поверьте.
Если вы, как говорите. пробовали сделать это сами - лучше выложите в Песочнице свой код и напишите, что не работает. Вполне возможно, что вам помогут это сделать абсолютно бесплатно.
На самом деле, вы просто сами не знаете чего хотите. Если делать по вашему ТЗ, то первое мигание вы получите только спустя пол секунды после нажатия на кочергу... Очень комфортный поворотник :) Если делать используя вменяемую логику, то будет как то так...
Есть в этом г..коде один нюанец, пока умолчу о нем. Кстати код не проверен. Проверьте , если заработает - оплатите, как себе :) brokly(at)mail.ru
25 строчка есть равно i=i^1 я прально понял?
Можно и XOR , можно и (++i)&1. Думаешь XOR будет быстрее ? ;)
25 строчка есть равно i=i^1 я прально понял?
На самом деле, вы просто сами не знаете чего хотите. Если делать по вашему ТЗ, то первое мигание вы получите только спустя пол секунды после нажатия на кочергу... Очень комфортный поворотник :) Если делать используя вменяемую логику, то будет как то так...
Само физическое нажатие на рычажок тоже считается, поэтому логику я описал вполне корректно. Команды штатно проходят в BCM в обход arduino. МК нужен только для того чтобы создавать задержку
К сожалению логика в вашем коде несколько иная(
На самом деле, вы просто сами не знаете чего хотите. Если делать по вашему ТЗ, то первое мигание вы получите только спустя пол секунды после нажатия на кочергу...
если следовать желанию заказчика
При появлении логического ноля на одном из входов продолжительностью менее 500мс
реализация механизма представляется в виде тактовой кнопки.
время появления первых миганий будет равно времени удержания нажатой кнопки (не более 0.5 сек)
поэтому время до появления реакции на нажатие всегда будет менее полсекунды и зависит от скорости отпускания нажатой кнопки.
Можно и XOR , можно и (++i)&1. Думаешь XOR будет быстрее ? ;)
В твоей конструкции получается i равняется либо 0 либо 255 и мы берём от неё только нулевой бит и получаем на выходе либо 0 либо 1 , пральна?
В моей конструкции будет то-же самое, либо 0 либо 1 при каждой итерации. Пральна?
Жаль что нет бармалея скифа.
500р. htpicc@gmail.com
Можно и XOR , можно и (++i)&1. Думаешь XOR будет быстрее ? ;)
В твоей конструкции получается i равняется либо 0 либо 255 и мы берём от неё только нулевой бит и получаем на выходе либо 0 либо 1 , пральна?
В моей конструкции будет то-же самое, либо 0 либо 1 при каждой итерации. Пральна?
ребята, будьте проще. В этом коде и
прокатит, все равно МК спит от безделья...
Подозреваю, кстати. что все наши варианты после оптимизации дадут один и тот же код
Подозреваю, кстати. что все наши варианты после оптимизации дадут один и тот же код
В любом случае отличия будут ничтожны. Это я так "поприколу" накарябал.
Для профи не должно составить никакого труда.
Два входа (подтянуты к +)... При появлении логического ноля на одном из входов продолжительностью менее 500мс (в идеале изменяемый параметр) на одном из выходов появляется логическая единица с продолжительностью 2000мс (в идеале изменяемый параметр), если в течении этого времени ноль появляется на этом или другом входе то все сбрасывается к начальному состоянию.
К сожалению несколько переоценил свои силы и железе все уже собрано (Arduino Nano, Pin4 - вход левого поворота, Pin5 - вход правого поворота, Pin11 - выход левого поворота, Pin12 - выход правого поворота)
Итак. Появившийся импульс длительностью менее 500мс, мы можем зафиксировать только по окончании ипульса. То есть максимум через 500 мс или меньше, зависит от рук водятела. Ранее этого события мы ничего делать не имеем права.
А вот про две секунды, да, это я что то не доделал. Точнее вот то время которое я прописал как 500 нужно просто заменить на 2000. И получится такая логика:
Любой нулевой импульс с кочерги включит выход на 2 секунды минимум, а далее он останется включенным до снятия нуля с кочерги, или если этот ноль убрали ранее в течении 2 секунд, то выход выключится по истечении 2 секунд. Разве это не комфортные поворотники ?
реализация механизма представляется в виде тактовой кнопки.
время появления первых миганий будет равно времени удержания нажатой кнопки (не более 0.5 сек)
поэтому время до появления реакции на нажатие всегда будет менее полсекунды и зависит от скорости отпускания нажатой кнопки.
И зачем эта кривая логика с задержкой на включение, позвольте узнать ваше мнение ?
Комфортный поворотник начинает мигать СРАЗУ при нажатии на кочегру, а гаснет при переводе кочерги в среднее положение, но не ранее 2 секунд после включения.
Чем не нравится логика сворованная мною у производителей авто ?
реализация механизма представляется в виде тактовой кнопки.
время появления первых миганий будет равно времени удержания нажатой кнопки (не более 0.5 сек)
поэтому время до появления реакции на нажатие всегда будет менее полсекунды и зависит от скорости отпускания нажатой кнопки.
И зачем эта кривая логика с задержкой на включение, позвольте узнать ваше мнение ?
Комфортный поворотник начинает мигать СРАЗУ при нажатии на кочегру, а гаснет при переводе кочерги в среднее положение, но не ранее 2 секунд после включения.
Чем не нравится логика сворованная мною у производителей авто ?
Абсолютно никакого мнения, я просто интерпретировал ту логику которую заказал ТС в своем задании.
Основная задача не поймать импульс длиною менее 500мс, а как раз не ловить импульс длиною более 500мс. Представим ситуацию вы собираетесь повернуть совершили маневр, а поворотники зачем-то продолжают моргать ещё 2 секунды после того как рычажок отщелкнулся. Это была моя логика.
Но в чем вы правы в том правы) проще ваш вариант, какая разница сколько отморгал поворотник из-за рычажка... Главное что не менее, теперь уже 2500мс. Добавить бы возможность отмены...
P.S. как же удобно сделано это на современных автомобилях там рычажок имеет четыре положения и никаких механических фиксации, а тут приходится огород городить
это как? у меня вроде современный авто, а положений два, чуть тронул и он несколько секунд моргает, до щелчка - моргает пока не отщелкнешь.
это как? у меня вроде современный авто, а положений два, чуть тронул и он несколько секунд моргает, до щелчка - моргает пока не отщелкнешь.
Например в большинстве BMW это реализовано тем что в каждую сторону у рычажка два положения и подкидываются разные сопротивления, тем самым распознаётся усилие нажатия. Механической защёлки нет, поворот и возврат определяется по датчику положения рулевого колеса
Да не, логика очень простая и должна работать не по нажатию, а по отпусканию.
Если контакт замкнулся - сразу включаем поворотник
Если контакт разомкнули менее чем через 500мс - мигаем еще 2 сек. Если держали замкнутым более 500мс - выключаем повортник сразу по отпусканию.
Сколько у меня было авто - у всех работало именно так.
И в коде, кстати. это реализуется проще...
а если включили правый поворотник и через 300мс включили левый ?
в таком случае надо сразу отключать правый поворотник не дожидаясь 2 сек
а если включили правый поворотник и через 300мс включили левый ?
в таком случае надо сразу отключать правый поворотник не дожидаясь 2 сек
да, это надо добавить. Ну да это несложно.
Правда в ТЗ этого нет :)
Убрал "нюансы"....
а если включили правый поворотник и через 300мс включили левый ?
в таком случае надо сразу отключать правый поворотник не дожидаясь 2 сек
да, это надо добавить. Ну да это несложно.
Правда в ТЗ этого нет :)
Дык есть же , учтено еще вначале.
31-32 строчка.
я бы еще определил дефайны ON_STATE и OFF_STATE и заменил ими LOW и HIGH.
так и читать код будет легче, и переделать можно будет в одно движение. если ТС вдруг захочет сменить полярность сигналов
Спасибо всем отписавшимся и предложившим свою помощь. Отдельная благодарность brokly за выполненное на более чем полностью программное решение. Тему можно считать закрытой, все прекрасно работает))) Если brokly посчитает нужным, то я не против чтобы окончательный вариант кода стал достояние общественности на этом форуме)
Да не вопрос, это ваш код, имеете право делать с ним все что угодно.
Хочу отметить , что ТС оплатил работу в размере который можно обозначить как "более чем".
Если кого то перебил - извиняюсь, не специально.
Хочу отметить , что ТС оплатил работу в размере который можно обозначить как "более чем".
пусть приходит еще, подобные заказчики - редкость :)
есть вопросик по коду: а почему переменные таймера типа uint16_t ?
ну и ещё кое-какие мысли по коду есть, если интересно и хотите, то можем обсудить.
есть вопросик по коду: а почему переменные таймера типа uint16_t ?
Потом что период в минуту в данной программе вполне достаточен и больше такового не предполагается. А работа с 32 разрядными переменными для восьмиразрядного проца - лишняя нагрузка, хотя в данном коде это особого значения не имеет.
Кстати, поэтому же таймеры дребезга можно сделать вообще восьмиразрядными. Есть некоторые моменты которые нужно учитывать при таких сокращениях, например проверка таймера должна гарантировано проходить хотя бы один раз за максимальный период. То есть если таймер восьмиразрядный его нужно обязательно проверить хотя бы раз за 0,255 секунды.
Ясно. Главное что заказчик доволен.
Нет сожаления что рискового деда подрезал с его голодным котом?
Ну во первых я извинился. Во вторых его подрезал Green c пяти сотнями рублей, а вовсе не я :) И в третьих, если я буду обижаться на каждого кто подрезает меня, то тут все должны быть моими врагами, надеюсь, что все имеют на этот аналогичный, моему, взгляд.
его подрезал Green c пяти сотнями рублей, а вовсе не я :)
непонятно, кстати, почему ТС не отрагировал на это предложение
"Подрезал" это если бы взял. ТС, очевидно, посчитал не солидно платить такую сумму. Не все нищеброды, оказывается.)
"Подрезал" это если бы взял. ТС, очевидно, посчитал не солидно платить такую сумму. Не все нищеброды, оказывается.)
Подрезать - объявить цену ниже. Я вообще не объявлял цены. Видимо ТС была важна скорость. Поэтому публикации кода он отдал предпочтение, кроме того у заказчика появилась возможность сначала проверить, а потом платить. Для многих это важный момент.
ОК. Если честно, я вообще посчитал что Дед прикалывается.
Да не парьтесь вы, я же не обиделся. :) Я всё равно в карантине сижу, пока даже без компа. В понедельник, надеюсь, карантин снимут. :)
Ну я так думаю там в цене были консультации и уточнение ТЗ. Просто очень много приходит автолюбителей которые хотят чего то этакого, и в основе это очень тяжелые клиенты. К ТС это совсем не относится :)