Cosa significa la funzioni random Arduino

La funzione random di Arduino restituisce un numero pseudocasuale nel programma, il che significa che la sequenza di generazione dei numeri casuali è comunque prevedibile. La funzione randomSeed consente di inserire una variabile o una costante nella funzione random per generare più valori casuali. In questo articolo vediamo come impostare un numero casuale nel linguaggio di programmazione Arduino IDE utilizzando la funzione random().




Per questa attività sono necessari:

  • Arduino Uno / Arduino Nano / Arduino Mega

Generare numeri pseudocasuali con random Arduino

La funzione random(min, max); consente di restituire un numero pseudocasuale nell’intervallo specificato dai valori min e max. Vediamo alcuni esempi con diversi tipi di dati.

Funzione Arduino random int

Nell’esempio presentato, è stato selezionato il tipo di dati byte, che memorizza numeri interi nell’intervallo compreso tra 0 e 250. È possibile utilizzare anche altri tipi di dati: int, long, unsigned int e altri. L’intervallo richiesto (min, max) viene impostato di conseguenza. I numeri casuali saranno visualizzati sul monitor seriale dell’IDE Arduino.




int data;

void setup() {
  Serial.begin(9600);
}

void loop() {
  data = random(100, 200);
  Serial.println(data);
  delay(250);
}

Funzione Arduino random boolean

Se si ha bisogno di una variabile booleana casuale che può assumere solo due valori true o false. Possiamo generare un vero/falso casuale con una determinata probabilità. È sufficiente assegnare alla variabile bool il risultato della funzione random, in cui si specifica un numero che è l’inverso della probabilità di ottenere false. Un esempio di programma:

bool data;

void setup() {
   Serial.begin(9600);
}

void loop() {
   data = random(5);
   Serial.println(data);
   delay(250);
}


Funzione Arduino random float

Il microcontrollore può generare solo numeri interi. Pertanto, per ottenere il tipo di dati float con due cifre decimali, è necessario generare separatamente un numero intero e aggiungervi frazioni decimali. Un esempio di programma di questo tipo:

float data;
float data1;
float data2;

void setup() {
  Serial.begin(9600);
}

void loop() {
  data1 = random(0, 10);
  data2 = random(0, 100);
  data = data1 + data2 / 100;
  Serial.println(data);
  delay(250);
}

Generazione di numeri casuali con randomSeed Arduino

Si noti che in tutti gli esempi precedenti, la sequenza casuale di numeri viene ripetuta ogni volta che il programma viene riavviato. Questo può essere evitato utilizzando la funzione Arduino randomSeed. RandomSeed consente di inserire una variabile nella funzione random. A tale scopo, utilizzare millis, analogRead o altre opzioni per rendere più casuale la generazione dei numeri. Al pin A1 della scheda non è collegato nulla.

int data;

void setup() {
  Serial.begin(9600);
  randomSeed(analogRead(A1));
}

void loop() {
  data = random(100, 200);
  Serial.println(data);
  delay(250);
}

Conclusione. Ogni volta che il programma viene riavviato, il generatore di numeri pseudocasuali viene inizializzato con la funzione randomSeed(analogRead(A1)); da un valore casuale dovuto al “rumore” sull’ingresso A1. A tale scopo è possibile utilizzare qualsiasi porta libera, poiché tutti i pin analogici captano il rumore casuale dell’ambiente: onde radio, interferenze elettromagnetiche di computer, telefoni cellulari, ecc.

5/5 - (1 vote)


Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.