
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:
- 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.
- 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]](https://tecnoloxia.org/robotica/wp-content/uploads/sites/5/2016/10/dado_electronico.png)
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:
- Podes facer o mesmo, pero utilizando un display 7 segmentos.