Здравствуйте, есть шаговый двигатель, который крутится, пока ультразвуковой датчик расстояния не определит что объект ближе чем на 35 см.
int wait_kolesa = 1;
digitalWrite(direction, HIGH);
digitalWrite(direction2, LOW);
for(int i=0; i<8000; i++){
digitalWrite(trigPin1, LOW);
delayMicroseconds(2);
digitalWrite(trigPin1, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin1, LOW);
duration1 = pulseIn(echoPin1, HIGH);
cm1 = duration1 / 58;
if(cm1 <= 35){
delay(2000);
}
digitalWrite(step, LOW);
digitalWrite(step2, LOW); // Подаем логическую 1 на вывод STEP драйвера, чтобы двигатель сделал шаг.
delay(wait_kolesa); // Задержка времени
digitalWrite(step, HIGH);
digitalWrite(step2, HIGH);// Подаем логический 0 на вывод STEP драйвера, после этого драйвер будет ожидать новую 1, чтобы сделать еще 1 шаг.
delay(wait_kolesa);
}
(код вырван из контекста)
Из-за того, что в цикле, где шагает двигатель, происходит каждые 2 миллисекунды расчёт расстояния ультразвукового датчика это очень тормозит вращение.
Что можете подсказать?