Ошибка записи числа в переменную Arduino

Рейтинг: 0Ответов: 1Опубликовано: 21.06.2023

Ситуация в том что есть функция

void verticalRainbow(){
if(index == 0){
    color = 0;
    Serial.print((step = random()%230+10));
  }
  leds[index] = CHSV(color, 255, 255);
  leds[GRV(index++)] = CHSV(color, 255, 255);
  color+=step;
  index%=NUM_LEDS/2+1;
  Serial.print(" ");
  Serial.print(index);
  Serial.print(" ");
  Serial.print(color);
  Serial.print(" ");
  Serial.print(step);
}

Переменные index, color, step, NUM_LEDS, leds - глобальные функция GRV возвращает обратное значение Но это всё мелочи. Баг состоит в том что при выполнении строчки Serial.print((step = random()%230+10)); пишется случайное число, а в step записывается 255. Почему это происходит и как это исправить? Я хочу е**ый рандом а не 255. так же пытался использовать разнообразный рандом включая псевдо, а именно

step = random()%230+10
step = random(10, 240)
step = millis()%230+10

но результат всегда один и тот же. Как мне записать в step случайное число от 10 до 240?

Ответы

▲ 0

Попробуйте создать массив на 240 ячеек, пусть будет int. Пусть будет переменная хранящая значение рандома, например х. К слову:

     int x = step[random(10,240)];

Так же используйте

     randomSeed(analogRead(0));

Иначе последовательность чисел будет повторяться