问题描述
我一直试图让我的4个LED显示随机生成的数字是用二进制code什么。唯一的问题是,它使生成新的随机数。我希望这是一次完成的,任何人都可以请帮我吗?
INT LED5 = 5;INT LED4 = 4;INT LED3 = 3;INT LED2 = 2;INT X;无效设置(){ Serial.begin(9600); randomSeed(analogRead(0)); pinMode(LED5,OUTPUT); pinMode(LED4,OUTPUT); pinMode(LED3,OUTPUT); pinMode(LED2,OUTPUT);}空隙环(){ X =随机(1,16); Serial.print(随机数是:); Serial.println(X);如果(X GT; = 8){ digitalWrite(LED5,HIGH); X = X-8;}如果(X GT; = 4){ digitalWrite(LED4,HIGH); X = X-4;}如果(X GT = 2){ digitalWrite(LED3,HIGH); X = X-2;}如果(X GT; = 1){ digitalWrite(LED2,HIGH); X = X-1;} digitalWrite(LED5,LOW); digitalWrite(LED4,LOW); digitalWrite(LED3,LOW); digitalWrite(LED2,LOW);}
解决方案
您将随机数生成的循环
方法。这永远循环。
您有两种选择:
把它放在设置
方法或创建另一个方法,并调用从设置
。
声明一个标志,只有当产生的标志是假的,说明你还没有产生的随机数数
I've been trying to make my 4 LEDs show what the random generated number is in binary code. The only problem is that it keeps generating a new random number. I want this to be done only once, could anyone please help me?
int led5 = 5;
int led4 = 4;
int led3 = 3;
int led2 = 2;
int x;
void setup() {
Serial.begin(9600);
randomSeed(analogRead(0));
pinMode(led5, OUTPUT);
pinMode(led4, OUTPUT);
pinMode(led3, OUTPUT);
pinMode(led2, OUTPUT);
}
void loop(){
x = random(1, 16);
Serial.print("The random number is: ");
Serial.println(x);
if (x >= 8) {
digitalWrite(led5, HIGH);
x=x-8;
}if(x >= 4) {
digitalWrite(led4, HIGH);
x=x-4;
}if(x >= 2) {
digitalWrite(led3, HIGH);
x=x-2;
}if(x >= 1) {
digitalWrite(led2, HIGH);
x=x-1;
}
digitalWrite(led5, LOW);
digitalWrite(led4, LOW);
digitalWrite(led3, LOW);
digitalWrite(led2, LOW);
}
解决方案
You put the random number generation in the loop
method. This loops forever.
You have two options:
Put it in the setup
method or create another method and call that from setup
.
Declare a flag and only generate the number if the flag is a false, indicating you have not yet generated a random number