Несколько измерений за один луп одним ультразвуковым датчиком HC-SRO4

m0r4S
m0r4S аватар
Offline
Зарегистрирован: 04.03.2017

Пытался написать код для робота-машины. Он должен измерить расстояние спереди, повернуть с серво налево, направо и также измерить расстояние. Проблема в том, что он за один луп измеряет только один раз расстояние. Как можно несколько раз применять датчик?

andriano
andriano аватар
Offline
Зарегистрирован: 20.06.2015

m0r4S пишет:

Проблема в том, что он за один луп измеряет только один раз расстояние.

Сколько раз напишете, столько и будет.

Напишете 1 раз - будет измерять 1 раз.

Напишете 10 раз - будет измерять 10 раз.

Напишете 0 раз - вообще не будет измерять.

 

PS. На самом деле в правильно написанном коде он и должен измерять за один проход цикла не более 1 раза. Но на разных проходах вполне может использовать различные датчики.

qwone
qwone аватар
Offline
Зарегистрирован: 03.07.2016

m0r4S пишет:

Пытался написать код для робота-машины. Он должен измерить расстояние спереди, повернуть с серво налево, направо и также измерить расстояние. Проблема в том, что он за один луп измеряет только один раз расстояние. Как можно несколько раз применять датчик?

Так и напишите 

измерить расстояние
повернуть налево
измерить расстояние
повернуть направо
измерить расстояние
провести анализ
сделать шаг
конец лупа.

 

Logik
Offline
Зарегистрирован: 05.08.2014

В правильно написаном коде измерение расстояния за один проход цикла должно проводится 0 раз. Оно не должно быть привязано к лупу, а должно быть реализовано на прерывании. Почему? Да потому что 1м расстояния это 6мсек ожидания эха. Если луп будет столько ждать данные с датчика расстояния на остальное уже времени не хватит. 

Конечно Вы, как автор вправе делать как нравится, только будет просьба, для следующих своих вопросов не создавайте новые темы, а дописывайте в существующие, тех кто  уже прыгал по этим граблям, а именно: "многопоточность в ардуино", "ардуино не успевает", "разгон ардуино", "как связать две ардуино" и т.п. ;)