O código
Iniciaremos nosso código abrindo uma conexão serial na função de configuração do Arduino, para que possamos gerar os resultados do nosso programa.
void configuração() {
Serial.begin(115200);
}
Em seguida, obteremos e imprimiremos periodicamente os números aleatórios na função de loop principal.
Para obter um número aleatório, podemos usar a função esp_random de baixo nÃvel, que é definida aqui . Esta função não recebe argumentos e retorna um valor aleatório entre 0 e UINT32_MAX [3] (o maior valor que um unsigned int pode ter).
Observe, no entanto, que, conforme mencionado na seção introdutória, o valor só será verdadeiramente aleatório se o sistema WiFi ou Bluetooth RF estiver em execução [3].
Serial.println(esp_random());
Como alternativa a essa função de nÃvel inferior, podemos usar a função aleatória do Arduino , que também é implementada no núcleo do ESP32 Arduino.
A função aleatória está sobrecarregada e pode ser chamada passando um ou dois parâmetros de entrada.
Caso passemos apenas um parâmetro, estamos especificando o limite superior do número aleatório gerado (exclusivo) [4]. Assim, o resultado será um número entre 0 e o valor do parâmetro de entrada – 1.
Assim, na chamada abaixo, obteremos um número entre 0 e 9.
Serial.println(random(10));
Se chamarmos a função passando dois parâmetros de entrada, o primeiro será o limite inferior do número aleatório gerado (inclusive) e o segundo será o limite superior (exclusivo).
Assim, na chamada abaixo, obteremos um número aleatório entre 10 e 19.
Serial.println(random(10,20));
Observe que ambas as versões da função random chamam a função esp_random em sua implementação, como pode ser visto aqui . Assim, as considerações sobre a necessidade de conexão do sistema WiFi ou Bluetooth RF para obter números gerados verdadeiramente aleatórios também se aplicam.
O código final completo pode ser visto abaixo. Adicionamos uma impressão extra para melhor legibilidade e um pequeno atraso entre cada iteração do loop do Arduino.
Código final
void configuração() {
Serial.begin(115200);
}
void loop() {
Serial.println("-----------");
Serial.println(esp_random());
Serial.println(random(10));
Serial.println(random(10,20));
atraso(1000);
}