Страница 5 из 16 ПерваяПервая 123456789101115 ... ПоследняяПоследняя
Показано с 41 по 50 из 152
  1. #41
    Пользователь
    Регистрация
    05.01.2014
    Сообщений
    25
    Вес репутации
    162

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

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

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

  2. #42
    Пользователь
    Регистрация
    05.01.2014
    Сообщений
    34
    Вес репутации
    163

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

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

  3. #43
    Пользователь
    Регистрация
    05.01.2014
    Сообщений
    25
    Вес репутации
    162

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

    мне на АСС нужны прикуриватель(хотя я не курю), магнитолу и стеклоподьемники. А схему я правильно на рисовал??

  4. #44
    Пользователь
    Регистрация
    05.01.2014
    Сообщений
    34
    Вес репутации
    163

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

    да правильно,есть вариант заводить только после кодового ввода я фото выкидывал ,тоже интересная штука будет.Стекло подъемники можно одним проводом к асс подключить там в модуле прям по центру в самом верхнем ряду идет реле, отрезать провод который идет на 86 ногу в штатной проводке и подключить к выходу асс и все .Вопрос еще ты кнопку нашел?
    Последний раз редактировалось maestro777; 09.01.2014 в 21:43.

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

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

    а можно более детальную схему подключения&в частности к самой arduino
    Последний раз редактировалось Beard; 09.01.2014 в 23:45.

  6. #46
    Пользователь
    Регистрация
    05.01.2014
    Сообщений
    34
    Вес репутации
    163

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

    А что же тут может быть подробнее,все выходы расписаны в скетче .Что не понятно спроси ответим .
    Последний раз редактировалось maestro777; 10.01.2014 в 02:25.

  7. #47
    Пользователь
    Регистрация
    05.01.2014
    Сообщений
    25
    Вес репутации
    162

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

    Это оптимальный вариант
    http://www.a-pik.ru/catalog/moduli_s...e_start_knopka

    Можно еще на eBay посмотреть
    http://www.ebay.com/sch/i.html?_saca...&_skc=50&rt=nc

  8. #48
    Пользователь
    Регистрация
    05.01.2014
    Сообщений
    25
    Вес репутации
    162

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

    Цитата Сообщение от Beard Посмотреть сообщение
    а можно более детальную схему подключения&в частности к самой arduino
    PHP код:
    byte ACCPin = 11; //Выход на транзистор переферии ACC 
    byte EnginePin = 10; //Выход на транзистор зажигания 
    byte StarterPin = 9; //Выход на транзистор стартера 
    byte ButtonPin = 8; //Вход + с кнопки <----------------------------- Стягивающий резистор на "-" 
    byte StopPin = 12; //Вход с тормоза <----------------------------- Стягивающий резистор на "-" 
    byte ImmoPin = 7; //Вход с иммо <----------------------------- Подтягивающий резистор на "+" 
    byte TahoPin = 6; //Вход с тахометра <----------------------------- Стягивающий резистор на "-" 
    11 контакт на МК arduino - выход на режим АСС
    10 контакт - выход на зажигание
    9 контакт - выход на стартер
    8 контакт - вход с кнопки
    12 контакт - вход с тормозов

    и тогдалее

  9. #49
    Пользователь
    Регистрация
    05.01.2014
    Сообщений
    34
    Вес репутации
    163

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

    Привет вот еще есть классный вариант кнопки http://www.svetodiod96.ru/ishop/knop...-stop_498.html

  10. #50
    Пользователь
    Регистрация
    05.01.2014
    Сообщений
    34
    Вес репутации
    163

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

    Ребята если кто скачал прогу извините я там в коде ошибку допустил которая мешает экстренному отключению программы по нажатию кнопки вот исправленный код :
    PHP код:
    byte ACCPin = 11; //Выход на транзистор переферии ACC
    byte EnginePin = 10; //Выход на транзистор зажигания
    byte StarterPin = 9; //Выход на транзистор стартера
    byte ButtonPin = 8; //Вход + с кнопки <----------------------------- Стягивающий резистор на "-"
    byte StopPin = 12; //Вход с тормоза <----------------------------- Стягивающий резистор на "-"
    byte ImmoPin = 7; //Вход с иммо <----------------------------- Подтягивающий резистор на "+"
    byte TahoPin = 6; //Вход с тахометра <----------------------------- Стягивающий резистор на "-"
    byte WordsPin = 5; //Выход на глазок 1 
    byte YellowGlazokPin = 4; //Выход на глазок 2 
    byte GreenGlazokPin = 3; //Выход на глазок 3
    byte statusEngine = 0;
    byte sw = 2;
    //byte rotate = 0;
    unsigned int rotate=0;
    boolean stateACC = false;
    unsigned long lastPress = 0;
    unsigned long lastImmo = 0;
    unsigned long splitTime = 0;
    unsigned long time =0;
    byte stat = 0;
    void setup()
    {
    pinMode(sw,INPUT);
    pinMode(EnginePin, OUTPUT);
    pinMode(StarterPin, OUTPUT);
    pinMode(ACCPin, OUTPUT);
    pinMode(WordsPin, OUTPUT);
    pinMode(YellowGlazokPin, OUTPUT);
    pinMode(GreenGlazokPin, OUTPUT);
    //time = 0;
    lastImmo=millis();
    lastPress=millis();
    Serial.begin(9600);
    Serial.println("Arduino is started");
    }

    // 0 - Все выключенно
    // 1 - Включено только зажигание
    // 2 - Крутиться стартер, ждем оборотов
    // 3 - Двигатель работает, все включено
    // 4 - Неудачная попытка запуска, включено только зажигание
    // 5 - Двигатель заглушен, АСС пока еще работает
    void loop()
    {
    if (
    stat != statusEngine) {stat = statusEngine;
    Serial.println(stat);
    }
    unsigned long newTime = millis() - lastPress;
    unsigned int button = pressButton();
    if (
    button != 0) Serial.println(button);
    lastImmoTest();
    switch (
    statusEngine) 
    {
    case 
    0:
    digitalWrite(GreenGlazokPin, LOW);
    if (
    stateACC) digitalWrite(YellowGlazokPin, HIGH); 
    else 
    digitalWrite(YellowGlazokPin, LOW);
    if (
    millis() - lastImmo > 10000) digitalWrite(WordsPin, HIGH); 
    else 
    digitalWrite(WordsPin, LOW);
    if (
    button == 1500 && stateACC)
    {
    StopAll();
    }
    else if (
    button == 1500 && !stateACC) StartACC();
    else if (
    button != 0 && millis() - lastImmo > 2000 && newTime > 500) {
    StartEngine();
    statusEngine=1;
    }
    break;
    //----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- 
    case 1:
    if (
    digitalRead(ImmoPin) == LOW) StopAll();
    digitalWrite(WordsPin, HIGH); 
    if (
    stateACC) digitalWrite(YellowGlazokPin, HIGH); else digitalWrite(YellowGlazokPin, LOW);
    if (
    millis() - lastImmo > 2000 && StopIsPress() && newTime < 900) 
    {
    digitalWrite(GreenGlazokPin, HIGH); 
    digitalWrite(WordsPin, HIGH);
    }
     else
    {
    digitalWrite(GreenGlazokPin,!digitalRead(GreenGlazokPin));
    delay(100);
    }
     
    if (
    button == 1500) {
    StopAll();
    }
    else if (
    button != 0 && newTime > 500) {
    if (!
    stateACC) 
    StopAll();
    else
    {
    StopEngine();
     
    statusEngine=5;
     }
     }
     else if (
    newTime > 9000 && newTime < 9100 && StopIsPress())//задержка на 9 секунд тут она не мешает основному циклу если нужна другая просто меняйте 
     
     
    {
     
     
    StartStarter();
     
    statusEngine=2;
     }
     break;
     
     
     
    //----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
     
    case 2:
     
    digitalWrite(WordsPin, HIGH); 
     
    digitalWrite(GreenGlazokPin, HIGH); 
     if (
    stateACC) digitalWrite(YellowGlazokPin, HIGH);
     if (
    digitalRead(TahoPin) == HIGH) {
     
    rotate++;
     while (
    digitalRead(TahoPin) == HIGH) if (digitalRead(ImmoPin) == LOW) {StopAll(); break;}
     }
     if (
    rotate>=2) 
     {
     
    unsigned int rpm = (rotate*60000*10000/2)/(micros()-splitTime);
     
    Serial.print("rpm: ");
     
    Serial.println(rpm);
     
    rotate=0;
     
    splitTime=micros();
     if (
    rpm>1000) { //<-------ВЕРНУТЬ СЮДА ТЫЩУ!!!! <-------
     
    StopStarter();
     
    StartACC();
     
    statusEngine=3;
     
    Serial.println("Engine is WORK!!");
     break;
     }
     }
     if (
    button != 0 && newTime > 500) { 
     
    StopAll();
     }
     else if (
    newTime > 5000 || !StopIsPress()){
     
    StopStarter();
     
    statusEngine=4;
     }
     break;
     
    //----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
     
    case 3:
     
    digitalWrite(GreenGlazokPin, HIGH);
     
    digitalWrite(YellowGlazokPin, LOW);
     if (
    newTime > 5000) digitalWrite(WordsPin, LOW); 
     else 
    digitalWrite(WordsPin, HIGH);
     if (
    button == 1500) {
     
    StopAll();
     }
     else if (
    button != 0 && newTime > 500) { 
     
    StopEngine();
     
    statusEngine=5;
     }
     break;
     
     
    //----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
     
     
    case 4:
     
     
    digitalWrite(WordsPin, HIGH);
     
    digitalWrite(GreenGlazokPin, !digitalRead(GreenGlazokPin)); delay(50);
     
    digitalWrite(YellowGlazokPin, LOW);
     if (
    button == 1500 || newTime > 10000) {
     
    StopAll();
     }
     else if (
    button != 0 && newTime > 500 && StopIsPress()) {
     
    StartStarter();
     
    statusEngine=2;
     }
     else if (
    button != 0 && newTime > 500 && !StopIsPress()) {
     
    StopAll();
     }
     break;
     
    //----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
     
    case 5:
     
    digitalWrite(GreenGlazokPin, LOW);
     if (
    stateACC) digitalWrite(YellowGlazokPin, HIGH); else digitalWrite(YellowGlazokPin, LOW);
     if (
    newTime > 5000) 
     {
     if (
    millis() - lastImmo > 5000) digitalWrite(WordsPin, HIGH); else digitalWrite(WordsPin, LOW);
     }
     else 
     
    digitalWrite(WordsPin, HIGH);
     if (
    button == 1500) {
     
    StopAll();
     }
     else if (
    millis() - lastImmo < 2000) StopAll();
     else if (
    button != 0 && newTime > 500) {
     
    StartEngine();
     
    statusEngine=1;
     }
     
    lastImmoTest();
     break;
     
    //----- ----- ----- ----- ----- ----- ----- ----- ----- ----- ----- -----
     
    }
     }

    void StartEngine(){
    digitalWrite(EnginePin, HIGH);
    Serial.println("Engine is ON");
    lastPress=millis();
     }
     
    void StopEngine(){
     
    digitalWrite(EnginePin, LOW);
     
    Serial.println("Engine is OFF");
     
    lastPress=millis();
     }
     
    void StopAll(){
     
    digitalWrite(EnginePin, LOW);
     
    digitalWrite(StarterPin, LOW);
     
    digitalWrite(ACCPin, LOW);
     
    Serial.println("All OFF"); 
     while (!
    digitalRead(ButtonPin)){}
     
    stateACC=false;
     
    lastPress=millis();
     
    statusEngine=0;
     
    lastPress=millis(); 
     }
     
     
    void StartStarter(){
     
    digitalWrite(StarterPin, HIGH);
     
    Serial.println("Starter START!");
     
    splitTime=micros();
     
    lastPress=millis();
     }
     
    void StopStarter(){
     
    digitalWrite(StarterPin, LOW);
     
    Serial.println("Starter if OFF!");
     
    lastPress=millis();
     }
     
     
    void StartACC(){
     
    digitalWrite(ACCPin, HIGH);
     
    Serial.println("Starter ACC!");
     
    stateACC=true;
     
    lastPress=millis();
     }
     
    void lastImmoTest(){
     if (
    digitalRead(ImmoPin) == LOW) { //<----------------------------- Поменял на LOW
     
    lastImmo=millis();
     
    Serial.println("Immo+");
     }
     }
     
     
    unsigned int pressButton(){
     
    unsigned long newTime = millis();
     
    boolean currentPosition = digitalRead(ButtonPin);
     if (
    currentPosition == HIGH){ 
     
    delay(50);
     
    currentPosition=digitalRead(ButtonPin); 
     }
     while (!
    currentPosition) {
     
    currentPosition=digitalRead(ButtonPin);
     if (
    millis() - newTime > 1000) return 1500;
     }
     
    newTime=millis() - newTime;
     if (
    newTime < 60) newTime = 0;
     return 
    newTime; 
     }
     
    boolean StopIsPress(){
     return 
    digitalRead(StopPin); 
     } 

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

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

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

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

Ваши права

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