Устройство сопряжения замка зажигания и автосигнализации
- Войдите на сайт для отправки комментариев
Ребята всем привет! Занимаюсь иногда автозапуском для хитрых авто, типа немцев, так там они мутят хитрые алгоритмы работы замков, слотов и тд... вот одно из них, на основе предыдущего устройства и скетча(писал не я) поправил под свои нужды и времена и каналы, у меня появился на этом устройстве вход 2, все вроде работает корректно, но есть один косячек, пока самому мне не удалось поправить, если посмотрите в скетче то понятно что если на входе 1 лог 0 будет висеть на все время работы устройства то при подаче на 2 вход отработает все то что ниже в коде, то есть все как надо, но предположим что по каким то причинам не было импульса на входе 2, то программа у меня висит и ожидает импульс входа 2, мне нужно, если не будет лог 0 на входе 1 то программа продолжит выполнение кода а не будет ждать входа 2
// htpicc@gmail.com -> Юра Евров <mtx245@mail.ru> 2010-jan-12 #define IN1 2 #define IN2 3 #define OUT1 4 #define OUT2 5 #define OUT3 6 #define OUT4 7 #define OUT5 8 #define OUT6 9 #define OUT7 10 void setup() { digitalWrite(OUT1, LOW); pinMode(OUT1, OUTPUT); digitalWrite(OUT2, LOW); pinMode(OUT2, OUTPUT); digitalWrite(OUT3, LOW); pinMode(OUT3, OUTPUT); digitalWrite(OUT4, LOW); pinMode(OUT4, OUTPUT); digitalWrite(OUT5, LOW); pinMode(OUT5, OUTPUT); digitalWrite(OUT6, LOW); pinMode(OUT6, OUTPUT); digitalWrite(OUT7, LOW); pinMode(OUT7, OUTPUT); } void loop() { static uint32_t t; static bool out3; while (digitalRead(IN1)); digitalWrite(OUT1, HIGH); //включили 1 delay(10); digitalWrite(OUT2, HIGH); //включили 2 t = millis(); while (millis() - t < 1500) //ждём 3 if (digitalRead(IN1)) //и проверяем вход 1 break; out3 = false; if (!digitalRead(IN1)) { out3 = true; digitalWrite(OUT1, LOW); //выключили 1 digitalWrite(OUT3, HIGH); //включили 3 delay(1000); digitalWrite(OUT1, HIGH); //включили 1 digitalWrite(OUT3, LOW); //выключили 3 } if(digitalRead(IN1)==true); //вот тут где то засада, надо что бы вход читался и контролировался, если на нем //пропал 0, нужно что бы программа не ожидала импульса входа 2 а продолжила выпол кода ниже while (digitalRead(IN2)); //проверяем вход 2 { delay(200); digitalWrite(OUT7, HIGH); //включили 7 (педаль тормоза) delay(500); digitalWrite(OUT1, LOW); //выключили 1 digitalWrite(OUT2, LOW); //выключили 2 digitalWrite(OUT5, HIGH); //включили 5 digitalWrite(OUT3, HIGH); //включили 3 digitalWrite(OUT6, HIGH); //включили 6 delay(1500); digitalWrite(OUT5, LOW); //выключили 5 digitalWrite(OUT3, LOW); //выключили 3 digitalWrite(OUT6, LOW); //выключили 6 digitalWrite(OUT1, HIGH); //включили 1 digitalWrite(OUT2, HIGH); //включили 2 delay(5000); digitalWrite(OUT7, LOW); } while (!digitalRead(IN1)); //ждём окончания входного delay(1000); digitalWrite(OUT1, LOW); //выключили 1 digitalWrite(OUT4, HIGH); //включили 4 digitalWrite(OUT5, HIGH); //включили 5 delay(1000); digitalWrite(OUT4, LOW); //выключили 4 digitalWrite(OUT5, LOW); //выключили 5 digitalWrite(OUT1, HIGH); //включили 1 delay(2000); digitalWrite(OUT1, LOW); //выключили 1 digitalWrite(OUT2, LOW); //выключили 2 }
Круто, чё!
Только я не увидел в тексте ни одного знака вопроса и ни одного термина, семантически эквивалентного слову "просьба" или, хотя бы, "вопрос".
человек занимается "хитрыми" системами на "хитрых" машинах... видимо поднабрался хитрости от железок...
Гуру своего дела, прошу прощения, будьте добры, подсобите по возможности, я не силен еще в написании кода, есть большое желание научиться.
Керниган и Ритчи помогут обрести базовые знания. Тогда будет о чем здесь поговорить.
Ясно, спасибо за помощь, "гуру".. фото бы сменили на аве... сам разберусь...
из того что я понял надо убрать опрос 2 входа под условие
Да нужно опрос входа 2 сделать под условие