RECURSO ARD.ALEAT .- Números aleatorios. Funciones random y randomSeed

Para generar números aleatorios con Arduino se usa la función random

Por ejemplo


random(3000,6000);

devuelve un número aleatorio entre 3000 y 6000

Para que los números aleatorios no sean siempre los mismos, es necesario proveer al sistema de una "semilla". El valor que se asigna a esta semilla tiene que ser lo más aleatorio posible, por lo que lo que se suele hacer es leer el ruido eléctrico presente en alguna entrada no conectada de la placa Arduino.

Por esa razón es común encontrar en el bloque de inicialización de un programa que usa números aleatorios una expresión similar a esta :

randomSeed(analogRead(0));


Por ejemplo, un programa que hiciese que un led parpadease con un intervalo de tiempo aleatorio entre 3 y 6 segundos, podría ser como este:



#define PIN_LED 12

void setup() {
  randomSeed(analogRead(0));
}

void loop() {
  digitalWrite(PIN_LED, HIGH);
  delay(500);
  digitalWrite(PIN_LED, LOW);
  delay(random(3000, 6000));

}