Afin de déterminer si nous avons assez de mesures pour donner une valeur à l'utilisateur, nous devons calculer l'écart quadratique moyen de notre jeu de valeurs. Nous ferons cela en javascript, côté application.
\begin{align} {\rm moyenne} & = \frac{\sum_{n \geq i \geq 0} v_{i}}{n} \\ {\rm ecart_{i}} & = ({\rm moyenne} - v_{i})^2 \\ {\rm ecartQuadratiqueMoyen} & = \frac{\sqrt{\sum_{n \geq i \geq 0} {\rm ecart_{i}}}}{n} \end{align}
Pour vérifier que tout fonctionne correctement, nous utilisons un arduino pour générer des impulsions aléatoires suivant la méthode Box-Muller :
void setup() { Serial.begin(9600); pinMode(13, OUTPUT); } void oneSecondPulse(int nbCoups) { int s = 500/nbCoups; for (int i=0 ; i<nbCoups ; i++) { digitalWrite(13, HIGH); delay(s); digitalWrite(13, LOW); delay(s); } } void loop() { float x, y; x = ((float) random(1000))/1000.0; y = ((float) random(1000))/1000.0; float z0, z1; z0 = sqrt(-2.0*log(x))*cos(2*PI*y); z1 = sqrt(-2.0*log(x))*sin(2*PI*y); oneSecondPulse(z0*5+20); //Serial.println(z0, DEC); }
Attention ! Le RFduino fonctionne en 3.6 V, tandis que l'arduino uno fonctionne en 5 V, il faut donc utiliser un pont diviseur de tension.