Etape 5: Attendez, n’est pas « aléatoire » essentiellement impossible avec des microcontrôleurs ?
Mais comment le microcontrôleur venue avec les patrons « au hasard » ?
Des puces électroniques, tels que la puce PIC32 de Microchip, ne sont nullement à venir arbitrairement avec un nombre quelconque, mais que la puce sur l’uC32 doit-il est une très longue séquence de nombres. Cette séquence de nombres est accessible via la fonction random(), qui choisit un nombre basé sur les limites que vous lui donnez. Par exemple, si les huit diodes qui pourraient être allumées, la fonction random() est écrit comme random(1,9) de choisir un nombre entre 1 et 8. Le nombre supérieur dans la fonction random() est présumé être supérieure à la plage de sortie désirée de la fonction random() 1.
Alors que c’est gentil, nous constaterions que chaque fois que nous jouons Simon Says que le patron des LEDs qui s’allument sera toujours la même car le numéro de séquence qui random() tire est toujours le même. Pour contourner ce problème et rendre le jeu plus « au hasard » nous pouvons appeler la fonction randomSeed() avant d’utiliser la fonction random(). RandomSeed() diront le microcontrôleur où commencer à tirer les numéros dans le numéro de séquence basé sur la valeur que nous lui donnons. Ainsi, nous pourrions dire randomSeed() pour obtenir une valeur basée sur le bruit analogique de l’un des broches e/s sur le microcontrôleur, pour nous amener un « random » point de départ dans notre numéro de séquence avec la fonction random().
Cependant, il a été mon expérience que le bruit électrique sur une broche a tendance à se limiter à une très petite plage de nombres, par exemple de 0 à 5, qui n’est pas tout à fait aussi arbitraire que je le voudrais. J’ai donc, au lieu de cela le randomSeed() collecter son numéro de la fonction millis(), qui rend compte de la valeur sur la durée sans cesse contrer cette dure pendant près de 50 jours. À l’aide de millis(), où le tire de fonction random() ses valeurs à partir dépend intrinsèquement de combien de temps le joueur prend à soumettre leur réponse. En supposant que le joueur est humain au lieu d’un autre microcontrôleur, cette méthode garantit qu’un endroit différent dans le numéro de séquence sera choisi chaque fois que le jeu est joué.