diff --git a/index.js b/index.js index 3c55f8c..b1b7e6b 100644 --- a/index.js +++ b/index.js @@ -8,5 +8,6 @@ module.exports = { Sensor: require('./lib/sensor'), Ping: require('./lib/ping'), PIR: require('./lib/pir'), - LCD: require('./lib/lcd') + LCD: require('./lib/lcd'), + Activelow: require('./lib/activelow') }; diff --git a/lib/activelow.js b/lib/activelow.js new file mode 100644 index 0000000..60c7eb1 --- /dev/null +++ b/lib/activelow.js @@ -0,0 +1,63 @@ + +/* + * Main ActiveLow constructor + * Process options + * Tell the board to set it up + */ +var Activelow = function (options) { + if (!options || !options.board) throw new Error('Must supply required options to ActiveLow'); + this.board = options.board; + this.pin = options.pin || 13; + this.bright = 0; + this.board.pinMode(this.pin, 'out'); + this.direction = -1; +} + +/* + * Turn the ActiveLow device on + */ +Activelow.prototype.on = function () { + this.board.digitalWrite(this.pin, this.board.LOW); + this.bright = 255; +} + +/* + * Turn the ActiveLow device off + */ +Activelow.prototype.off = function () { + this.board.digitalWrite(this.pin, this.board.HIGH); + this.bright = 0; +} + +Activelow.prototype.brightLevel = function(val) { + this.board.analogWrite(this.pin, this.bright = val); +} + +Activelow.prototype.fade = function(interval) { + to = (interval||5000)/(255*2); + var self = this; + setInterval(function() { + if(!self.board.serial) return; //Interval too fast for debug messages on ^c + if(self.bright==0) direction = 1; + if(self.bright==255) direction = -1; + self.brightLevel(self.bright+direction); + },to); +} + + +/* + * Start a bariable blinking pattern + */ +Activelow.prototype.blink = function (interval) { + interval = interval || 1000; + var self = this; + setInterval(function(){ + if (self.bright) { + self.off() + } else { + self.on(); + } + }, interval); +} + +module.exports = Activelow;