Générer des nombres aléatoires dans Arduino

Ammar Ali 12 octobre 2023
Générer des nombres aléatoires dans Arduino

Ce tutoriel traite de la génération de nombres aléatoires à l’aide de la fonction random() d’Arduino.

Utiliser la fonction random() pour générer des nombres aléatoires dans Arduino

Nous utilisons un générateur de nombres aléatoires pour générer un nombre aléatoire entre une plage de nombres donnée. Par exemple, nous pouvons l’utiliser pour choisir un gagnant pour un cadeau.

Nous pouvons utiliser la fonction random() pour générer des nombres aléatoires dans Arduino.

Syntaxe:

random(maxVlaue);
random(minValue, maxValue);

Dans la première ligne du code, si nous ne transmettons que la valeur maximale de la plage, la fonction utilisera zéro comme valeur minimale. Nous pouvons également définir des plages minimales et maximales en utilisant les premier et deuxième arguments de la fonction random().

La valeur minimale de la plage est inclusive, tandis que la valeur maximale est exclusive. Par exemple, si nous définissons la plage de 0 à 10, la séquence de nombres aléatoires contiendra 0 mais pas 10.

Avant d’utiliser la fonction random(), nous devons l’initialiser à l’aide de la fonction randomSeed(). Nous devons passer un nombre aléatoire de types de données long à l’intérieur de la fonction randomSeed() pour initialiser le générateur de nombres aléatoires.

Supposons que nous voulions au hasard la même séquence de nombres que la précédente. Nous devons passer le même nombre à l’intérieur de la fonction randomSeed().

Si nous voulons une séquence de nombres différente, nous devons utiliser un nombre différent à chaque fois que nous initialisons le générateur de nombres aléatoires. Dans ce cas, nous pouvons utiliser n’importe laquelle des broches analogiques d’Arduino.

Lorsqu’aucune entrée n’est connectée à une broche analogique, la broche aura une valeur flottante ou une valeur aléatoire. Nous pouvons lire cette valeur aléatoire en utilisant la fonction analogRead().

Par exemple, utilisons le random() pour générer des nombres aléatoires entre 0 et 100.

long MyRnd;

void setup() {
  Serial.begin(9600);
  randomSeed(analogRead(0));
}
void loop() {
  MyRnd = random(100);
  Serial.println(MyRnd);
  delay(500);
}

Production:

21
17
20
11
46
51
41
71
2
74

Les nombres aléatoires continueront à se générer car nous avons placé le générateur de nombres aléatoires dans la fonction loop(). Si nous voulons générer le nombre aléatoire un certain nombre de fois, nous pouvons utiliser une boucle à l’intérieur de la fonction setup(), qui ne s’exécute qu’une seule fois.

Les valeurs de plage que nous définissons dans la fonction random() peuvent être de 32 bits. Si une valeur plus grande est utilisée, la fonction ne donnera pas d’erreur, mais le résultat sera différent de ce qui est attendu.

Si nous utilisons le même nombre comme 1 dans la fonction randomSeed() et redémarrons le code, la séquence de nombres aléatoires sera la même.

Auteur: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook

Article connexe - Arduino Function