Arduino的UNO产生数只有一次

人气:293 发布:2022-09-15 标签: binary numbers arduino

问题描述

我一直试图让我的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

433