Кнопка старт стоп на Ардуино (но не простая)

DimkaGTX
Offline
Зарегистрирован: 15.01.2018

Добрый день!

Друзья, свершилась беда непоправимая. Надеюсь только на вашу помощь и поддержку. Заранее спасибо!

Начну с предыстории:

Вообщем суть проблеммы, у меня машинка есть (автомобиль), 17 годиков от появления её на свет. Вот решил не дожидаться момента пока центральный механический замок заклинит и заказал "электронный замок" или в простонародии кнопку стоп старт с модулем авторизации по метке и силовыми ключами, чтобы сразу повешать на свой "замок" (ЦЗ). Все было красиво и замечательно. Очень удобно и практично как мне казалось. Пока не настал один замечательный день в следствии стечения некоторых обстоятельств блок управления сгорел. 

Суть -

Купил сигнализацию с силовым модулем запуска и перевесил всё на этот силовой модуль. (Печально на самом деле все.) В итоге, есть четыре реле в отдном модуле с грамотной разводкой.(Это пока что меня устраивает) Первое реле на блок комфорта (для опознания что ключ в замке или нету) и магнитолу, Второе реле это на аксессуары, третье на зажигание, и четвертое непосредственно сам стартер. Включаются каждое реле по своему управляющему проводу припоявления на нем "-". Тоесть сделал контакт папа - мама и включаю разом первые три реле разом или выключаю. А четвертое через кнопку, которая осталасть от (бывшего) блока.

Есть ардуино микро про, кнопка, сигнализация starline e96 с программированием входов и выходов, блок 12v to 5v. 

Дело - - - 

Вроде как я понял все комплектующие есть для реализации автомотического алгоритма запуска двигателя. Вопрос как это реализовать и как подключать, смотрел кучу форумов и сайтов. Где делали люди либо на других ардуино (сдругими пинами), либо слишком замороченные (с дополнительными RFID метками ,или автозапуском по GSM модулю). 

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

evgta
Offline
Зарегистрирован: 02.09.2016
DimkaGTX
Offline
Зарегистрирован: 15.01.2018

Спасибо, конечно. Но суть посто чтобы сделать что-то свое надежное и в случае чего легко ремонтируемое и настраевомое. 

По поводу запуска , я думал об этом. Но как я понял нужно заказать для ардуино модуль который будет измерять напряжение бортовой сети. Было также по лампочке аккумулятора которая гаснет при запуске двигателя. Это как вариант. Тахо сигнал приходит к приборке по CAN шине в цифре. Это характерно для моей машины (VW Passat B5+ 2001г.)

А заказывать с али готовый модуль конечно просто, но:

1. Это нужно долго ждать (и ездить без какой либо защиты, тобишь может любой състь в мой автомобиль, соединить два проводка и благополучно сделать.)

2.Поэтому я и тороплюсь с реализацией данной автоматизированной системы.

3. У меня подключен силовой модуль запуска от Starline, и сделал сразу на советь пропояв все соединения. (А разрывать и что-то переделывать не очень хочется. Портить красоту и порядок так сказать. )

Я программированием не занимался на урдуино, поэтому и прошу помощи у вас.

evgta
Offline
Зарегистрирован: 02.09.2016

А куда родной иммобилайзер подевался? 

Никто за Вас тут писать программу и схему небудет, логику работы или ошибки в скетче, схеме подскажут, но не более.

выше приведеные девйсы можно подключить и к вашей текущей схеме. да, можно сигнал о заряде и с генератора снять.

MaksVV
Offline
Зарегистрирован: 06.08.2015

DimkaGTX пишет:

Спасибо, конечно. Но суть посто чтобы сделать что-то свое надежное и в случае чего легко ремонтируемое и настраевомое. 

По поводу запуска , я думал об этом. Но как я понял нужно заказать для ардуино модуль который будет измерять напряжение бортовой сети. Было также по лампочке аккумулятора которая гаснет при запуске двигателя. .......

....У меня подключен силовой модуль запуска от Starline, и сделал сразу на советь пропояв все соединения. (А разрывать и что-то переделывать не очень хочется. Портить красоту и порядок так сказать. )

КПП механика? какой модуль запуска старлайн подключен? я так понял подключена полностью действующая сигнализация старлайн Е96

MaksVV
Offline
Зарегистрирован: 06.08.2015

у старлайна брелок настраивается как метка, т.е. без брелка блокировки будут активны в любом случае. Поэтому просто подключаем многоконтактую кнопку на запуск и всё. Единственный минус, нажимать кнопку нужно будет до запуска двигателя (т.е. НЕ короткое нажатие), но в морозы это наоборот плюс - сам контролируешь время вращения стартера.  

DimkaGTX
Offline
Зарегистрирован: 15.01.2018

А куда родной иммобилайзер подевался? 

Отключен.

DimkaGTX
Offline
Зарегистрирован: 15.01.2018

Механика, Силовой модуль запуска Starline, который шел в комплекте с сигнализацией Starline e96 BT

DimkaGTX
Offline
Зарегистрирован: 15.01.2018

Я просил помочь, а не делать за меня.

По поводу скейтча можем договориться за деньги. (Если только объясните, что куда подключать и гарантируете работу. Я не привык обманывать...)

evgta
Offline
Зарегистрирован: 02.09.2016

DimkaGTX пишет:

А куда родной иммобилайзер подевался? 

Отключен.

Отключен? или метка к антенне иммо примотана? если примотана, то отмотать и носить с собой, и ждать пока не приедет новый блок автозапуска

не все так просто как кажется, цену на разработку можете узнать в разделе -ищу исполнителя-

но как-то сомнительно что меньше 15-20 килорублей возьмут

DimkaGTX
Offline
Зарегистрирован: 15.01.2018

MaksVV пишет:

у старлайна брелок настраивается как метка, т.е. без брелка блокировки будут активны в любом случае. Поэтому просто подключаем многоконтактую кнопку на запуск и всё. Единственный минус, нажимать кнопку нужно будет до запуска двигателя (т.е. НЕ короткое нажатие), но в морозы это наоборот плюс - сам контролируешь время вращения стартера.  

Вот поютому и выбор был в пользу ардуино, что бы дапустим удерживая кнопку можно было включить полуавтоматический режим запуска и тогда стартер крутился бы до тех пор пока зажата кнопка. Режимы работы и простота в использование. Если я буду ездить на машине то я разберусь. А если жена сядет то это будет катастрофа...

DimkaGTX
Offline
Зарегистрирован: 15.01.2018

Не думаю что это будет так дорого стоить. Тобишь очень много исходников в интернете, которые знающий человек может переделать минут за 6 с описанием.

DimkaGTX
Offline
Зарегистрирован: 15.01.2018

К примеру вот я нашел, давно уже. Заливал на свою, но с подключениями так и не получилось разобраться. Потому что там пины другие прописаны и некоторые функции удалить которые мне не нужны...

**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 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(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,*!digitalRea d(GreenGlazokPin));
**********delay(100);
********}*/
********
********
******if (button == 1500) {
********StopAll();
******}
******else if (button != 0 && newTime > 500) {
********if (!stateACC) 
**********StopAll();
********else
********{********
**********StopEngine();
**********statusEngine*=*5;
********}
******}
******else if (newTime > 800 && newTime < 900 && StopIsPress()) {
********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>1500) { //<-------ВЕРНУТЬ СЮДА ТЫЩУ!!!! <-------
**********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); 
****}

 

DimkaGTX
Offline
Зарегистрирован: 15.01.2018

MaksVV
Offline
Зарегистрирован: 06.08.2015

дак сигнализация Старлайн то подключена или нет? На ней можно настроить допканал, на котором будет появляться минус, когда ДВС запущен, что упрощает отключение стартера ардуиной. 

MaksVV
Offline
Зарегистрирован: 06.08.2015

и то, что вы называете модуль запуска, на самом деле таковым не является, а называется силовой релейный модуль. Модуль запуска это самодостаточное устройство, которое само может запускать ДВС по команде (например импульс GND на входе). 

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

Этот скетч но без ** #12

/**/
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 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(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 > 800 && newTime < 900 && StopIsPress()) {
        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 > 1500) { //<-------ВЕРНУТЬ СЮДА ТЫЩУ!!!! <-------
          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);
}
/*Скетч использует 4262 байт (13%) памяти устройства. Всего доступно 32256 байт.
  Глобальные переменные используют 329 байт (16%) динамической памяти, оставляя 1719 байт для локальных переменных. Максимум: 2048 байт.
*/

 

 

b707
Offline
Зарегистрирован: 26.05.2017

DimkaGTX пишет:

Не думаю что это будет так дорого стоить. Тобишь очень много исходников в интернете, которые знающий человек может переделать минут за 6 с описанием.

ну ты же выше хотел, чтобы "с гарантией". С гарантией никто на коде, найденном в инете - делать не будет. Большинство скетчей в инете написано "горе-мастерами", типа тебя, только вчера взявшими ардуину в руки. Почему-то именно тема автозапуска особо популярна у всяких рукожопов.

Цена за такой проект точно не может быть дешевле, чем покупной блок управления. Потому что фабричные изделмя могут держать цену за счет опта. Если же кто-то будет разрабатывать под тебя, с учетом твоей машины и твоих хотелок - думаю цена должна быть в 3-5 раз дороже какого-нить Старлайна китайского...

evgta
Offline
Зарегистрирован: 02.09.2016

да погорел модуль у него, написано в первом посте, но человек считает что будет быстрее, надежнее и дешевле сделать на ардуине чем заказать готовый за 1100-1500 рублей, при этом не понимая ни в программировании , ни в схемотехнике. 

Флаг в руки и барабан на шею

b707
Offline
Зарегистрирован: 26.05.2017

evgta пишет:
человек считает что будет быстрее, надежнее и дешевле сделать на ардуине чем заказать готовый за 1100-1500 рублей, при этом не понимая ни в программировании , ни в схемотехнике.

знакомая тема. Человек просто не умеет считать деньги. За 1000 рублей ему разве что "блинк" напишут :)

Если у него неограниченное количество времени (безработный) и куча халявных деталей - то за полгода может все освоить и сделать сам. Только пойти работать даже за минимальную зарплату будет явно выгоднее :)

MaksVV
Offline
Зарегистрирован: 06.08.2015

короче это купить и не парить мозг. Уж кнопку до запуска удержите, так на некоторых фордах, например, штатно сделано. 

DimkaGTX
Offline
Зарегистрирован: 15.01.2018

Спасибо ребята за добрые советы! Потдержали так сказать.

 

Клапауций 089
Клапауций 089 аватар
Offline
Зарегистрирован: 14.01.2018

b707 пишет:

За 1000 рублей ему разве что "блинк" напишут :)

я напишу 10 блинков по 99.99 рублей. О_О

DimkaGTX
Offline
Зарегистрирован: 15.01.2018

Отдельное истенное спасибо человеку с ником "MaksVV" единственный человек который имеет право называть себя человеком. А не ишет возможности смеяться над чужими проблеммами. И спасибо за идею появления минуса при старте очень помог. 

По поводу работы, да я работаю, а после работы колымлю. Поэтому совсем нет времени. А так бы и сам разобрался. Просто хотел помощи человеческой. 

И да, про "горе мастер" и "рукожоп" конечно конечно. Без условно все асы один я никчемный. 

DimkaGTX
Offline
Зарегистрирован: 15.01.2018
Клапауций 089
Клапауций 089 аватар
Offline
Зарегистрирован: 14.01.2018

DimkaGTX пишет:
 

По поводу работы, да я работаю, а после работы колымлю.

 

так, у тебя бабла должно быть в мешках припасено немеренно. О_О

шо ж ты побираешься, скряга? обзываешь тут всех жадными нечеловеками, а сам, где?

DimkaGTX
Offline
Зарегистрирован: 15.01.2018

Клапауций 089 пишет:

DimkaGTX пишет:
 

По поводу работы, да я работаю, а после работы колымлю.

 

так, у тебя бабла должно быть в мешках припасено немеренно. О_О

шо ж ты побираешься, скряга? обзываешь тут всех жадными нечеловеками, а сам, где?

ЗП 12 000 в месяц дружище. На большее в поселке не возможно расшивилиться. 

DimkaGTX
Offline
Зарегистрирован: 15.01.2018

Если и обидел кого, то  извините. Не хотел. Не обзывался я, тем более не на всех. 

 

x3xsevastopol
Offline
Зарегистрирован: 11.02.2019

Дмитрий, если у вас уже установлен и работает Е96, то никакие ардуины для реализации алгоритма Старт/стоп не нужны. Сама сигнализация 6-го поколения позволяет это сделать на гибкой логике( ГЛ). Я могу помочь с реализацией бесплатно. Напишу ГЛ. Подключите вы все сами.

MaksVV
Offline
Зарегистрирован: 06.08.2015

да , чел год вас ждал, дождался наконец.