Imagem
Número aleatório é um valor escolhido pelo Arduino ao acaso, ou seja sem que esse pertença a uma sequência especifica.
Em outras palavras, é como jogar um dado. Não sabemos que número vai ser mostrado.
Para criar números aleatórios o arduino se utiliza de duas funções:
Se é importante que a sequência de valores gerados por random() seja diferente entre as execuções de um sketch, então utilize uma entrada analógica desconectada como parâmetro de randomSeed(). Isso fará com que a lista seja sempre iniciada em pontos distintos.
Por outro lado, se é necessário fazer com que a sequência aleatória inicie sempre no mesmo ponto, então utilize como parâmetro de randomSeed() um número fixo.
Exemplo:
void setup(){
randomSeed(analogRead(0)); // inicia a sequência em um ponto variável
}
void setup(){
randomSeed(5); // inicia a sequência em um ponto fixo
}
Já a função random() gera um valor aleatório. Esse valor pode ser limitado por dois parâmetros.
Exemplo:
x = random(min, max)
Os números possíveis vão de min até max, porém não inclui max.
Exemplo:
x = random(1, 5)
Os possíveis números são: 1, 2, 3, e 4
Outra opção é utilizar somente o parâmetro max.
x = random(100)
Os possíveis números serão de 0 a 99.
digitalWrite(5, HIGH); // acende 1 LED
}
if ( numero == 2){ // se o numero é 2, acende 2 LEDs
digitalWrite(5, HIGH); // acende 2 LEDs
digitalWrite(6, HIGH);
}
if ( numero == 3){
digitalWrite(5, HIGH); // acende 3 LEDs
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
}
if ( numero == 4){
digitalWrite(5, HIGH); // acende 4 LEDs
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
}
if ( numero == 5){
digitalWrite(5, HIGH); // acende 5 LEDs
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
if ( numero == 6){
digitalWrite(5, HIGH); // acende 6 LEDs
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
}
}
Em outras palavras, é como jogar um dado. Não sabemos que número vai ser mostrado.
Para criar números aleatórios o arduino se utiliza de duas funções:
- randomSeed()
- random()
Se é importante que a sequência de valores gerados por random() seja diferente entre as execuções de um sketch, então utilize uma entrada analógica desconectada como parâmetro de randomSeed(). Isso fará com que a lista seja sempre iniciada em pontos distintos.
Por outro lado, se é necessário fazer com que a sequência aleatória inicie sempre no mesmo ponto, então utilize como parâmetro de randomSeed() um número fixo.
Exemplo:
void setup(){
randomSeed(analogRead(0)); // inicia a sequência em um ponto variável
}
void setup(){
randomSeed(5); // inicia a sequência em um ponto fixo
}
Já a função random() gera um valor aleatório. Esse valor pode ser limitado por dois parâmetros.
Exemplo:
x = random(min, max)
Os números possíveis vão de min até max, porém não inclui max.
Exemplo:
x = random(1, 5)
Os possíveis números são: 1, 2, 3, e 4
Outra opção é utilizar somente o parâmetro max.
x = random(100)
Os possíveis números serão de 0 a 99.
Exemplo 1
Esse exemplo sortei um número e informa o usuário pela serial
long randNumber;
void setup(){
Serial.begin(9600); // inicia a comunicação serial
randomSeed(analogRead(0)); // inicia a lista de valores aleatórios
}
void loop(){
randNumber = random(300); // sorteia um número de 0 a 299
Serial.println(randNumber); // envia o valor de randNumber pela serial
delay(50); // espera 50 ms
}
Imagem
Exemplo 2
Esse exemplo acende um LED de forma aleatória entre os 6 LEDs conectados ao Arduino.
Veja o vídeo:
Veja o vídeo:
int tempo=50;
int numero;
void setup() { // inicializa os pinos digitais como saída
pinMode(5, OUTPUT);
pinMode(6, OUTPUT);
pinMode(7, OUTPUT);
pinMode(8, OUTPUT);
pinMode(9, OUTPUT);
pinMode(10, OUTPUT);
randomSeed(analogRead(0)); // inicializa a lista de valores aleatórios
}
void loop() {
int numero = random(5,11); // sorteia um número de 5 a 10
digitalWrite(numero, HIGH); // acende o LED no endereço do pino sorteado
delay(tempo); // espera
digitalWrite(numero, LOW); // apaga o mesmo LED
}
Imagem
Exemplo 3
Esse exemplo faz do arduino um dado eletrônico.
int tempo=50;int numero; void setup() { // inicializa os pinos digitais como saída pinMode(5, OUTPUT); pinMode(6, OUTPUT); pinMode(7, OUTPUT); pinMode(8, OUTPUT); pinMode(9, OUTPUT); pinMode(10, OUTPUT);
randomSeed(analogRead(0)); // inicializa a lista de valores aleatórios } void loop() { int numero = random(1,7); // sorteia um número de 1 a 6
if ( numero == 1){ // se o numero é 1, acende 1 LED digitalWrite(5, HIGH); // acende 1 LED
}
if ( numero == 2){ // se o numero é 2, acende 2 LEDs
digitalWrite(5, HIGH); // acende 2 LEDs
digitalWrite(6, HIGH);
}
if ( numero == 3){
digitalWrite(5, HIGH); // acende 3 LEDs
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
}
if ( numero == 4){
digitalWrite(5, HIGH); // acende 4 LEDs
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
}
if ( numero == 5){
digitalWrite(5, HIGH); // acende 5 LEDs
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
}
if ( numero == 6){
digitalWrite(5, HIGH); // acende 6 LEDs
digitalWrite(6, HIGH);
digitalWrite(7, HIGH);
digitalWrite(8, HIGH);
digitalWrite(9, HIGH);
digitalWrite(10, HIGH);
}
}
Imagem
Exercícios
1) Crie
um sketch que envie pela serial, a cada 1500 ms, um número aleatório de 1 a
10. Sempre que esse número for impar, acende um Led. Sempre que o número for
par, apaga o Led.
2) Faça
um jogo em que o usuário tem que aperta um botão assim que um Led acender e que
envia pela serial o tempo que o usuário demorou para acender o Led. O Led
acendera após um tempo aleatório de até 10 segundos.
3) Faça
um dado eletrônico com o mesmo formato de Leds dos círculos de um dado normal. Serão
necessários 7 Leds. Um botão deverá fazer um novo sorteio dos números.
4) Faça
um sketch que sortei um número de 0 a 3, transforme esse valor em binário e
acenda os Leds correspondentes. Serão necessários 4 Leds.