Страница 8 из 16 ПерваяПервая ... 234567891011121314 ... ПоследняяПоследняя
Показано с 71 по 80 из 152
  1. #71
    Новичок
    Регистрация
    26.03.2014
    Сообщений
    8
    Вес репутации
    126

    По умолчанию Re: Кнопка Старт/Стоп на МК Arduino

    Забыл код добавить. Вот он:

    /* Запуск двигателя автомобиля от кнопки "Start-Stop"*/



    int ledzel=2; // светодиод зеленый (ACC)
    int ledzol=3; // светодиод желтый (зажигание)
    int ledred=4; // светодиод красный двс заведен
    int regim=1; // переменная для выбора нескольких режимов, типа что то выбора меню
    int flag=0; // переменная состояния нажатия или отжатия кнопки

    //-------------- для выполнения какого либо действия по истечению заданого времени после нажатия кнопки ---------------
    //int valBut=0; // задаем переменную для счетчика
    //long previousMillis=0; // зададим начальное значение счетчика millis
    //long TimePush=200; // время нажатия на кнопку 500= 8секунд
    //---------------------------------------------------------------------------------------------------------------------

    //---------------мигание светодиода красного--------------------------------
    int previousMillis1=0;
    int interval1=40;
    //--------------------------------------------------------------------------

    //--------------- задержка для включеня стартера и ACC ---------------------
    int previousMillis2=0;
    int interval2=50;
    //--------------------------------------------------------------------------


    void setup()
    {
    pinMode(2, OUTPUT); // Светодиод статуса зеленый
    pinMode(3, OUTPUT); // Светодиод статуса желтый
    pinMode(4, OUTPUT); // Светодиод статуса красный
    pinMode(6, INPUT); // Вход button (кнопка start-stop)(-)
    pinMode(7, INPUT); // Вход педаль тормоза (+12V)
    pinMode(8, INPUT); // Вход сигнал генератора (+)
    pinMode(9, OUTPUT); // Выход ACC (Акссесуары)(+)
    pinMode(10, OUTPUT); // Выход ING 1 (зажигание)(+)
    pinMode(11, OUTPUT); // Выход ING 2 (зажигание)(+)
    pinMode(12, OUTPUT); // Выход STARTER (стартер)(+)
    }

    //=============================== Начало основного кода программы ================================================== ===============

    void loop()
    {

    /***** Сам код программы Авто и Ручного пуска ДВС *****/

    if(digitalRead(6)==HIGH&&flag==0) // если кнопка нажата и переменная flag равна 0, то ....
    {
    if(digitalRead(7)==LOW) // "ТОРМОЗ" НЕ НАЖАТ
    {
    regim++; // это нужно для того что бы с каждым нажатием кнопки
    flag=1; // происходило только одно действие
    // плюс защита от дребезга 100%

    if(regim>3) // ограничим количество режимов
    {
    regim=1; // так как мы используем только одну кнопку,
    // то переключать режимы будем циклично
    }
    }
    }
    //================================ Режим Автопуска ДВС ================================================== =
    if(digitalRead(7)==HIGH&&digitalRead(3)==LOW) // если тормоз нажат и светодиод желтый не горит, то ...
    {
    statusredmig(); // мигание светодиода во время прокрутки стартера
    start(); // включаем автопуск
    regim=0; // обнуляем все режимы(отключаем ручной запуск)
    }
    //================================================== ================================================== ====

    if(digitalRead(6)==LOW&&flag==1) // проверяем нажата ли кнопка если да, то ... см.ниже
    {
    flag=0; // обнуляем переменную "кнопка"
    }

    if(regim==1) // первый режим
    {
    digitalWrite(9,LOW); // выключаем ACC
    digitalWrite(10,LOW); // выключаем ING 1
    digitalWrite(11,LOW); // выключаем ING 2
    digitalWrite(12,LOW); // выключаем STARTER
    digitalWrite(3,LOW); // выключить светодиод желтый
    digitalWrite(4,LOW); // выключить светодиод красный
    // ВСЕ ВЫКЛЮЧАЕМ
    }


    if(regim==2) // второй режим
    {
    digitalWrite(9,HIGH); // включаем ACC
    }
    if(regim==3) // третий режим
    {
    digitalWrite(10,HIGH); // включаем ING 1
    digitalWrite(11,HIGH); // включаем ING 2
    digitalWrite(3,HIGH); // включаем желтый светодиод
    if(digitalRead(6)==HIGH&&digitalRead(3)==HIGH&&dig italRead(7)==HIGH&digitalRead(8)==LOW&flag==0) // если нажата кнопка, нажат "ТОРМОЗ",
    {
    digitalWrite(12,HIGH); // включаем стартер
    digitalWrite(9,LOW); // выключаем ACC
    }

    if(digitalRead(6)==LOW) // проверяем отпушенна ли кнопка
    {
    digitalWrite(12,LOW); // выключаем STARTER
    digitalWrite(9,HIGH); // включаем ACC
    }

    }
    /***** Конец кода программы Авто и Ручного пуска ДВС *****/

    //====================================== Конец основного кода программы ================================================== ======

    }


    // ----------------------- Подпрограмма Автопуска ДВС, в одно касание кнопки -1----------------------------------------------

    void start() // Подпрограмма запуска ДВС
    {

    if(digitalRead(6)==HIGH) // если кнопка нажата, то ....
    {
    digitalWrite(9,LOW); // выключаем acc
    digitalWrite(10,HIGH); // включаем ing 1
    digitalWrite(11,HIGH); // включаем ing 2
    delay(50); // задержка перед пуском стартера
    digitalWrite(12,HIGH); // включаем STARTER
    }

    if(digitalRead(8)==HIGH||digitalRead(7)==LOW) // если есть сигнал с генератор(+12V) или отпущенн тормоз

    {
    digitalWrite(12,LOW); // выключаем стартер
    digitalWrite(ledred, HIGH); // включаем красный светодиод
    // delay(50); // задержка на включение ACC
    digitalWrite(9,HIGH); // включить ACC

    }
    }
    //----------------------------------------------------------------------------1------------------------------------------

    //------------------------------------------------2-----------------------------------------------------------------------
    /***** Подпрограмма для сработки кнопки или от чего нибудь,через заданное время *****/

    /** void pushtime()
    {
    if(digitalRead(7)==HIGH) // если педаль или кнопка или что то нажато-включенно, то
    {
    if(millis()-previousMillis>=1)//&&digitalRead(6)==HIGH) // начинаем считать время нажатия
    {
    previousMillis=millis();
    valBut++; // с каждой милисекундой увеличиваем значение valBut
    }
    }
    else // если кнопку отпустили, то valBut становится равным 0
    { // это необходимо для защиты от срабатывания при частых
    // и многократных нажатиях
    valBut=0;
    }
    if(valBut>=TimePush) // как только значение valLed становиться равным TimtPush
    {
    regim=0;
    // upr(); // запускаем третий режим, т.е. включаем зажигание
    valBut=0; // устанавливаем valBut=0
    }
    } **/
    //------------------------------------------------2------------------------------------------------------------------------

    //-------------------------------Подпрограмма мигания красного светодиода в автопуске ----3--------------------------------
    void statusredmig()
    {
    unsigned long currentMillis=millis();
    if(currentMillis-previousMillis1>interval1&&digitalRead(7)==HIGH)
    {
    // сохраняем время последнго переключения
    previousMillis1=currentMillis;
    // если светодиод не горит, то зажигаем и наоборот
    if(digitalRead(4)==LOW)
    digitalWrite(4,HIGH); // включаем светодиод
    else
    digitalWrite(4,LOW); // выключаем светодиод
    }
    }
    //---------------------------------------------------------------------------------------3---------------------------------

  2. #72
    Новичок
    Регистрация
    26.03.2014
    Сообщений
    8
    Вес репутации
    126

    По умолчанию Re: Кнопка Старт/Стоп на МК Arduino

    Добрый вечер. Господа подскажите что не так сделал в этом коде. Голова уже не соображает что нужно.

  3. #73
    Пользователь
    Регистрация
    25.01.2009
    Сообщений
    54
    Вес репутации
    198

    По умолчанию Re: Кнопка Старт/Стоп на МК Arduino

    А может не стоит включать одновременно ING1 и ING2 ? Они ведь не просто так разделены - на первом зажигании как правило подключено всё что относится к запуску и работе двигателя, а на втором вспомогательное оборудование, когда запуск управляется ключом зажигания то при переводе ключа в режим "зажигание включено" запитываются обе линии зажигания, а во время перевода ключа в режим старта вторая линия зажигания отключается, питание идёт только на первую линию зажигания двигателя и на стартер. Моя кнопка тоже включает сразу обе линии и держит их включенными всё время. Летом всё хорошо было, а вот зимой вроде бы незначительное отключение второй линии при старте оказалось очень нужной штукой. Оказалось что на второй линии в моей машине висит климатическая установка, основные и противотуманные фары, и обогревы всего что греется. Всё это штатное оборудование и вот что получается зимой - при нажатии на кнопку включаются обе линии зажигания, запускается климат очень прожорливая вещь, включается подогрев сидений тоже очень энергоёмкая штука, автоматика включает все освещение которое есть, потому как на улице зима и с утра темно ещё датчик света запускает габариты и головной свет, а потому как зажигание включено запускаются противотуманки в режиме ходовых огней - нагрузка реально очень серьёзная, а двигатель ещё даже не запустился, вот и получается пока насос отработает и система перейдёт к запуску двигателя вспомогательное оборудование высосет из аккумулятора последние остатки смёрзшейся за ночь энергии. И двигателю на запуск остатков энергии уже далеко не всегда хватает.
    Промучившись с такой ерундой пол зимы решил что система не должна включать вторую линии зажигания вообще пока не поймёт что двигатель запустился и стабильно работает.
    То есть алгоритм запуска должен быть следующим: при нажатии на тормоз и кнопку - включение ING1,включение аксессуаров, задержка 3 сек на инициализацию электроники и насос, включение стартера, подтверждение запуска двигателя, отключение стартера, задержка скажем 3 сек, включение IGN2.

  4. #74
    Новичок
    Регистрация
    26.03.2014
    Сообщений
    8
    Вес репутации
    126

    По умолчанию Re: Кнопка Старт/Стоп на МК Arduino

    Все здрасте(Здравствуйте). YraY, я Вас понял к чему Вы клоните. У меня была Шкода Фабия там как и у Вас ING1 и ING2 разделены. Но на Хендай Гетц оно совмещено. Но дело(проблема) у меня была не в этом, а в том как разделить Авто и Ручной запуск. Все таки посидев поломав голову, две ночки допенькал свою проблему. теперь все как надо! сейчас мелкие добавочки сделаю. А про то что раздельно ING1 и ING2, это вообще не проблема добавить или удалить строчки в нужных местах, по этому я не заострял внимание на них(ING1 и ING2).У меня много проектов по старт-стоп, да и не только старт- стоп, но именно тот алгоритм мне нужен из поста #70.

  5. #75
    Пользователь
    Регистрация
    25.01.2009
    Сообщений
    54
    Вес репутации
    198

    По умолчанию Re: Кнопка Старт/Стоп на МК Arduino

    Расскажите что значит "разделить Авто и Ручной запуск" ?
    Для меня есть ещё необходимость заложить в кнопку алгоритм распознавания автозапуска с сигнализации, кнопка должна перед включением стартера проверять не работает ли двигатель уже и если двигатель уже запущен например сигнализацией то пропускать включение стартера.

  6. #76
    Новичок
    Регистрация
    26.03.2014
    Сообщений
    8
    Вес репутации
    126

    По умолчанию Re: Кнопка Старт/Стоп на МК Arduino

    Доброй ночи всем.

  7. #77
    Новичок
    Регистрация
    26.03.2014
    Сообщений
    8
    Вес репутации
    126

    По умолчанию Re: Кнопка Старт/Стоп на МК Arduino

    YraY. Я незнаю, может я просто плохо изъясняю свои мысли или думаю правильно, а пишу криво.Попробую Вам рассказать так. С завода на шкоде стояла кнопка Старт-Стоп, алгоритм именно как в моем посте #70.Когда продал шкоду, решил сделать также как на шкоде, НО немного доработать, так как меня не устраивало что кнопка(штатная) уходила в аварийный режим(т.е. блокировалась) если случайно быстро нажимать ее в ручном режиме. А что бы разблокировать ее приходилось снимать клемму Аккумулятора. И не нравилось что он программировалась по оборотам двс.Иногда сразу заводилась иногда только с ручного режима. Вот в принципе эти два аспекта меня не устраивали.

  8. #78
    Новичок
    Регистрация
    26.03.2014
    Сообщений
    8
    Вес репутации
    126

    По умолчанию Re: Кнопка Старт/Стоп на МК Arduino

    А насчет контроля сигнала заведена она или нет, у меня там есть такое. Т.е. если автозапуск, то я сажусь нажимаю 1раз - ACC, 2раз - ING1,ING2.(это из ручного режима) если 3раз то - OFF ALL. Но, она(кнопка-блок) не запустит все равно стартер из любого режима, так как уже есть сигнал с "гены" - просто выполнит операции до и после стартера. Это еще раз повторюсь, взято из алгоритма штатной кнопки Шкод"ы"

  9. #79
    Новичок
    Регистрация
    26.03.2014
    Сообщений
    8
    Вес репутации
    126

    По умолчанию Re: Кнопка Старт/Стоп на МК Arduino

    Забыл пояснить Вам, что ручной режим нужен обязательно - это как ключ с собой возить. Объясню почему:
    1. Если вы ремонтируете авто(не важно где) вдруг вам необходимо вкл. зажигание для проверки чего либо
    2. Если у вас или на станции СТО вам(вы) делаете(ют) диагностику двс, то вкл. зажигание нужно обязательно
    3. Сильный мороз
    4. Или дольше нужно покрутить стартер
    5. Ну или форс-мажор.

  10. #80
    Пользователь
    Регистрация
    25.01.2009
    Сообщений
    54
    Вес репутации
    198

    По умолчанию Re: Кнопка Старт/Стоп на МК Arduino

    Народ, поделитесь пожалуйста рабочим скетчем кнопки.

Страница 8 из 16 ПерваяПервая ... 234567891011121314 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 3 (пользователей: 0 , гостей: 3)

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •