LusoRobótica - Robótica em Português
Software => C/C++ => Tópico iniciado por: vianabana 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);
}
-
Duvida, ou exemplo?
-
Duvida, ou exemplo?
quero saber como fasso apartir desse codigo para fazer com 1 de 6 leds acenda aleatoriamente.
-
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"
-
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.