Dados electrónicos

Necesitamos:

Lo colocaremos así:

Para programarlo, tendremos que declarar que todos los pines (es mejor ponerlos todos juntos, luego veréis por qué) son de salida (OUTPUT). Esto lo haremos dentro de las llaves del void setup():



    pinMode(2, OUTPUT);
    pinMode(3, OUTPUT);
    pinMode(4, OUTPUT);
    pinMode(5, OUTPUT);
    pinMode(6, OUTPUT);
    pinMode(7, OUTPUT);
    pinMode(8, OUTPUT);
                

Ahora vamos a hacer que cada segundo salga un número aleatorio entre 0 y 6. ¿Cómo? Con la función random(MINIMO, MAXIMO+1); dentro del void loop(), ya que queremos que se repita siempre. Para hacerlo entre 0 y 6, tendremos que escribir random(0, 7) ya que el 7 no está incluido.
Usaremos el "if" con la condición, comprobando número por número si coincide con el aleatorio que nos ha dado Arduino.


    int aleatorio = random(0, 7); //        El número ALEATORIO
    if (aleatorio == 6){        //      Comprobamos si coincide con uno de ellos
        digitalWrite(8, HIGH);
    }
    if (aleatorio == 5){ 
        digitalWrite(7, HIGH);
    } 
    if (aleatorio == 4){ 
        digitalWrite(6, HIGH);
    }
    if (aleatorio == 3){ 
        digitalWrite(5, HIGH);
    }
    if (aleatorio == 2){ 
        digitalWrite(4, HIGH);
    }
    if (aleatorio == 1){ 
        digitalWrite(3, HIGH);
    }
    if (aleatorio == 0){ 
        digitalWrite(2, HIGH);
    }
    delay(1000);      // Esperar 1 segundo 
    digitalWrite(8, LOW);       // Apagar TODOS los LEDs
    digitalWrite(7, LOW);
    digitalWrite(6, LOW);
    digitalWrite(5, LOW);
    digitalWrite(4, LOW);
    digitalWrite(3, LOW);
    digitalWrite(2, LOW);
                

Pero tenemos una solución aún mejor

Si os fijáis siempre el número del pin es el número aleatorio más 2. Además, estamos apagando todos los LEDs al final aunque solo haya habido uno encendido.
Vamos a crear otra variable de la siguiente manera: int pin = aleatorio + 2; y así sabremos directamente el número del pin que hay que encender y luego apagar.
Así podemos quitar todos los molestos condicionales "if" y dejar solamente el siguiente código dentro del void loop():


    int aleatorio = random(0, 7); // El número ALEATORIO
    int pin = aleatorio + 2;        // El pin
    digitalWrite(pin, HIGH);    // Encender solo el que queremos
    delay(1000);       // Esperar 1 segundo
    digitalWrite(pin, LOW);         // Apagar solo el que hay encendido