ПС: Если я чего то понимаю, то сначало вкл стартер и цилинды мотора набиваюся газообразным топливом, а потом идет искра (зажигание). А у вас почему-то иначе.
Irinka пишет:
Суть то немного другая
Включается зажигание
Проходит 5 секунд
Включается стартер
Проходит 2 секунды
Выключается стартер
Вот. )
Включается зажигание. Бензонасос накачал топливо в рампу. Отключился (контроля на отключение не делаю, так как нужно менять реле на пятиконтактное, вообщем долго, для этого включаю зажигание на 5 секунд, этого достаточно)
Затем на 2 секунды включается стартер, заводит машину и отключается. Если не завелась, операция повторяется (три цикла).
ПС: если вам надо несколько раз включить -выключить"стартер" , то потом уже окончательно выключить "зажигание" то сделайте 10 однотипных отложенных функций и 10 флагов к ним. Немного громоздко, но вам на первое время хватит.
А ещё посол разный бывает.
Огурчик в банка - пряный посол.
Мужик в пиджак в машин с флажком, заграничный - чрезвычайный и полномочный посол.
Утомил тебя кто - в жопа пасол.
MaksVV,ну что Вы прицепились к грамматике нерусского языка. Это же не тематика данного форума.
И где скачать учебник по правильным названиям переменных. Устроим форумское голосование или назначим ответсвенного для выявления правильных и неправильных названий.
void loop(){ currentMillis = millis(); if (flagStarta && currentMillis - previousMillis > 5000) { flagStarta = false; flagStarta1 = true; digitalWrite(_starter, HIGH); Serial.println("Стартер запущен"); } else if (flagStarta1 && currentMillis - previousMillis > 7000) { flagStarta1 = false; flagStarta2 = true; digitalWrite(_starter, LOW); Serial.println("Стартер остановлен"); } else if (flagStarta2 && currentMillis - previousMillis > 9000) { flagStarta2 = false; flagStarta3 = true; Serial.println("Проверяем вольты"); voltmetr(); } else if (flagStarta3 && currentMillis - previousMillis >progrev*60000) { flagStarta3 = false; stopDvig(); } //Управление if (Serial.available()) { int val = Serial.read(); if (val == '1') startDvig(); if (val == '0') stopDvig(); } }ПС: Если я чего то понимаю, то сначало вкл стартер и цилинды мотора набиваюся газообразным топливом, а потом идет искра (зажигание). А у вас почему-то иначе.
Суть то немного другая
Включается зажигание
Проходит 5 секунд
Включается стартер
Проходит 2 секунды
Выключается стартер
Вот. )
Включается зажигание. Бензонасос накачал топливо в рампу. Отключился (контроля на отключение не делаю, так как нужно менять реле на пятиконтактное, вообщем долго, для этого включаю зажигание на 5 секунд, этого достаточно)
Затем на 2 секунды включается стартер, заводит машину и отключается. Если не завелась, операция повторяется (три цикла).
ПС: если вам надо несколько раз включить -выключить"стартер" , то потом уже окончательно выключить "зажигание" то сделайте 10 однотипных отложенных функций и 10 флагов к ним. Немного громоздко, но вам на первое время хватит.
ПС:Поправил Скетч
/**/ //----main------------------------ void setup() { Serial.begin(9600); } void loop() { static unsigned long previousMillis = 0; static bool flag1 = false; static bool flag2 = false; unsigned long currentMillis = millis(); //Управление if (Serial.available()) { char val = Serial.read(); if (val == '1') { /*запуск*/ /*Включается зажигание*/ Serial.println("Fire On"); /* включает флаг1*/ flag1 = true; previousMillis = currentMillis; } } /*первая отложеная функция*/ if (flag1 && currentMillis - previousMillis >= 5000) { //Проходит 5 секунд //выключает флаг1 flag1 = false; // включает флаг2 flag2 = true; previousMillis = currentMillis; /*Включается стартер*/ Serial.println("Stater ON"); } /*вторая отложеная функция*/ if (flag2 && currentMillis - previousMillis >= 2000) { //Проходит 2 секунды // выключает флаг2 flag2 = false; /*Выключается стартер*/ Serial.println("Stater OFF"); } } /*Скетч использует 1706 байт (5%) памяти устройства. Всего доступно 32256 байт. Глобальные переменные используют 220 байт (10%) динамической памяти, оставляя 1828 байт для локальных переменных. Максимум: 2048 байт. */Большое спасибо
/**/ //----main------------------------ void setup() { Serial.begin(9600); } void loop() { static unsigned long previousMillis = 0; static bool flag1 = false; static bool flag2 = false; static bool flag3 = false; static bool flag4 = false; static bool flag5 = false; static bool flag6 = false; unsigned long currentMillis = millis(); //Управление if (Serial.available()) { char val = Serial.read(); if (val == '1') { /*запуск*/ /*Включается зажигание*/ Serial.println("Fire On"); /* включает флаг1*/ flag1 = true; previousMillis = currentMillis; } } /*1 отложеная функция*/ if (flag1 && currentMillis - previousMillis >= 5000) { //Проходит 5 секунд //выключает флаг1 flag1 = false; // включает флаг2 flag2 = true; previousMillis = currentMillis; /*Включается стартер*/ Serial.println("Stater ON"); } /*2 отложеная функция*/ if (flag2 && currentMillis - previousMillis >= 2000) { //Проходит 2 секунды // выключает флаг2 flag2 = false; // включает флаг3 flag3 = true; previousMillis = currentMillis; /*Выключается стартер*/ Serial.println("Stater OFF"); } /*3 отложеная функция*/ if (flag3 && currentMillis - previousMillis >= 5000) { //Проходит 5 секунд //выключает флаг3 flag3 = false; // включает флаг4 flag4 = true; previousMillis = currentMillis; /*Включается стартер*/ Serial.println("Stater ON"); } /*4 отложеная функция*/ if (flag4 && currentMillis - previousMillis >= 2000) { //Проходит 2 секунды // выключает флаг4 flag4 = false; // включает флаг5 flag5 = true; previousMillis = currentMillis; /*Выключается стартер*/ Serial.println("Stater OFF"); } /*5 отложеная функция*/ if (flag5 && currentMillis - previousMillis >= 5000) { //Проходит 5 секунд //выключает флаг5 flag5 = false; // включает флаг6 flag6 = true; previousMillis = currentMillis; /*Включается стартер*/ Serial.println("Stater ON"); } /*6 отложеная функция*/ if (flag6 && currentMillis - previousMillis >= 2000) { //Проходит 2 секунды // выключает флаг6 flag6 = false; /*Выключается стартер*/ Serial.println("Stater OFF"); /*Выключается зажигание*/ Serial.println("Fire OFF"); /*конец запуска*/ } } /*Скетч использует 2052 байт (6%) памяти устройства. Всего доступно 32256 байт. Глобальные переменные используют 234 байт (11%) динамической памяти, оставляя 1814 байт для локальных переменных. Максимум: 2048 байт. */Да-да, я так и сделала. Огромное Спасибо.
Скрыть код. Там когда всталяете код на второй панели флажек поставить в нужном месте-свернуть код.
Я только-что нашла, ранее внимания не обращала)
Здравствуйте. Вроде бы все решили. Но в явном виде, как ниже, не было. Так нормально?
last_time=millis(); if ( last_time - last_update_time >= SENS_UPDATE_TIME ) { last_update_time = last_time; ....... }только названия корявые. скорее так
current_time=millis(); // текущее время if ( current_time - last_update_time >= SENS_UPDATE_TIME ) { last_update_time = current_time; ....... }А ещё посол разный бывает.
Огурчик в банка - пряный посол.
Мужик в пиджак в машин с флажком, заграничный - чрезвычайный и полномочный посол.
Утомил тебя кто - в жопа пасол.
MaksVV,ну что Вы прицепились к грамматике нерусского языка. Это же не тематика данного форума.
Здравствуйте.
MaksVV, qwone спасибо большое.
MaksVV, мне Ваши имена переменных, ну по крайней мере, одной, тоже больше нравятся. Сравнил, и правда: в последний раз...))
qwone, спасибо за настроение.
кроме шуток, переменные нужно правильно называть, чтоб потом не путаться.
И где скачать учебник по правильным названиям переменных. Устроим форумское голосование или назначим ответсвенного для выявления правильных и неправильных названий.
И где скачать учебник по правильным названиям переменных.
Как где? Все фанаты этого дела кипятком исходятся от «Stanford C++ Style Guide». там есть глава и про именование.
А вообще, про именование переменных лучше всего написано у В.В. Маяковского, всякие Стэнфорды нервно курят в сторонке:
Я не стороник длинных немецких существительных. Вот и не надо делать название переменных длинее их. https://germania.one/15-samyh-dlinnyh-slov-v-nemeckom-jazyke/ Что бы сказал ВВ Маяковский если был бы начал учить немецкий язык.