ну тогда буду считать что вы хотели на делай сделать, что вроде порицается!))) так и запишем, v258 пропагандирует делай…
Нужно организовать три задержки работающие последовательно по 5 секунд. Delay не подходит так как надо чтобы работали прерывания при этом.
После отрабатывания последней задерки должна работать первая и так далее
Ну так это у вас в #8 написано. Что не так?
этот код не работает. Он выводить через 15 сек. все три Print. А надо каждый выводить каждые 5 сек.
Да, точно, так работать не будет, извиняюсь - невнимателен)
вот и мучался с ним.
Одно другому не помеха.
(Смех смерти не помеха.)
Контора пишет (с) ![]()
Это потому, что вы сделали три отдельных вывода (каждые 5 секунд, каждые 10 секунд и каждые 15 секунд). Все работает в точности, как вы закодировали
Тогда ещё проще
uint32_t last_millis = 0;
uint8_t Print = 1;
void setup() {
Serial.begin(9600);
}
void loop() {
if(millis() - last_millis >= 5000 && Print == 1 )
{
last_millis = millis();
Serial.println("Print_1");
Print = 2;
}
if(millis() - last_millis >= 5000 && Print == 2 )
{
last_millis = millis();
Serial.println("Print_2");
Print = 3;
}
if(millis() - last_millis >= 5000 && Print == 3 )
{
last_millis = millis();
Serial.println("Print_3");
Print = 1;
}
}
да работает. Круто. Я пытался таким способом сделать, но не пошло. Спасибо
Подумаете на досуге - ещё проще сделаете
Проще с delay.
Да, делей прерыванию не помеха.
В моем коде тоже работает. Еще раз спасибо
Как то дубово выглядит. Может так лучше?
void setup()
{
Serial.begin(9600);
}
void loop()
{
static uint32_t last_millis = 0;
if (millis() - last_millis >= 5000)
{
static uint8_t Print = 1;
last_millis = millis();
Serial.println("Print_" + (String)Print);
if (++Print > 3)
{
Print = 1;
}
}
}
Значительно. Все думал, неужели никто не предложит вместо трех одинаковых циклов сделать один.
Задержку тоже можно менуот цикла к циклу
Ага.) deleted
Конечно.
Я лишь чуть подправил код ТС-а.
Доработать ему оставил:
Вот сомневаюсь я, что станет ))