Common utilities for signal processing and control based on NodeJS
npm install signal-control-utils1. Comparison
Perform comparisons. Currently it has only the method "boolean near(value1, value2, diff)"var Comparison = require("signal-control-utils").Comparison;
if(Comparison.near(10,11,2)) {
console.info("10 is near 11 by less than 2!");
}
2. MovingAverage
Stablish a fixed size moving average, add samples and get the current average.var MovingAverage = require("signal-control-utils").MovingAverage;
var speedAverager = new MovingAverage(10, function(avg) {console.info("A new sample was added. Current average is " + avg)});
speedAverager.addSample(12);
speedAverager.addSample(5);
speedAverager.addSample(21);
console.info("Final average: " + speedAverage.getAverage());
3. SchmittTrigger
https://en.wikipedia.org/wiki/Schmitt_triggervar SchmittTrigger = require("signal-control-utils").SchmittTrigger;
portSchmittTrigger = new SchmittTrigger(
function(value) {
console.info("Trigger activated at " + value);
});
portSchmittTrigger.setTriggerFixed(10);//only trigger on changes more than 10 from the last triggered value
portSchmittTrigger.updateValue(0);//will trigger as this is the first call
portSchmittTrigger.updateValue(4);//will not trigger
portSchmittTrigger.updateValue(10);//will trigger
portSchmittTrigger.updateValue(20);//will trigger
portSchmittTrigger.updateValue(25);//will not trigger
4. SpeedMeter
Measures speed based on positions set during time.var SpeedMeter = require("signal-control-utils").SpeedMeter;
speedMeter = new SpeedMeter();
speedMeter.updateValue(0);//position 0
speedMeter.updateValue(4);//position 4
speedMeter.updateValue(20);//position 20
speedMeter.updateValue(25);//position 25
console.info("Average speed is " + speedMeter.getCurrentSpeed());