Автозапуск авто на Arduino
- Войдите на сайт для отправки комментариев
Ср, 03/11/2021 - 18:47
Всем привет, помогите разобраться с кодом, автомобиль запускается и через некоторое время глохнет, может заглохнуть через минуту а может и через 20 минут, в чем может быть проблема?
#define zazh1 4 #define zazh2 5 #define starter 10 #define obmanka 3 #define sceplenie 2 #define lamp_zar 6 #define ruchnik 8 #define signall 11 String val = ""; //переменная для чтения из сериал int ch = 0; //хз прост переменная int flag; byte flag2; void setup(void) { //Предустановки Serial.begin(9600); //скорость работы Serial.println("Start Program"); //текст запуска pinMode(zazh1, OUTPUT); // зажигание 1 pinMode(zazh2, OUTPUT); // зажигание 2 pinMode(starter, OUTPUT); // реле стартера pinMode(obmanka, OUTPUT); // реле обманки иммобилайзера pinMode(sceplenie, OUTPUT); // реле иммитации нажатия педали сцепления pinMode(lamp_zar, INPUT); // считываем состояние лампы заряда pinMode(ruchnik, INPUT_PULLUP); // считываем состояние ручника pinMode(signall, INPUT_PULLUP); // считываем состояние импульса с блока сигнализаии digitalWrite(zazh1, HIGH); // выкл заж 1 digitalWrite(zazh2, HIGH); // выкл заж 2 digitalWrite(obmanka, HIGH); // выкл обманку digitalWrite(sceplenie, HIGH); // выкл сцепление digitalWrite(starter, LOW); // выкл реле стартера } void loop(void) { //основная программа if (digitalRead(signall) == LOW && digitalRead(lamp_zar) == LOW) { delay (700); flag = 1; } else if (digitalRead(signall) == LOW && digitalRead(lamp_zar) == HIGH) { delay (700); flag = 2; } if (digitalRead(ruchnik) == HIGH) { digitalWrite(zazh1, HIGH); digitalWrite(zazh2, HIGH); digitalWrite(obmanka, HIGH); digitalWrite(sceplenie, HIGH); digitalWrite(starter, LOW); if (flag2 == 0) { Serial.println("!!!!No Start Motor!!!!"); // для красивой строчки flag2 = 1; } flag=0; val = ""; //очищаем сообщение } ///////////////////////////сохраняем сообщение из сериал/////////////////////////////////////////// if (Serial.available() || flag != 0 && digitalRead(ruchnik) != 1) { //есть данные от Serial delay(200); //выждем, чтобы строка успела попасть в порт целиком раньше чем будет считана while (Serial.available()) { //сохраняем входную строку в переменную val ch = Serial.read(); val += char(ch); delay(10); } Serial.print ("******** Postupilo soobshenie ("); //Просто подтверждаем Serial.print(val); // сообщаем об этом в терминал (если нужно) Serial.println(")**************************");// для красивой строчки if (val == "Za1") { // если поступило Za1 Serial.print ("Zapysk ("); //Просто подтверждаем Serial.print(val); // сообщаем об этом в терминал (если нужно) Serial.println(")"); // для красивой строчки val = ""; //очищаем сообщение digitalWrite(zazh1, LOW); // вкл зажиг 1 Serial.println(digitalRead(zazh1)); // выводим состояние } else if (val == "Za2") { // если поступило Za2 Serial.print ("Zapysk ("); //Просто подтверждаем Serial.print(val); // сообщаем об этом в терминал (если нужно) Serial.println(")"); // для красивой строчки val = ""; //очищаем сообщение digitalWrite(zazh2, LOW); // вкл зажиг 2 Serial.println(digitalRead(zazh2)); // выводим состояние } else if (val == "Scep") { // если поступило Scep Serial.print ("Push ("); //Просто подтверждаем Serial.print(val); // сообщаем об этом в терминал (если нужно) Serial.println(")"); // для красивой строчки val = ""; //очищаем сообщение digitalWrite(sceplenie, LOW); // эмитируем нажатие педали сцепления Serial.println(digitalRead(sceplenie)); // выводим состояние } else if (val == "Obman") { // если поступило Obman Serial.print ("Start ("); //Просто подтверждаем Serial.print(val); // сообщаем об этом в терминал (если нужно) Serial.println(")"); // для красивой строчки val = ""; //очищаем сообщение digitalWrite(obmanka, LOW); // эмитируем нажатие педали сцепления Serial.println(digitalRead(obmanka)); // выводим состояние } else if (val == "Starter") { // если поступило Starter Serial.print ("Start ("); //Просто подтверждаем Serial.print(val); // сообщаем об этом в терминал (если нужно) Serial.println(")"); // для красивой строчки val = ""; //очищаем сообщение Serial.println("!!!!Start Starter!!!!"); // для красивой строчки digitalWrite(starter, HIGH); // запускаем реле стартера Serial.println(digitalRead(starter)); // выводим состояние в сериал delay (3000); // ждем 3 секунды digitalWrite(starter, LOW ); // останавливаем реле стартера } else if (val == "Off" || flag == 2) { // Запрет на запуск Serial.print ("!!! Warning ("); //Просто подтверждаем Serial.print(val); // сообщаем об этом в терминал (если нужно) Serial.println(") !!!!"); // для красивой строчки val = ""; //очищаем сообщение Serial.println("!!!!Stop Auto!!!!"); // для красивой строчки digitalWrite(zazh1, HIGH); //выкл заж 1 digitalWrite(zazh2, HIGH); //выкл заж 2 digitalWrite(sceplenie, HIGH); //выкл сцепление digitalWrite(starter, LOW); // выкл стартер delay (2000); digitalWrite(obmanka, HIGH); //выкл обманку Serial.print("1. starter = "); // выводим состояние в сериал Serial.println(digitalRead(starter)); // выводим состояние в сериал Serial.print("2. zazh1 = "); // выводим состояние в сериал Serial.println(digitalRead(zazh1)); // выводим состояние в сериал Serial.print("3. zazh2 = "); // выводим состояние в сериал Serial.println(digitalRead(zazh2)); // выводим состояние в сериал Serial.print("4. sceplenie = "); // выводим состояние в сериал Serial.println(digitalRead(sceplenie)); // выводим состояние в сериал Serial.print("5. obmanka = "); // выводим состояние в сериал Serial.println(digitalRead(obmanka)); // выводим состояние в сериал Serial.print("6. ruchnik = "); // выводим состояние в сериал Serial.println(digitalRead(ruchnik)); // выводим состояние в сериал Serial.print("7. lamp_zar = "); // выводим состояние в сериал Serial.println(digitalRead(lamp_zar)); // выводим состояние в сериал Serial.print("8. signall = "); // выводим состояние в сериал Serial.println(digitalRead(signall)); // выводим состояние в сериал Serial.println("!!!!//Stop Auto//!!!!"); // для красивой строчки flag = 0; } else if (val == "Info") { // если поступило Info Serial.print ("Commanda ("); //Просто подтверждаем Serial.print(val); // сообщаем об этом в терминал (если нужно) Serial.println(")"); // для красивой строчки val = ""; //очищаем сообщение Serial.print("1. starter = "); // выводим состояние в сериал Serial.println(digitalRead(starter)); // выводим состояние в сериал Serial.print("2. zazh1 = "); // выводим состояние в сериал Serial.println(digitalRead(zazh1)); // выводим состояние в сериал Serial.print("3. zazh2 = "); // выводим состояние в сериал Serial.println(digitalRead(zazh2)); // выводим состояние в сериал Serial.print("4. sceplenie = "); // выводим состояние в сериал Serial.println(digitalRead(sceplenie)); // выводим состояние в сериал Serial.print("5. obmanka = "); // выводим состояние в сериал Serial.println(digitalRead(obmanka)); // выводим состояние в сериал Serial.print("6. ruchnik = "); // выводим состояние в сериал Serial.println(digitalRead(ruchnik)); // выводим состояние в сериал Serial.print("7. lamp_zar = "); // выводим состояние в сериал Serial.println(digitalRead(lamp_zar)); // выводим состояние в сериал Serial.print("8. signall = "); // выводим состояние в сериал Serial.println(digitalRead(signall)); // выводим состояние в сериал } else if (val == "On" || flag == 1 ) { // Запуск Serial.print ("Start ("); //Просто подтверждаем Serial.print(val); // сообщаем об этом в терминал (если нужно) Serial.println(")"); // для красивой строчки val = ""; //очищаем буфер сообщения Serial.println("!!!!Start Auto!!!!"); // для красивой строчки if (digitalRead(lamp_zar) == LOW && digitalRead(ruchnik) == LOW) { Serial.println("**************** Razreshaem start DVS *************"); // выводим состояние digitalWrite(obmanka, LOW); // вкл обманку delay(2000); digitalWrite(zazh1, LOW); // вкл заж 1 digitalWrite(zazh2, LOW); // вкл заж 2 digitalWrite(sceplenie, LOW); // вкл сцепление delay(3000); // ждем 3 сек для бензонасоса for (int z = 0; z < 1; z++) { //Число попыток запуска ДВС if (digitalRead(lamp_zar) == HIGH || digitalRead(ruchnik) == HIGH) break; // проверяем лампу заряда и ручник, если че вылетаем из цикла () Serial.print("**************** Cikl zapyska startera #"); // выводим надпись Serial.print(z); // выводим номер попытки Serial.println(" **************** "); // выводим надпись digitalWrite(sceplenie, LOW); // выжимаем сцепление Serial.print("Sostoyanie sceplenye :"); // выводим надпись Serial.println(digitalRead(sceplenie)); // выводим состояние педпли сцепления digitalWrite(starter, HIGH); // врубаем стартер Serial.print(". Starter = "); // выводим состояние реле стартера в сериал порт Serial.println(digitalRead(starter)); // выводим состояние for (int i = 0; i < 3; i++) { //Количество секунд прокрутки стартера delay(1000); // задержка в 1 сек if (digitalRead(lamp_zar) == HIGH || digitalRead(ruchnik) == HIGH) break; // проверяем лампу заряда и ручник и если че вылетаем из цикла } Serial.print("**************** Cikl ostanovki startera #"); // выводим надпись Serial.print(z); // выводим состояние Serial.println(" **************** "); // выводим состояние digitalWrite(starter, LOW); // останавливаем стартер Serial.print(". Starter = "); // выводим состояние реле стартера в сериал порт Serial.println(digitalRead(starter)); // выводим состояние digitalWrite(sceplenie, HIGH); //отпускаем педаль сцепления Serial.print(". Sceplenye = "); // выводим состояние реле сцепления в сериал порт Serial.println(digitalRead(sceplenie)); // выводим состояние flag = 0; flag2 = 0; delay (10000); // задержка между попытками } } } else { Serial.print ("Comand ("); //Просто подтверждаем Serial.print(val); // сообщаем об этом в терминал (если нужно) Serial.println(") ne vipolnima"); // для красивой строчки val = ""; Serial.println("No comand"); } } }
Чего в сериал выводит?
В сериал должна выводиться информация в момент запуска двигателя, не особо нужна эта функция, писал друг
автомобиль запускается и через некоторое время глохнет, может заглохнуть через минуту а может и через 20 минут, в чем может быть проблема?
это автофорум? - свечи давно менял?
Странно - вроде написано код автозапуска - а 90% строчек - вывод в Сериал всякой лабуды.
а код, по-моему, полный бред...
Если я правильно вижу - оно будет пытаться запускать мотор бесконечно, даже когда он уже давно будет работать, никакого контроля нет вообще
Аднака, сигналку нада покупать. С автозапуском.
Автор, найди в сети человека по нику Martinhol, он на этом собаку съел. Возьми готовое, хоть там и тоже код не ахти, но хоть опробован
Контролировать запуск по лампе заряда- та ещё хрень. Обороты чуть упали- она и моргнула. Сначала надо бы мотор и генератор в порядок привести. Что за автомобиль? Да ещё с механикой?! Тьфу на вас.