1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
$(document).ready(function(){
var has_accel = false
$('#left-bits').css({ width: '50vw', height: '50vh', background: '#fff' })
console.log("-- ready --");
//on déclare l'ensemble des variables ax et ay sont les données d'acceleration, n c'est la norme, maxn et minn les valeurs max et min de la norme, et pas le nombre de pas
var n=0, maxn = 0, minn = 0, pas = 0,
ax = 0, ay = 0, az = 0, pass=0;
function report_status() {
// console.log('ax', ax, 'ay', ay, 'az', az)
// et les affiche dans la page html
document.getElementById("accelerationX").innerHTML = ax;
document.getElementById("accelerationY").innerHTML = ay;
document.getElementById("accelerationZ").innerHTML = az;
// on affiche également la norme sa valeur max et le nombre de pas
document.getElementById("n").innerHTML = n;
document.getElementById("pas").innerHTML = pas;
document.getElementById("maxn").innerHTML = maxn;
}
function odmHandler(e) {
has_accel = true
ax = event.accelerationIncludingGravity.x ;
ay = event.accelerationIncludingGravity.y ;
az = event.accelerationIncludingGravity.z ;
report_status()
}
function fakeAccel() {
var min = -12, max = 12
return Math.random() * (max - min) + min;
}
function mockAccelerometer() {
has_accel = false
ax = fakeAccel()
ay = fakeAccel()
az = fakeAccel()
report_status()
}
function accel_norm(ax, ay, az) {
return Math.sqrt (ax*ax + ay*ay + az*az);
}
//programme d'alberto desarullo qui va chercher les données de l'accelerometre
if (window.DeviceMotionEvent != undefined) {
window.ondevicemotion = odmHandler
var ev = new Event("requestMove");
function pollAccelerometer() {
setInterval(makeStep, 250)
}
function makeStep() {
if (!has_accel) {
mockAccelerometer()
}
// on calcule la norme c'est à dire la taille du
// vecteur qui est défini par les points
// d'accélération ax ay et az
n0 = n;
n = accel_norm(ax,ay,az)
// on calcule un min et max pour la norme
if (n < n0) {
minn = n ;
} else if (n > n0) {
maxn = n ;
}
// on définit un seuil qui correspond à un pas
if ((maxn - minn) > 10) {
pas = pas+1;
document.dispatchEvent(ev);
}
}
pollAccelerometer();
}
});
|