Existem aplicações onde a utilização de números aleatórios é fundamental, como por exemplo em jogos (virtuais ou reais) e segurança de sistemas (criptografia). Então existe possibilidade de Gerar números aleatórios com Arduino – será?.

   Antes de responder á esta pergunta vamos entender o que são números aleatórios; segundo a Wikipedia, são números cuja sequência (o próximo) não pode ser prevista ou calculada. Existem diversas formas de gerar números aleatórios, como por exemplo através de um dado de 6 lados ou até mesmo de uma moeda (jogando-a para cima e observando qual face fica voltada para cima ao cair).

   Com o desenvolvimento de computadores e métodos computacionais criou-se uma nova forma de gerar números aleatórios, através de cálculos matemáticos executados em grande velocidade. Mas os números gerados por computador são realmente aleatórios?.

numeros aleatorios

   Na verdade não, e isto explica-se pelo fato de o computador utilizar sempre o mesmo passo-a-passou ou mesma equação para geração de tais números; sequências geradas por computador são chamadas de pseudo-aleatórias.

   Voltando á nossa pergunta inicial: SIM, o Arduino é capaz de computador números aleatórios o suficientes, porém ainda assim são considerados pseudo-aleatórios. E existe até mesmo uma biblioteca oficial para isso, chamada Random.  Na própria página oficial da biblioteca é comentado que ela gera números pseudo-aleatórios, e sempre na mesma sequência. Isso significa que a sequência gerada é suficientemente aleatória, porém é sempre a mesma.

   Também é comentando que pode-se randomizar um pouco mais a geração através da utilização de uma função semente (seed) chamada RandomSeed(), que utiliza o valor lido em uma entrada analógica desconectada como início de “contagem”.

   O código para teste desta função está disponível abaixo. Observe que utilizei a entrada analógica 4 como fonte da semente, e que ela deve estar desconectada de qualquer fio ou cabo na placa do Arduino. Observe também que um número aleatório e gerado e impresso no monitor serial a cada 0,2 segundos.

Executei este código na minha placa Fritzen UM, compatível com Arduino UNO e obtive 160 números aleatórios no monitor serial. Plotei estes 160 número no programa “Open Office Calc” (similar ao Microsoft Excel) para obter o gráfico abaixo.

numeros aleatorios gerados pelo arduino

No eixo Y (altura) a escala está entre 0 e 100, pois este foi o limite definido para os números a serem gerados; no eixo X (largura) a escala vai até 157, representando a quantidade de vezes que o programa gerou um número. Observe que os números gerados não se repetem com tanta facilidade, comprovando que a biblioteca gera números decentemente aleatórios.

 

Dica: Obviamente (devido ao fato de a biblioteca gera números pseudo-aleatórios) não recomenda-se utilizar a função Random() do Arduino para nada sério ou que envolva senhas ou operações financeiras. Fora isso, aproveite para brincar de números aleatórios!.

Números aleatórios com Arduino – será?

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Solve : *
25 + 24 =