Dado electrónico

320px-two_red_dice_01-svg
[CC0, public domain from wikimedia]

Descrición:

Queremos montar e facer funcionar un dado electrónico que marca mediante uns leds un número ao chou entre 1 e 6 cada vez que prememos nun pulsador.

Pode haber diferentes opcións de deseño:

  1. O dado amosa un número cada vez que actuamos sobre un pulsador. Para evitar múltiples lecturas primeiro agardamos a que se prema o pulsador e despois a que se solte, como vimos na práctica do contador mellorado. Nese momento xérase un número ao chou entre 1 e 6 e móstrase no dado. Pode acompañarse don son nun zumbador.
  2. Cada vez que premamos nun pulsador empezan a cambiar os números do dado electrónico rapidamente e de forma aleatoria. Cando prememos de novo no pulsador o dado marca un número ao chou entre 1 e 6. Como vas utilizar un único pulsador tanto para o arranque como para a parada do dado, cómpre que repases a práctica do pulsador con memoria. Podes tamén incorporar son.
[tecnoloxia.org CC By-SA]
[tecnoloxia.org CC By-SA]

Montaxe:

Monta 7 LEDs como aparece na figura. Non esquezas as resistencias de protección de 220Ω.

Monta ademais un pulsador cunha resistencia de 10kΩ.

Programa:

Para crear o programa debes crear unha función dado(num) na que se indiquen os diferentes casos.

void dado (unsigned char num) {
  switch (num) {
            
    case 1: // número 1
            digitalWrite (7, LOW);
            digitalWrite (8, LOW);
            digitalWrite (9, LOW);
            digitalWrite (10, HIGH);
            digitalWrite (11, LOW);
            digitalWrite (12, LOW);
            digitalWrite (13, LOW);           
            break;
            
    case 2: // número 2
            digitalWrite (7, LOW);
            digitalWrite (8, HIGH);
            digitalWrite (9, LOW);
            digitalWrite (10, LOW);
            digitalWrite (11, LOW);
            digitalWrite (12, HIGH);
            digitalWrite (13, LOW);              
            break;

    // complétao ti
            
    case 3: // número 3     
            
    case 4: // número 4
                        
    case 5: // número 5
                        
    case 6: // número 6
            
    default:
    case 0: //Apagar todos os leds
            
  }

Despois, no loop, podes chamar a función para que se execute
numero = random(1, 7); // Xera un número ao chou entre 1 e 6
dado (numero);         // Mostra o número no dado

Para inicializar o xerador de números aleatorios e evitar que xere sempre a mesma secuencia, debes introducir no setup() a instrución:
randomSeed(analogRead(0));

Propostas:

  1. Podes facer o mesmo, pero utilizando un display 7 segmentos.

Deixa un comentario