-
Notifications
You must be signed in to change notification settings - Fork 0
/
ultrasonic.js
executable file
·68 lines (50 loc) · 1.77 KB
/
ultrasonic.js
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
console.log("Module ultrasonic chargé");
var Influx = require('influx');
//Configuration de la base de donnes
var db = new Influx.InfluxDB({
host: '192.168.1.78',
database: 'mydb',
tags: 'jardin'
});
var Gpio = require('pigpio').Gpio,
trigger = new Gpio(17, { mode: Gpio.OUTPUT }), //ecriture
echo = new Gpio(27, { mode: Gpio.INPUT, alert: false }); //lecture
MICROSECDONDS_PER_CM = 1e6 / 34321;
trigger.digitalWrite(0); // Niveau bas de trigger.
var startTick;
var pourcentage;
var currentCalc;
echo.on('alert', function(level, tick) {
var endTick, //variables definies.
diff;
if (level == 1) { // quand echo est niveau haut (digital signal). La durée du signal high correspond à la distance mesurée.
startTick = tick;
} else {
endTick = tick;
distance = ((endTick >> 0) - (startTick >> 0)) / 2 / MICROSECDONDS_PER_CM;
if (distance >= 0 && distance <= 2000) {
currentCalc = 100 - (Math.round(distance) * 100 / 2000);
} else {
console.log("La valeur " + distance + " n'est pas acceptée !");
}
}
if (pourcentage !== currentCalc) {
pourcentage = currentCalc;
console.log("Ajout du pourcentage suivant dans la database : " + pourcentage);
db.writePoints([{
"measurement": "meteo",
"fields": {
"niveauEau46": pourcentage
}
}]);
echo.disableAlert();
}
});
var getDistance = function() {
console.log("Mesure du niveau d'eau en cours...");
echo.enableAlert();
trigger.trigger(10, 1); //10µs de 5v (high) sur la borne trig du Hc-SR04. cela va envoyer 8 impulsions à 40Hz.
/**echo.disableAlert();*/
};
getDistance();
exports.GetDistance = getDistance;