Страница 9 из 16 ПерваяПервая ... 3456789101112131415 ... ПоследняяПоследняя
Показано с 81 по 90 из 152
  1. #81
    Новичок
    Регистрация
    09.04.2014
    Сообщений
    19
    Вес репутации
    135

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

    Добрый день.
    Написал свой код запуска двигателя, писал первый раз, может кто нибудь проверить? самому проверить пока не на чем, завтра буду травить платку под реле и ардуину.
    Код:
    int rele_1 = 2; //зажигание 
    int rele_2 = 3; //стартер
    int rele_3 = 4; //габариты
    int rele_4 = 5; //ближний свет
    int rele_5 = 6; //подсветка салона
    const int motor = 7; //определение работы двс
    const int LedPin = 8; //подсветка глазка
    const int LedButtonPin = 9; //подсветка кнопки
    const int buttonPin = 10; //кнопка 
    
    long lastDebounceTime = 0; // the last time the output pin was toggled
    long debounceDelay = 30; // the debounce time; increase if the output flickers
    long longDelay = 1000; //время длинного нажатия
    
    void setup() //конфигурирование системы после сброса
    { 
      char i;  
      
      pinMode(rele_1, OUTPUT);  
      pinMode(rele_2, OUTPUT);
      pinMode(rele_3, OUTPUT);
      pinMode(rele_4, OUTPUT);
      pinMode(rele_5, OUTPUT);
      pinMode(motor, INPUT);
      pinMode(LedPin, OUTPUT);
      pinMode(LedButtonPin, OUTPUT);
      pinMode(buttonPin, INPUT);
      
      //начальное положение реле
      setKeyState1();
    }
      
      //Состояние 1 все выключено
    void setKeyState1(){
      delay(25);
      digitalWrite(rele_1, LOW); 
      delay(25);
      digitalWrite(rele_2, LOW);  
      delay(25);
      digitalWrite(rele_3, LOW);  
      delay(25);
      digitalWrite(rele_4, LOW);  
      delay(25);
      digitalWrite(rele_5, LOW);
    }  
      //Состояние 2 зажигание
    void setKeyState2(){
      delay(25);
      digitalWrite(rele_1, HIGH); 
      delay(25);
      digitalWrite(rele_2, LOW);  
      delay(25);
      digitalWrite(rele_4, LOW);  
      delay(25);
      digitalWrite(rele_5, LOW);
    }
      //Состояние 3 зажигание и стартер
    void setKeyState3(){
      delay(25);
      digitalWrite(rele_1, HIGH); 
      delay(25);
      digitalWrite(rele_2, HIGH);  
      delay(25);
      digitalWrite(rele_4, LOW);  
      delay(25);
      digitalWrite(rele_5, LOW);
    }
      //Состояние 4 зажигание, подсветка, ближний
    void setKeyState4(){
     delay(25);
      digitalWrite(rele_1, HIGH); 
      delay(25);
      digitalWrite(rele_2, LOW);  
      delay(25);
      digitalWrite(rele_4, HIGH);  
      delay(25);
      digitalWrite(rele_5, HIGH);
      }
      //Состояние 5 зажигание, подсветка
    void setKeyState5(){
     delay(25);
      digitalWrite(rele_1, HIGH); 
      delay(25);
      digitalWrite(rele_2, LOW);  
      delay(25);
      digitalWrite(rele_4, LOW);  
      delay(25);
      digitalWrite(rele_5, HIGH);
      }
      //Автомат состояний
    void changeState(int s){
    int _delay;
    if(s==1){ //поступил сигнал длинного нажатия
    if(digitalRead(7)==HIGH) //если двигатель запущен, то ....
    {
    if(digitalRead(1)==HIGH) //если зажигание вкл, то ....
    {setKeyState1(); //выключаем все
    }
    }else{
    if(digitalRead(1)==HIGH) //если зажигание вкл, то ....
    {setKeyState4(); //Состояние 4 зажигание, подсветка, ближний
    }else{
    setKeyState2(); //Состояние 2 зажигание
    delay(2000);  //Даем подкачать бензонасосу
    setKeyState3(); //Состояние 3 зажигание и стартер
    _delay=millis();
    while(digitalRead(7)==LOW){ //крутим стартер пока не заведемся
    if((millis()-_delay)>3000)break; //но не более 3х сек
    }
    delay(2000);
    if(digitalRead(7)==LOW){ //если не завелись
    setKeyState1();  //Состояние 1 все выключено
    }else{ //если завелись
    setKeyState4(); //Состояние 4 зажигание, подсветка, ближний
    }
    }
    }
    }else{ //поступил сигнал короткого нажатия
    if(digitalRead(7)==HIGH) //если двигатель запущен, то ....
    {
    if(digitalRead(1)==HIGH) //если зажигание вкл, то ....
    {
    if(digitalRead(5)==HIGH) //если ближний вкл, то ....
    {
    setKeyState5(); //Состояние 5 зажигание, подсветка
    }else{
    setKeyState4(); //Состояние 4 зажигание, подсветка, ближний
    }
    }else{
    setKeyState4(); //Состояние 4 зажигание, подсветка, ближний
    }
    }else{
    if(digitalRead(1)==HIGH) //если зажигание вкл, то ....
    {
    setKeyState1(); //Состояние 1 все выключено
    }else{
    setKeyState2(); //Состояние 2 зажигание
    }
    }
    }
    }
    void loop() {
    if(digitalRead(7)==HIGH) //если двигатель запущен, то ....
    {
    delay(25);
    digitalWrite(rele_3, HIGH); //вкл габариты 
    delay(25);
    digitalWrite(LedPin, HIGH); //вкл подсветку глазка
    }
    if(digitalRead(1)==HIGH) //если зажигание вкл, то ....
    {
    delay(25);
    digitalWrite(LedButtonPin, HIGH); //вкл подсветку кнопки
    }
      
     //читаем состояние кнопки
    int reading = digitalRead(buttonPin);
     //сбрасываем таймер кнопки, пока отжата
    if(reading==1)
    {
    lastDebounceTime=millis();
    }else
    {
     //если кнопка нажата и дребезг контактов прекратился, 
    if((millis()-lastDebounceTime)>debounceDelay){
    while(reading==0){
     //то ждем пока отпустят кнопку
    reading = digitalRead(buttonPin);
     //если кнопку держали дольше longDelay
    if((millis()-lastDebounceTime)>longDelay)
     //то шлем в автомат 1
    changeState(1);
    else //иначе 0
    changeState(0);
    }
    }
    }
    }
    Логика работы на блок схеме. Постоянная проверка зажигания, т.к. движку мог завести в автозапуска. В планах собрать KeyLess систему со своей логикой работы))
    Габариты ВКЛ только когда работает двигатель, светодиоды отображают вкл зажигания и работу двигателя, пока всякие красивости делать не умеют. Двигатель запускается только в автоматическом режиме т.к. замок снимать не планирую, только блокирующий язычек выну.

    Нажмите на изображение для увеличения. 

Название:	Снимок.PNG 
Просмотров:	2194 
Размер:	31.7 Кб 
ID:	18015
    Последний раз редактировалось Polygalov; 01.09.2014 в 21:35.

  2. #82
    Новичок
    Регистрация
    21.09.2014
    Сообщений
    3
    Вес репутации
    0

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

    интересует вопрос, какой резистор ставить на педаль тормоза(откуда взялся 2.2КОм?), и какие на стягивающие и подтягивающие(10КОм хватит?)

  3. #83
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    55
    Сообщений
    13,382
    Вес репутации
    10

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

    Смотря какую Вы схему используете

  4. #84
    Новичок
    Регистрация
    21.09.2014
    Сообщений
    3
    Вес репутации
    0

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

    использую эту схему
    Нажмите на изображение для увеличения. 

Название:	схема Arduina.jpg 
Просмотров:	1351 
Размер:	58.5 Кб 
ID:	18051

  5. #85
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    55
    Сообщений
    13,382
    Вес репутации
    10

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

    2.2 кОм это верхнее плечо делителя

  6. #86
    Новичок
    Регистрация
    21.09.2014
    Сообщений
    3
    Вес репутации
    0

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

    Цитата Сообщение от Chip Посмотреть сообщение
    2.2 кОм это верхнее плечо делителя
    я так понимаю делитель напряжения состоит из двух резисторов, а нижнее плечо по какой формуле считать(ибо я с паяльником на Вы).
    судя из гугла в качестве стягивающих и подтягивающих резисторов используют резисторы 10КОм(допустимо их в этой схеме использовать?)

  7. #87
    Администратор Аватар для Chip
    Регистрация
    08.06.2007
    Возраст
    55
    Сообщений
    13,382
    Вес репутации
    10

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

    Делитель рассчитывается исходя из максимального входного и максимального выходного напряжения
    Например: входное макс. 20в, выходное 5в
    При условии что общее сопротивление делителя 10к
    10/20=0,5кОм на 1 в
    5*0,5=2,5кОм
    10-2,5=7,5кОм
    Получили сопротивления делителя 7,5кОм и 2,5кОм
    Имейте ввиду что при напряжении бортовой сети ниже 10в логической еденицы можете уже не увидеть
    Последний раз редактировалось Chip; 24.09.2014 в 14:32.

  8. #88
    Новичок
    Регистрация
    22.10.2014
    Сообщений
    19
    Вес репутации
    128

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

    Нажмите на изображение для увеличения. 

Название:	WP_000308.jpg 
Просмотров:	1871 
Размер:	70.4 Кб 
ID:	18125 ребят вот такая схема, подскажите пожалуйста правильно ли выбраны номиналы резисторов и как подключать к самой ардурине, я так понимаю используются цифровые входы\выходы D0...D13, а питание это GDN и +5V?

  9. #89
    Гуру Аватар для (vS)
    Регистрация
    18.06.2007
    Возраст
    46
    Сообщений
    1,981
    Вес репутации
    692

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

    кнопку к 12В тянуть ненужно, в самомо МК можно включить.
    что за лягушко?
    сигналку тоже ненужно тянуть, и нужно проверить, что там... если там просто реле, т.е. "сухой контакт", подтяжку в МК и напрямую сигнал, если там потенциал висит, то в зависимости от потенциала, или делитель, или напрямую.
    питание в дуину можно 12В подавать, там специальный вход есть Vin и собственный стабилизатор на 5В, но это надо проверять... а то была тема, когда там 9В вместо 5, было много вони.... и дыма
    автоMOBILEвый моDDEр
    мой карпутер второй очередной

  10. #90
    Местный Аватар для Murkur
    Регистрация
    31.01.2012
    Возраст
    44
    Сообщений
    157
    Вес репутации
    231

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

    Подскажите, какой сигнал идёт на ImmoPin? Просто логика? И откуда снимать этот сигнал? У меня в приборку, как я понял, всё заходит по CAN-шине.
    А также, для чего индикатор WordsPin? Это индикация статуса иммобилайзера?
    Последний раз редактировалось Murkur; 04.11.2014 в 05:02.
    MSI E350IA-E45, AMD Zacate E-350, RAM - 4 Gb, HDD - 120 Gb, M2-ITX, GPS - RoyalTek RGM-3600, 8" TFT, Win 7

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

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

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

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

Ваши права

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