#1 2020-12-14 14:27:47

Сергій_П
Учасник
Зареєстрований: 2020-02-08
Повідомлень: 18

Випадкове заповнення пікселів

Є стрічка WS2812, 8 пікселів, потрібно випадковим чином один за одним запалити всі пікселі.
Є код

#include <Adafruit_NeoPixel.h>
// Which pin on the Arduino is connected to the NeoPixels?
#define PIN 6 
// How many NeoPixels are attached to the Arduino?
#define NUMPIXELS 8 
Adafruit_NeoPixel pixels(NUMPIXELS, PIN, NEO_GRB + NEO_KHZ800);

void setup() {
  pixels.begin(); // INITIALIZE NeoPixel strip object (REQUIRED)
}

void loop() {
  pixels.setPixelColor(random (0,7), 255,100,10);
 //pixels.setPixelColor(randomSeed(0,7), 255,100,10);
pixels.show();
delay (1000);
  

Але пікселі загораються не випадково - 1, 7, 3...
8 взагалі не загорається.
В чому може бути причина?
Функція randomSeed () не працює, видає помилку.

Остання редакція Сергій_П (2020-12-14 14:28:18)

Неактивний

#2 2020-12-14 14:47:28

vvr
Учасник
Зареєстрований: 2015-04-12
Повідомлень: 878

Re: Випадкове заповнення пікселів

https://doc.arduino.ua/ru/prog/Random

Неактивний

#3 2020-12-14 14:49:15

Сергій_П
Учасник
Зареєстрований: 2020-02-08
Повідомлень: 18

Re: Випадкове заповнення пікселів

vvr пише:

https://doc.arduino.ua/ru/prog/Random

Наче ж в все правильно.

Неактивний

#4 2020-12-14 15:12:31

Honey
Учасник
З Київ
Зареєстрований: 2020-09-26
Повідомлень: 433

Re: Випадкове заповнення пікселів

Возвращаемые значения
случайное число в диапазоне от min до max-1 (long)

Т.е. чтобы вернуло 0..7 нужно вызывать random(0,8)

И еще совет, если последние незагоревшиеся светодиоды "тянут" с загоранием слишком долго и этот эффект не нужен, то можно, например, заранее подготовить порядок включения перетасовкой массива.

Неактивний

#5 2020-12-14 15:32:49

Сергій_П
Учасник
Зареєстрований: 2020-02-08
Повідомлень: 18

Re: Випадкове заповнення пікселів

Дякую! Тепер 8 загорається.

Я завжди думав що випадкові числа випадкові smile
Зараз це 8,2,3,1,7...

З перетасовкою розберуся, коли краще вивчу C++. smile

Неактивний

#6 2020-12-14 16:25:28

Honey
Учасник
З Київ
Зареєстрований: 2020-09-26
Повідомлень: 433

Re: Випадкове заповнення пікселів

Каждое случайное чисно генерируется на основе предыдущего, вот и получается всегда одна и та же последовательность. Тут Вам какраз и пригодится randomSeed()

Неактивний

Швидке повідомлення

Введіть повідомлення і натисніть Надіслати

Підвал форуму