@okliman

Каким кодом можно заменить pulsein?

Тк "pulsein" немного приостанавливает работу всего кода, мне нужно заменить его некоторым кодом,который этого делать не будет.

Помогите, пожалуйста
  • Вопрос задан
  • 275 просмотров
Пригласить эксперта
Ответы на вопрос 2
NikitOS_MV
@NikitOS_MV
Король шутов
Пока выполняется один код, другой не работает.
Если нужно выполнить несколько задач одновременно - используйте JS
Ответ написан
tsarevfs
@tsarevfs
C++ developer
Не гарантирую, что решение оптимальное, но можно попробовать так:
Прерыванием подписываетесь на изменение значения на порту
https://www.arduino.cc/reference/en/language/funct...

В функции обработчике, запоминаете время начала. При повторном вызове вычисляете разницу. Псевдокод примерно такй:
unsigned long time = 0;
const int signalType = HIGH;
int signalDuration = 0;

void onSignal()
{
	if (signalDuration)
		return;

	if (digitalRead(inPin) == signalType)
	{
		time = micros();
	}
	else
	{
		signalDuration = micros() - time;
	}
}

void loop() {
  //...
  if (needToCalculateDuration)
  {
  	needToCalculateDuration = 0;
  	signalDuration = 0;
  	//attachInterrupt(...)
  }
  //...
  if (signalDuration)
  {
  	//detachInterrupt
  	doSmthWithDuration(signalDuration)
  }
  //...
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы