gpt4 book ai didi

c++ - 每次arduino启动时如何防止颜色数组成为相同的随机数组

转载 作者:行者123 更新时间:2023-11-28 01:13:55 26 4
gpt4 key购买 nike

我有一个存储一些 uint32_t neopxiel 颜色的数组:红色、绿色、蓝色和黄色:

uint32_t colorRed = pixels.Color(255, 0, 0);
uint32_t colorGreen = pixels.Color(0, 150, 0);
uint32_t colorBlue = pixels.Color(0, 255, 255);
uint32_t colorYellow = pixels.Color(255, 255, 0);

uint32_t colorArray[4] = {colorRed, colorGreen, colorBlue, colorYellow};

然后我想制作一个数组,每次 arduino 启动时以随机顺序保存这些颜色。

uint32_t patternArray[4] = {colorArray[random(4)], colorArray[random(4)], colorArray[random(4)], colorArray[random(4)]};

这似乎对这 4 种颜色进行了随机排序,但每次 arduino 启动时都是相同的“随机”顺序(黄色、绿色、绿色、蓝色)。

每次 arduino 启动时如何使随机顺序不同?

我已经尝试声明一个占位符数组并在大多数论坛帖子建议的 randomSeed(0) 之后初始化它,但我似乎无法获得声明数组然后为其赋值的正确语法:

//uint32_t patternArray; //nope
//uint32_t patternArray[4]; //nope


setup(){
randomSeed(analogRead(0));
//patternArray = {colorArray[random(4)], colorArray[random(4)], colorArray[random(4)], colorArray[random(4)]}; //nope
patternArray[4] = {colorArray[random(4)], colorArray[random(4)], colorArray[random(4)], colorArray[random(4)]}; //nope

}

最佳答案

来自 analogRead()

Reads the value from the specified analog pin. Arduino boards contain a multichannel, 10-bit analog to digital converter. This means that it will map input voltages between 0 and the operating voltage(5V or 3.3V) into integer values between 0 and 1023.

因此无论引脚 0 的电压电平如何,它始终相同,因此随机种子始终相同。


使用时间作为种子值可确保每次程序启动时都有不同的值,例如millis()

Returns the number of milliseconds passed since the Arduino board began running the current program. This number will overflow (go back to zero), after approximately 50 days.


或者,查看 randomSeed() 中的示例

Example Code
The code generates a pseudo-random number and sends the generated number to the serial port.

void setup() {
Serial.begin(9600);
randomSeed(analogRead(0));
}

这几乎就是您所拥有的。也许做 Serial.begin() 是需要的技巧。

关于c++ - 每次arduino启动时如何防止颜色数组成为相同的随机数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59363417/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com