diff --git a/hardware/intel/mraa-gpio-led.html b/hardware/intel/mraa-gpio-led.html index 2462791a..985774fa 100644 --- a/hardware/intel/mraa-gpio-led.html +++ b/hardware/intel/mraa-gpio-led.html @@ -7,6 +7,7 @@ defaults: { name: {value:""}, pin: {value:"", required: true}, + color: {value:"", required: true}, }, inputs:1, outputs:0, @@ -56,14 +57,21 @@ + +
+ + +
+
diff --git a/hardware/intel/mraa-gpio-led.js b/hardware/intel/mraa-gpio-led.js index d809c64d..d9a4ce08 100644 --- a/hardware/intel/mraa-gpio-led.js +++ b/hardware/intel/mraa-gpio-led.js @@ -3,71 +3,75 @@ module.exports = function(RED) { function LEDNode(n) { RED.nodes.createNode(this, n); this.pin = Number(n.pin); - this.led0 = new m.Led(0); /*user-led1-green*/ - this.led1 = new m.Led(1); /*user-led1-red*/ - this.led2 = new m.Led(2); /*user-led2-green*/ - this.led3 = new m.Led(3); /*user-led2-red*/ + this.color = Number(n.color); + + if (this.pin == 0) { + this.user1_green = new m.Led(0); /*user-led1-green*/ + this.user1_red = new m.Led(1); /*user-led1-red*/ + } if(this.pin == 1) { + this.user2_green = new m.Led(2); /*user-led2-green*/ + this.user2_red = new m.Led(3); /*user-led2-red*/ + } + + function set_led_green(led_green, led_red) { + led_green.setBrightness(1); + led_red.setBrightness(0); + } + + function set_led_red(led_green, led_red) { + led_green.setBrightness(0); + led_red.setBrightness(1); + } + + function set_led_orange(led_green, led_red) { + led_green.setBrightness(1); + led_red.setBrightness(1); + } + + function turn_off_led(led_green, led_red) { + led_green.setBrightness(0); + led_red.setBrightness(0); + } + this.on("input", function(msg) { + if (this.pin == 0) { + this.led_green = this.user1_green; + this.led_red = this.user1_red; + } + else if (this.pin == 1) { + this.led_green = this.user2_green; + this.led_red = this.user2_red; + } + if (msg.payload == "1") { - switch(this.pin) - { - case 0: /*User0 Led Green*/ - this.led0.setBrightness(1); + switch(this.color) { + case 0: + set_led_green(this.led_green, this.led_red); break; - case 1: /*User0 Led Red*/ - this.led1.setBrightness(1); + case 1: + set_led_red(this.led_green, this.led_red); break; - case 2: /*User0 Orange*/ - this.led0.setBrightness(1); - this.led1.setBrightness(1); - break; - case 3: /*User1 Led Green*/ - this.led2.setBrightness(1); - break; - case 4: /*User1 Led Red*/ - this.led3.setBrightness(1); - break; - case 5: /*User1 Orange*/ - this.led2.setBrightness(1); - this.led3.setBrightness(1); + case 2: + set_led_orange(this.led_green, this.led_red); break; default: + console.log("unexpected"); break; } } else { - switch(this.pin) - { - case 0: /*User1 Led Green*/ - this.led0.setBrightness(0); - break; - case 1: /*User1 Led Red*/ - this.led1.setBrightness(0); - break; - case 2: /*User1 Orange*/ - this.led0.setBrightness(0); - this.led1.setBrightness(0); - break; - case 3: /*User2 Led Green*/ - this.led2.setBrightness(0); - break; - case 4: /*User2 Led Red*/ - this.led3.setBrightness(0); - break; - case 5: /*User2 Orange*/ - this.led2.setBrightness(0); - this.led3.setBrightness(0); - break; - default: - break; - } + turn_off_led(this.led_green, this.led_red); } }); + this.on('close', function() { - this.led0.close(); - this.led1.close(); - this.led2.close(); - this.led3.close(); + if (this.pin == 0) { + this.user1_green.close(); + this.user1_red.close(); + } if(this.pin == 1) { + this.user2_green.close(); + this.user2_red.close(); + } }); } RED.nodes.registerType("mraa-gpio-led", LEDNode);