Выход из delay()

Добрый ден. Существует ли какая-нибудь возможность досрочного окончания работы функции delay? Что-то по типу преждевременного return.

Кто или что мешает просто посмотреть на текст функции?

Если речь том, что стоит в IDE по умолчанию, то вот она функция delay, смотрите сами есть там возможность выхода или нет. Я не вижу ничего подобного.

void delay(unsigned long ms)
{
	uint32_t start = micros();

	while (ms > 0) {
		yield();
		while ( ms > 0 && (micros() - start) >= 1000) {
			ms--;
			start += 1000;
		}
	}
}
2 лайка

Тогда такой вопрос. Как можно реализовать таймер на 3 секунды с возможностью досрочного выхода, чтобы при этом подавались импульсы с мкр секундами. Можно ли это сделать через millis и delay?

Мкр и миллис несовместимы.

Прошу прощения, micros

Вот этого

я не понял

А вот это

Да, хоть как. Можно, например взять этот же текст delay и в условие в пятой строке добавить

... && <проверка, что выходить ещё не пора>

Допустим, мне надо чтобы в течение 3-х секунд мигал светодиод с заданной чистотой, при этом надо по минимому использовать глобальные переменные.

Вполне допускаю. Вопрос в чём?

Судя по всему, нужен банальный блинк без дилей

1 лайк

Промойте изопропанолом до нужной чистоты и пусть мигает на здоровье.

1 лайк

Протирать полезнее этиленом

1 лайк

Частота мигания меняется по ходу программы. Так что не получится

Что вы имеете ввиду под банальным блинком? Использование micros и millis?

У вас каша в голове. Пока она не устаканится, ничего вы сделать не сможете. Поэтому отложите свою задачу и займитесь теорией. И да, если вам кто-то говорил, что " Ардуино - это просто" - он вас жесточайше обманул

Ваша задача должна закрываться этими средствами. Если не закрывается - проблема в постановке задачи

1 лайк

:slight_smile:
Утарелится.

1 лайк

Или укастрюлится ))

Можете тогда указать хороший источник теории?

Тебе!, ТС.
Их тебя ждала, варум ты не пришёл, их пошла на хаус, с неба вассер шёл.

Дали же источник - блинк без делей.