avr 0 March 5 Posted March 5 · Report post //////////////////////////////////////////////////////////////////////// //#include <SoftwareSerial.h> //SoftwareSerial mySerial(3, 2); // RX, TX //Выходы #define SIGNAL 2 //Сигнал (сирена) #define LOCKED 3 //Замки на закрытие (выход на реле) #define OPEN 4 //Замки на открытие (выход на реле) #define TURN_SIGNALS 5 //Поворотники #define START_ENGINE 12 //Запуск двигателя #define IGNITION 13 //Включение зажигания //Входы #define BUTTON_LEFT_FR 6 //Концевик левой передней двери #define BUTTON_RIGHT_FR 6 //Концевик правой передней двери #define BUTTON_LEFT_RR 8 //Концевик левой задней двери #define BUTTON_RIGHT_RR 8 //Концевик правой задней двери #define BUTTON_HOOD 10 //Концевик капота #define BUTTON_TRUNK 10 //Концевик багажника //Состояние сигнализации boolean signal_state = 0; // 0 - сигнализация выкл. 1 - сигнализация вкл. boolean eng_flag = 0; boolean signal_flag = 0; //Данные с телефона int data; void setup() { //Выходы pinMode(SIGNAL, OUTPUT); pinMode(LOCKED, OUTPUT); pinMode(OPEN, OUTPUT); pinMode(TURN_SIGNALS, OUTPUT); pinMode(START_ENGINE, OUTPUT); pinMode(IGNITION, OUTPUT); //Входы pinMode(BUTTON_LEFT_FR, INPUT_PULLUP); pinMode(BUTTON_RIGHT_FR, INPUT_PULLUP); pinMode(BUTTON_LEFT_RR, INPUT_PULLUP); pinMode(BUTTON_RIGHT_RR, INPUT_PULLUP); pinMode(BUTTON_HOOD, INPUT_PULLUP); pinMode(BUTTON_TRUNK, INPUT_PULLUP); // Настройка BLUETOOTH Serial.begin(38400); } void loop() { if (signal_state == 1) { //Концевики дверей (если хоть одна дверь открыта, срабатывает реле на сирену) if (!digitalRead(BUTTON_LEFT_FR) == LOW || !digitalRead(BUTTON_RIGHT_FR) == LOW || !digitalRead(BUTTON_LEFT_RR) == LOW || !digitalRead(BUTTON_RIGHT_RR) == LOW) { Alarm(); } //Концевик капота и багажника (если открыт капот или багажник, срабатывает реле на сирену) if (!digitalRead(BUTTON_HOOD) == LOW || !digitalRead(BUTTON_TRUNK) == LOW) { Alarm(); } } else if(signal_state == 0){ //Выключили сигнализацию если она была снята с охраны digitalWrite(SIGNAL, LOW); Serial.println("0"); delay(800); } //Приём данных с телефона if(Serial.available()){ //Если в порт что-то поступило делаем... data = Serial.read(); //Если данные пришли сохраняем их в переменную if(data == '1') { //Если пришла 1 то ставим сигнализацию в режим охраны и закрываем замки дверей signal_state = 1; digitalWrite(TURN_SIGNALS, HIGH); delay(800); digitalWrite(TURN_SIGNALS, LOW); delay(800); // закрываем замки digitalWrite(LOCKED, HIGH); delay(150); digitalWrite(LOCKED, LOW); } if(data == '2'){ //Если пришла 2 то сниаем сигнализацию с режима охраны и открываем двери signal_state = 0; digitalWrite(TURN_SIGNALS, HIGH); delay(400); digitalWrite(TURN_SIGNALS, LOW); delay(400); // открываем замки digitalWrite(OPEN, HIGH); delay(150); digitalWrite(OPEN, LOW); // повторяем маргать поваротами. digitalWrite(TURN_SIGNALS, HIGH); delay(400); digitalWrite(TURN_SIGNALS, LOW); delay(400); digitalWrite(TURN_SIGNALS, HIGH); delay(400); digitalWrite(TURN_SIGNALS, LOW); } if(data == '3'){ //Если пришла 3 то включаем зажигание, если оно было уже включено то выключаем его if(eng_flag == 0) { digitalWrite(IGNITION, HIGH); } else { digitalWrite(IGNITION, LOW); } eng_flag = !eng_flag; } if(data == '4') { //Если пришла 4 то запускаем двигатель if(eng_flag == 1){ digitalWrite(START_ENGINE, HIGH); delay(1500); digitalWrite(START_ENGINE, LOW); } if(eng_flag == 0){ digitalWrite(START_ENGINE, LOW); } } } //Обратная связь if(!digitalRead(BUTTON_LEFT_FR) == LOW || !digitalRead(BUTTON_RIGHT_FR) == LOW){ Serial.println("5"); delay(800); } if(!digitalRead(BUTTON_LEFT_RR) == LOW || !digitalRead(BUTTON_RIGHT_RR) == LOW){ Serial.println("6"); delay(800); } if(!digitalRead(BUTTON_HOOD) == LOW){ Serial.println("7"); delay(800); } if(!digitalRead(BUTTON_TRUNK) == LOW){ Serial.println("8"); delay(800); } } //Функция срабатывания сигнализации void Alarm() { digitalWrite(SIGNAL, HIGH); Serial.println("9"); delay(800); } Quote Share this post Link to post Share on other sites More sharing options...
Точка Опоры 97 March 5 Posted March 5 · Report post А что не так в этой портянке, не обрамлённой соответствующими тэгами? Quote Share this post Link to post Share on other sites More sharing options...
avr 0 March 6 Posted March 6 · Report post Все работает двже запаял в саму старлаин сигнализацию готова к установке но тут не реализован ручник для блокировки стартера авто мкпп. Я могу дописать блокировку еще одного реле для стартера но зачем эти сопли реле. Когда pin D7 arduino я подключил на ручник. Я не силен это исправить в скейчь программно. Quote Share this post Link to post Share on other sites More sharing options...
avr 0 March 6 Posted March 6 · Report post только учусь. Quote Share this post Link to post Share on other sites More sharing options...
Sрider 0 March 6 Posted March 6 · Report post 8 hours ago, Точка Опоры said: не обрамлённой соответствующими тэгами? Открой редактирование первого сообщения и выдели код как "код" кнопочка <> на панели. А то заклюют. 2 minutes ago, avr said: только учусь Тут не любят учеников. 🤣 шутка с долей шутки. Немного лирики. Защита от запуска без ручника в уважающих себя сигнашках делается через 2х и более шаговую постановку на охрану. Т.е. ты перед тем как заглушить машину ставишь на ручник, выключаешь зажигание, сигнашка видя это и ручник тут же подхватывает зажигание на себя, ты выходишь, закрываешь дверь и ставишь на охрану. И уже тут сигнашка глушит машину и сохраняет флаг что ты все сделал верно. Далее по команде запуска она (сигнашка) проверяет наличие этого флага и уже заводит или нет. Флаг этот снимается автоматом если ты открыл дверь машины до команды запуска. Зачем так делается? Факт замыкания концевика ручника очень шаткая вещь. Проводок ручника идут вторым концом в приборку (или IPDM) где в примитивном варианте на лампочку, которая на питание. Когда ты выключаешь зажигание ты снимаешь это питание с лампочки (чтобы акум не сел) и тем самым создаёшь сложную схему паразитых включений через которые твой GPIO IN HiZ скорее всего снова увидит ручник, даже если ручник не "затянуть". Это все очень упрощено, но около того. Теперь к делу. if(data == '4') { //Если пришла 4 то запускаем двигатель if(eng_flag == 1){ digitalWrite(START_ENGINE, HIGH); delay(1500); digitalWrite(START_ENGINE, LOW); } if(eng_flag == 0){ digitalWrite(START_ENGINE, LOW); } } Тут у тебя ерунда какая то. Но работать будем с тем что есть. eng_flag вроде как флаг факта включения зажигания нами же. Вместо второй проверки вставь else. Ручник. Допустим у тебя ручник на D7. Добавь такую модификацию кода: if(data == '4') { //Если пришла 4 то запускаем двигатель if ((eng_flag == 1) && !digitalRead(7)) { digitalWrite(START_ENGINE, HIGH); delay(1500); digitalWrite(START_ENGINE, LOW); } else { digitalWrite(START_ENGINE, LOW); } } Это примитивно перед запуском проверит ногу D7, что она НОЛЬ (а ручник это концевик на массу) и не будет запускать у противном случае. Но! Это ответ на твой вопрос, а раскрытие темы выше. Quote Share this post Link to post Share on other sites More sharing options...
avr 0 March 6 Posted March 6 · Report post 25 минут назад, avr сказал: Благодарен с работы приду будем пробовать не проподайте спасибо до вечера. Quote Share this post Link to post Share on other sites More sharing options...
avr 0 March 6 Posted March 6 · Report post Sрider Спасибо огромное а я неделю перебирал код так и не получалось круто вы решили. У меня еще есть вапросы к этому коду можно обратится к вам по решению не дочотов. А так зсе работает блокировка стартера на макетке можно уже загружать в старлаин самодельный. А так зсе работает блокировка стартера на макетке можно уже загружать в старлаин самодельный. Quote Share this post Link to post Share on other sites More sharing options...
avr 0 March 6 Posted March 6 · Report post Помогите допилить код что бы LED под стеклом моргал при установки на охрану не получается пишу код сразу рушится. Только что, avr сказал: Мне так кажется это не конец доработки скейч. Quote Share this post Link to post Share on other sites More sharing options...
dimka76 96 March 6 Posted March 6 · Report post On 3/6/2026 at 7:56 AM, Sрider said: Ручник. Допустим у тебя ручник на D7. Добавь такую модификацию кода: if(data == '4') { //Если пришла 4 то запускаем двигатель if ((eng_flag == 1) && !digitalRead(7)) { digitalWrite(START_ENGINE, HIGH); delay(1500); digitalWrite(START_ENGINE, LOW); } else { digitalWrite(START_ENGINE, LOW); } } if(data == '4') { //Если пришла 4 то запускаем двигатель if ((eng_flag == 1) && !digitalRead(7)) { digitalWrite(START_ENGINE, HIGH); delay(1500); } digitalWrite(START_ENGINE, LOW); } Quote Share this post Link to post Share on other sites More sharing options...
avr 0 March 6 Posted March 6 · Report post За это время я уже добавил кое что уже есть изменения. это я уже работает спасибо. мне надо другое led под стекло добавить моргать Помогите допилить код что бы LED под стеклом моргал при установки на охрану не получается пишу код сразу рушится. if(data == '4') { //Если пришла 4 то запускаем двигатель if ((eng_flag == 1) && !digitalRead(7)) { digitalWrite(START_ENGINE, HIGH); delay(1500); } digitalWrite(START_ENGINE, LOW); } Спасибо за помощь этот код уже работает все отлично .Надо с LED решить под лобовое стекло как оригинал было. Quote Share this post Link to post Share on other sites More sharing options...
avr 0 March 7 Posted March 7 · Report post Помогите подправить что бы LED индикатор моргал при постановки на охрану у меня не получается что то. Quote Share this post Link to post Share on other sites More sharing options...
codenamehawk 3 March 7 Posted March 7 · Report post On 3/6/2026 at 8:35 PM, avr said: digitalWrite(START_ENGINE, HIGH); delay(1500); } digitalWrite(START_ENGINE, LOW); Явно, в конце не хватает еще одного delay Но такие задержки не есть хорошо, пока отрабатывает delay ничего другого не опрашивается, программа "тупит". Как обойтись без delay есть в примере BlinkWithoutDelay. Еще "правильнее" запустить мигание как например у https://github.com/JChristensen/Timer/blob/master/examples/blink2/blink2.ino https://www.doctormonk.com/2012/01/arduino-timer-library.html Quote Share this post Link to post Share on other sites More sharing options...
avr 0 March 8 Posted March 8 · Report post Хорошо Спасибо сейчас попробую разобраться с этим кодом но не факт что пойму что к чему. Quote Share this post Link to post Share on other sites More sharing options...
avr 0 March 8 Posted March 8 · Report post Ругается Arduino //////////////Timer.h: No such file or directory////////////////////////// Я поставил библиотеку все равно ругается Quote Share this post Link to post Share on other sites More sharing options...
dimka76 96 March 8 Posted March 8 · Report post On 3/8/2026 at 1:08 PM, avr said: Ругается Arduino //////////////Timer.h: No such file or directory////////////////////////// Я поставил библиотеку все равно ругается Какую библиотеку вы поставили и на основе какого примера вы используете Timer.h ? Quote Share this post Link to post Share on other sites More sharing options...