From 6477a32b4a98fec45723e355a4bab8756d6d0f16 Mon Sep 17 00:00:00 2001 From: hellekin Date: Wed, 25 Apr 2018 22:59:37 +0200 Subject: Woooojajajjaa --- assets/js/pedometer.js | 134 ++++++++++++++++++++++++++++--------------------- 1 file changed, 77 insertions(+), 57 deletions(-) (limited to 'assets/js/pedometer.js') diff --git a/assets/js/pedometer.js b/assets/js/pedometer.js index 53079a9..af3d240 100644 --- a/assets/js/pedometer.js +++ b/assets/js/pedometer.js @@ -1,73 +1,93 @@ $(document).ready(function(){ -console.log("print"); + var has_accel = false -//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, + $('#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; -//programme d'alberto desarullo qui va chercher les données de l'accelerometre -if (window.DeviceMotionEvent != undefined) { - window.ondevicemotion = function(e) { - ax = event.accelerationIncludingGravity.x ; - ay = event.accelerationIncludingGravity.y ; - az = event.accelerationIncludingGravity.z ; -// et les affiche dans la page html - document.getElementById("accelerationX").innerHTML = e.accelerationIncludingGravity.x; - document.getElementById("accelerationY").innerHTML = e.accelerationIncludingGravity.y; - document.getElementById("accelerationZ").innerHTML = e.accelerationIncludingGravity.z; -// 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 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; + } - var ev = new Event("requestMove"); + function odmHandler(e) { - function pollAccelerometer() { - setInterval( function() { - - // 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=Math.sqrt (ax*ax + ay*ay + az*az); - // console.log(n); - - //on calcule un min et max pour la norme - if (n < n0) { minn = n ; - }else if (n > n0) { maxn = n ; - } - - // console.log(maxn); + has_accel = true + + ax = event.accelerationIncludingGravity.x ; + ay = event.accelerationIncludingGravity.y ; + az = event.accelerationIncludingGravity.z ; + + report_status() + } - //on défini un seuil qui correspond à un pas - if ((maxn - minn) > 10) {pas = pas+1; - - } + 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() + } - if (pas>10) { - // console.log(pas); - document.dispatchEvent(ev); - } - pas++; - // on vérifie cela chaque 250 milisecondes - }, 350); + function accel_norm(ax, ay, az) { + return Math.sqrt (ax*ax + ay*ay + az*az); } -//function mockAccelerometer() { -// setInterval( function() { -// console.log(pas); -// if (pas===100) { -// document.dispatchEvent(ev); -// } -// pas++; -// },1000); -//} + //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(); -} + pollAccelerometer(); + } }); -- cgit v1.2.3