Как рандомизировать задержку в коде шагового двигателя Arduino?

Как добавить случайную ЗАДЕРЖКУ между 10 и 20 секундами?

Например, в следующей логике шагового двигателя задержка составляет 11 секунд, что выражается в миллисекундах как: delay(11000).

Что мне нужно добавить (или изменить), чтобы это время было случайным от 10 до 20 секунд?

//#define IN1  8
//#define IN2  9
//#define IN3  10
//#define IN4  11

int Steps = 0;
boolean Direction = true;
unsigned long last_time;
unsigned long currentMillis ;
int steps_left=4095;
long time;

void setup()
{
Serial.begin(115200);
pinMode(IN1, OUTPUT); 
pinMode(IN2, OUTPUT); 
pinMode(IN3, OUTPUT); 
pinMode(IN4, OUTPUT); 


}
void loop()
{
  while(steps_left>0){
  currentMillis = micros();
  if(currentMillis-last_time>=1000){
  stepper(1); 
  time=time+micros()-last_time;
  last_time=micros();
  steps_left--;
  }
  }
   Serial.println(time);
  Serial.println("Wait...!");
  delay(11000);                     // delay timing
  Direction=!Direction;
  steps_left=4095;
}

Прошу прощения за внешний вид кода. Каждый раз, когда я его публикую, он искажается. Надеюсь, это понятно.

, 👍1

Обсуждение

https://www.arduino.cc/reference/en/language/functions/random-numbers/random/, @Juraj


1 ответ


Лучший ответ:

4

В setup() добавьте

randomSeed(analogRead(0));

Это считывает значение аналогового входного контакта, который, если не подключен, будет колебаться в относительно случайных значениях от 0 до 1023. Это «задает» генератор случайных чисел, поэтому шаблон случайных чисел, который вы получите позже, не всегда будет давать одни и те же результаты каждый раз, когда вы запускаете скетч.

В вызове delay() просто замените фиксированное значение вызовом функции random(min, max), например:

delay(random(10000, 20000));
,

Но во время отладки рассмотрите возможность использования постоянного начального числа, чтобы можно было получать повторяющиеся результаты или проверять результат одного изменения., @JRobert

Эй, спасибо вам большое, ребята. Очень признателен. Я учусь по ходу дела, и это очень помогает!, @ebucket