Официальный сайт компании Arduino по адресу arduino.cc
Работа кода по времени
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Вс, 16/04/2017 - 10:57
Подскажите как зделать что бы первый кусок кода допустим отработал одну минуту и по окончании этого времени
перешел во вторую часть кода,отработал еще одну минуту и отключился
void loop() { //цикл выполняется пока время не достигло endtime if (millis()<endtime) { // если срабатывает 1 ИК-датчик if(digitalRead(lev_vik ) == LOW ) { ROB_LEVEE(); } else if(digitalRead(lev_vik) == HIGH ) { ROB_LEVEE(); } } if (endtime<millis()) { ROB_STOP(); }
вот первый кусок отрабатывает и останавливается,но как зделать что бы на второй режим перешел,еще минуту отработал и остановился
вот первый кусок отрабатывает и останавливается,но как зделать что бы на второй режим перешел,еще минуту отработал и остановился
Ответ содержится в самом вопросе: если хотите обеспечить более одного режима, введите переменную, обозначающую номер текущего режима.
переменую понятно,как зделать что бы он переходил на другую часть кода,как сравнивать?
<>==
это мне не о чем не говорит,можно по подробней,я плохо в этом понимаю
Я бы сделал так:
Потом, вы проверяете вход, но независимо от его значения выполняете одну и туже функцию ...
Спасибо !
я так и не понял как это работает
я так и не понял как это работает
1. В setup переменной endtime присваивается текущее значение millis
2. В loop каждый раз проверяется текущее значение millis c ранее присвоенным значением переменной endtime и как только значение millis превысит endtime на 60000, то уходим на else, где переменной endtime вновь присваивается текущее значение millis ...
Как теперь, понятно? :) Я даже сам понял! :)
сам код где должен работать?
сам код где должен работать?
Какой код?
это понятно,тот код что я в пример прел он работает нормально как положено,мне не понятно,как зделать что бы после окончания времени первого режима,перешел на второй режим,
само действие
само действие
Вы сами-то поняли, что написали?
Что произойдет, если lev_vik == HIGH? А что произойдет, если lev_vik == LOW? Отвечаю - ОДНО И ТОЖЕ
это все правильно,это так и надо
это все правильно,это так и надо
Как же правильно, если исправили!!!?????
Так вот, свой код вставляете вместо первого foo(), а вместо второго foo() вставляете ROB_STOP()
не идет
не идет
Кошмар ... предпоследняя фигурная скобка к чему относится?
без нее ошибка
Понятно дело, ее просто нужно переместить и поставить перед последним else
да так оно правильно,только когда она стоит перед предпоследним else он вообще не запускается
да так оно правильно,только когда она стоит перед предпоследним else он вообще не запускается
Прочтите еще раз #20 - где вы увидели слово "предпоследний"?
перед последним
вернее запускается,но через заданное время не остонавливается
Да, пардон, закомментируйте строчку endtime = millis() в последнем else
вот теперь идет,спасибо
Скажите как теперь после первого режима перешел во второй,тоже на определенное время
Скажите как теперь после первого режима перешел во второй,тоже на определенное время
Вот так
Большое вам спасибо!
Скажите как теперь после первого режима перешел во второй,тоже на определенное время
Можно задать два временных интервала - endtime и stoptime. В первом if проверять endtime, в последнем else дополнительно проверять сумму endtime и stoptime
Спасибо вам все работает исправно
Пример можете показать?
Вариантов много, вот один из них
Благодорю за помощь ,буду изучать.