Paso 52: Software: selección de modo y semilla aleatoria
Cuando comenzamos a efectos de la escritura y les depuración de, nos dimos cuenta de las funciones usando números aleatorios muestra las animaciones mismo exactas cada vez. Fue al azar bien, pero la misma secuencia al azar cada vez. Resulta que el generador de números aleatorios en el ATmega deben ser sembrados con un número al azar para crear verdaderos números aleatorios.
Escribimos una pequeña función llamada bootwait(). Esta función sirve para dos propósitos.
1) crear una semilla aleatoria. 2) escuchar pulsar un botón seleccionar el modo de operación.
Lo siguiente:
1) conjunto en contra de x 0.
2) empieza un bucle infinito, while(1).
3) incremento contador x por uno.
4) uso x como una semilla aleatoria.
5) retrasar por un tiempo y estado rojo led encendido.
6) Compruebe que pulsar un botón. Si se presiona el botón principal, la función devuelve 1. Si se presiona el botón PGM lo actúa 2. Las declaraciones vuelta sale de la función así terminando el bucle infinito.
7) retrasan otra vez y configurar el led verde.
8) Compruebe de botón se presiona otra vez.
9) lazo para siempre hasta que se pulsa un botón.
El bucle de bucles muy rápido, por lo que la probabilidad de que dejará en el mismo valor de x dos veces en una fila es muy remota. Se trata de una manera muy sencilla pero efectiva para conseguir una buena semilla aleatoria.
Bootwait() se llama a la función main() y su valor de retorno asignada a la variable i.
Si yo == 1, el bucle principal se inicia un bucle que muestra los efectos generados por el ATmega. Si i == 2, entra en modo RS232 y espera a que los datos de un ordenador.