collapse

* Posts Recentes

Potênciometro 4.7 ou 5 KOhm com switch por Hugu
[Hoje às 00:02]


é preciso ter cuidado com ESD? por Hugu
[Ontem às 18:50]


Valores de alcance de ponta de prova por vasco
[Ontem às 14:28]


Como reproteger as pontas de cobre do ferros de soldar? por vasco
[16 de Dezembro de 2018, 18:53]


Bibliotecas para arduino e drivers de stepper - o problema da 'distracção' por SerraCabo
[14 de Dezembro de 2018, 12:12]


Zener BZW04-105? por brunus
[11 de Dezembro de 2018, 17:34]


Artigo 11, 13 e os restantes por jm_araujo
[10 de Dezembro de 2018, 11:05]


Compra Colectiva Mouser N3-2018 (limite 25 Nov) por Hugu
[10 de Dezembro de 2018, 01:07]


Ajuda para reparar Luzes de LED de Natal por brunus
[09 de Dezembro de 2018, 00:59]


Usar steppers de 5 pontas como se fossem de 4 pontas por SerraCabo
[08 de Dezembro de 2018, 21:18]

Autor Tópico: codigo para ligar um led aleatoriamente  (Lida 2434 vezes)

0 Membros e 1 Visitante estão a ver este tópico.

Offline vianabana

  • Mini Robot
  • *
  • Mensagens: 2
codigo para ligar um led aleatoriamente
« em: 05 de Dezembro de 2013, 13:18 »
#define LED_1 13
#define LED_2 12
#define LED_3 11
#define LED_4 10
#define LED_5 9
#define LED_6 8
#define BOT 2
int estado = 0;

void setup() {
   
  pinMode(LED_1,OUTPUT);     
  pinMode(LED_2,OUTPUT);     
  pinMode(LED_3,OUTPUT);
  pinMode(LED_4,OUTPUT);     
  pinMode(LED_5,OUTPUT);     
  pinMode(LED_6,OUTPUT);

  pinMode(BOT,INPUT);
}

void loop(){
  int estadoBotao = digitalRead(BOT);
 
  if (estadoBotao == LOW) 
    estado = ++estado % 2;
 
  if (estado == 0){ 
    digitalWrite(LED_1,HIGH); 
    digitalWrite(LED_2,HIGH);
    digitalWrite(LED_3,HIGH);   
    digitalWrite(LED_4,HIGH); 
    digitalWrite(LED_5,HIGH);
    digitalWrite(LED_6,HIGH);   
  }

Offline senso

  • Global Moderator
  • Mini Robot
  • *****
  • Mensagens: 9.586
  • Helpdesk do sitio
Re: codigo para ligar um led aleatoriamente
« Responder #1 em: 05 de Dezembro de 2013, 15:02 »
Duvida, ou exemplo?
Avr fanboy

Offline vianabana

  • Mini Robot
  • *
  • Mensagens: 2
Re: codigo para ligar um led aleatoriamente
« Responder #2 em: 05 de Dezembro de 2013, 17:39 »
Duvida, ou exemplo?

quero saber como fasso apartir desse codigo para fazer com 1 de 6 leds acenda aleatoriamente.

Offline dropes

  • Mini Robot
  • *
  • Mensagens: 1.943
Re: codigo para ligar um led aleatoriamente
« Responder #3 em: 05 de Dezembro de 2013, 18:54 »
Há 3 formas que conheça para gerar nºs aleatórios.

- Pseudo-aleatório em que consiste através de cálculos gerar sucessivamente um nº , o inconveniente deste processo é ter uma sequência sempre igual desde que se começa a gerar os nºs

- Aleatório recorrendo ao relógio do micro, o mais usual e provavelmente o mais simples em que a função random vai usar

- Sequência de nºs corridos em que requer o uso de uma interface ao utilizador, não sendo o ideal para este caso

Deve haver muito exemplo mesmo para arduino bastando procurar "arduino random number"

Offline jm_araujo

  • Mini Robot
  • *
  • Mensagens: 2.438
  • NERD!
Re: codigo para ligar um led aleatoriamente
« Responder #4 em: 05 de Dezembro de 2013, 22:16 »
Tipo gerar um número de 1 a 6 e acender o LED correspondente quando carregas num botão, como se fosse um dado?
Se for o caso, uma maneira de fazer é enquanto não primes o botão dentro do loop ires incrementando uma variável acumulador. Como não sabes quando é que o botão vai ser carregado, e o loop corre depressa, em prática funciona como um gerador aleatório. Depois quando detectares que o botão foi pressionado, páras de incrementar, e acendes só um led correspondente ao modulo 6 (%6) do acumulador (o resto da divisão por 6 que dá um número entre 0 e 5). Não te esqueças de apagar os outros LEDs.
Isso são pouco mais de meia dúzia de ifs com else e um par de operações matemáticas, sem preocupações de optimização e belezura.

Como muito bem sugeriu o dropes, para o exemplo acima em vez de uma variavel a acumular, podes usar o tempo do sistema "millis()", que incrementa cada milisegundo e é impossivel quem carrega no botão saber em que valor vai.