Прошу помочь разобраться со скетчем,вернее доделать. В авто-пуске все работает,в ручном режиме режимы переключает но запуск делает только в авто-пуск а должна крутить стартер пока нажата кнопка. Код (C++): int regim=1; // переменная для выбора нескольких режимов, типа что то выбора меню int flag=0; // переменная состояния нажатия или отжатия кнопки //-------------- для выполнения какого либо действия по истечению заданого времени после нажатия кнопки --------------- int valBut=0; // задаем переменную для счетчика long previousMillis=0; // зададим начальное значение счетчика millis long TimePush=200; // время нажатия на кнопку 500= 8секунд //--------------------------------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------- //--------------- задержка для включеня стартера и ACC --------------------- int previousMillis2=0; int interval2=50; //-------------------------------------------------------------------------- void setup() { pinMode(6, INPUT); // Вход button (кнопка start-stop) pinMode(7, INPUT); // Вход педаль тормоза pinMode(8, INPUT); // Вход сигнал генератора pinMode(9, OUTPUT); // Выход ACC (Акссесуары) pinMode(10, OUTPUT); // Выход ING 1 (зажигание) pinMode(11, OUTPUT); // Выход ING 2 (зажигание) pinMode(12, OUTPUT); // Выход STARTER (стартер) } void loop() { if(digitalRead(6)==HIGH&&flag==0) // если кнопка нажата и переменная flag равна 0, то .... { if(digitalRead(7)==LOW) // "ТОРМОЗ" НЕ НАЖАТ { regim++; // это нужно для того что бы с каждым нажатием кнопки flag=1; // происходило только одно действие // плюс защита от дребезга 100% if(regim>3) // ограничим количество режимов { regim=1; // так как мы используем только одну кнопку, // то переключать режимы будем циклично } } //================================ Режим автоматического пуска в одно нажатие ================================================== = if(digitalRead(7)==HIGH) // если тормоз нажат { start(); // включаем автопуск regim=0; // обнуляем все режимы(отключаем ручной запуск) } } //================================================== ================================================== ==== if(digitalRead(6)==LOW&&flag==1) // проверяем нажата ли кнопка если да, то ... см.ниже { flag=0; // обнуляем переменную "кнопка" } if(regim==1) // первый режим { digitalWrite(9,!LOW); // выключаем ACC digitalWrite(10,!LOW); // выключаем ING 1 digitalWrite(11,!LOW); // выключаем ING 2 digitalWrite(12,!LOW); // выключаем STARTER // ВСЕ ВЫКЛЮЧАЕМ } if(regim==2) // второй режим { digitalWrite(9,!HIGH); // включаем ACC } if(regim==3) // третий режим { digitalWrite(10,!HIGH); // включаем ING 1 digitalWrite(11,!HIGH); // включаем ING 2 if(digitalRead(6)==HIGH&&digitalRead(7)==HIGH&&flag==0) // если нажата кнопка, нажат "ТОРМОЗ", { digitalWrite(12,!HIGH); // включаем стартер digitalWrite(9,!LOW); // выключаем ACC } if(digitalRead(6)==LOW) // проверяем отпушенна ли кнопка { digitalWrite(12,!LOW); // выключаем STARTER digitalWrite(9,!HIGH); // включаем ACC } } } // ЗАПУСК В ОДНО КАСАНИЕ КНОПКИ void start() // Подпрограмма запуска ДВС { //if(digitalRead(6)==HIGH) // если кнопка нажата, то .... { digitalWrite(9,!LOW); // выключаем acc digitalWrite(10,!HIGH); // включаем ing 1 digitalWrite(11,!HIGH); // включаем ing 2 delay(2000); // задержка перед пуском стартера НУЖНО ЗАМЕНИТЬ НА МИЛЛИС digitalWrite(12,!HIGH); // включаем STARTER delay(1000); // ЗАМЕНИТЬ НА МИЛЛИС } if(digitalRead(8)==HIGH||digitalRead(7)==LOW) // если есть сигнал с генератор(+12V) или отпущенн тормоз { digitalWrite(12,!LOW); // выключаем стартер // delay(50); // задержка на включение ACC digitalWrite(9,!HIGH); // включить ACC } }
Mixailovsky, это которая ваша тема по этому вопросу тут и на Арудуино.ру - четвертая? Вам же уже дали кучу советов - и опять форум виноват? может стоит все же своей головой поработать?
Так а что тут сложного стартер крутить?Вы дома как свет включаете?Выведите кнопку комутирующую реле стартера на торпеду и жмите если лень ключом тыкать.Видео про угонщиков не смотрели?Зачем Вам какие то коды?Все просто как Апельсин.
Я предложил решение в первом же ответе. Работа стоит денег, причем большая часть за то чтобы вникнуть в суть просьбы. Практика показывает, что если задание сразу написано непонятно, то придется потратить очень много сил и времени чтобы вытянуть из автора смысл его желаний.
Дык а смысл?Автозапуск у него работает и от ключа как я понимаю тоже тогда задача проще пареной Репы запаралелить контакты зажигания и стартера с переключателями от торшера включи зажигание и жми крути стартер на здоровье!Вопрос только накуя?Вот хоть убейте не понимаю я смысла использования макроконтроллеров там где можно использовать геркон в крайнем случае реле тем более людьми которые не спецы в программировании.Или думают что магический AVR кристал прочитает их хотелки и все за них сам сделает?