Skip to content

Commit b19317b

Browse files
committed
Update light
1 parent 2fb5cbf commit b19317b

File tree

3 files changed

+106
-6
lines changed

3 files changed

+106
-6
lines changed

app.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,10 @@ io.sockets.on('connection', function (socket) {
4747
}
4848
});
4949

50+
if (devices['light']) {
51+
devices['light'].bindSocket(socket);
52+
}
53+
5054
if (devices['robot']) {
5155
devices['robot'].bindSocket(socket);
5256
}

light.js

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,93 @@ var Light = function (descriptor) {
77
});
88
};
99

10+
var PIN_MULTI_RED = 3;
11+
var PIN_MULTI_GREEN = 5;
12+
var PIN_MULTI_BLUE = 6;
13+
var PIN_GREEN1 = 9;
14+
var PIN_GREEN2 = 10;
15+
var PIN_GREEN3 = 11;
16+
17+
Light.prototype.bindSocket = function (socket) {
18+
socket.on('light', (function (data) {
19+
var _hue = data.hue;
20+
var _brightness = data.brightness / 100.0;
21+
var _sat = 1;
22+
23+
var red = 0.0;
24+
var green = 0.0;
25+
var blue = 0.0;
26+
27+
if (_sat == 0.0) {
28+
red = _brightness;
29+
green = _brightness;
30+
blue = _brightness;
31+
} else {
32+
if (_hue == 360.0) {
33+
_hue = 0;
34+
}
35+
36+
var slice = Math.floor(_hue / 60.0);
37+
var hue_frac = (_hue / 60.0) - slice;
38+
console.log(slice, hue_frac);
39+
40+
var aa = _brightness * (1.0 - _sat);
41+
var bb = _brightness * (1.0 - _sat * hue_frac);
42+
var cc = _brightness * (1.0 - _sat * (1.0 - hue_frac));
43+
44+
switch(slice) {
45+
case 0:
46+
red = _brightness;
47+
green = cc;
48+
blue = aa;
49+
break;
50+
case 1:
51+
red = bb;
52+
green = _brightness;
53+
blue = aa;
54+
break;
55+
case 2:
56+
red = aa;
57+
green = _brightness;
58+
blue = cc;
59+
break;
60+
case 3:
61+
red = aa;
62+
green = bb;
63+
blue = _brightness;
64+
break;
65+
case 4:
66+
red = cc;
67+
green = aa;
68+
blue = _brightness;
69+
break;
70+
case 5:
71+
red = _brightness;
72+
green = aa;
73+
blue = bb;
74+
break;
75+
default:
76+
red = 0.0;
77+
green = 0.0;
78+
blue = 0.0;
79+
break;
80+
}
81+
}
82+
83+
var ired = Math.floor(red * 255.0);
84+
var igreen = Math.floor(green * 255.0);
85+
var iblue = Math.floor(blue * 255.0);
86+
var ibrightness = Math.floor(_brightness * 255.0);
87+
88+
this.board.analogWrite(PIN_MULTI_RED, ired);
89+
this.board.analogWrite(PIN_MULTI_GREEN, igreen);
90+
this.board.analogWrite(PIN_MULTI_BLUE, iblue);
91+
this.board.analogWrite(PIN_GREEN1, ibrightness);
92+
this.board.analogWrite(PIN_GREEN2, ibrightness);
93+
this.board.analogWrite(PIN_GREEN3, ibrightness);
94+
}).bind(this));
95+
};
96+
1097
exports.create = function (descriptor) {
1198
return new Light(descriptor);
1299
};

www/light.html

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -60,10 +60,10 @@ <h1>Webduino <small>Control Everything™</small></h1>
6060
<article>
6161

6262
<h3><a href="light.html">Lights</a></h3>
63-
<p id="brightness_txt">Brightness (127)<p>
63+
<p id="brightness_txt">Brightness (50)<p>
6464
<div id="brightness"></div>
6565

66-
<p id="hue_txt">Hue (127)<p>
66+
<p id="hue_txt">Hue (180)<p>
6767
<div id="hue"></div>
6868
</article>
6969

@@ -114,16 +114,25 @@ <h3><a href="light.html">Lights</a></h3>
114114
}
115115

116116
$(function() {
117-
$( "#brightness, #hue" ).slider({
117+
$( "#brightness" ).slider({
118118
orientation: "horizontal",
119119
range: "min",
120120
min: 0,
121-
max: 255,
122-
value: 127,
121+
max: 100,
122+
value: 50,
123+
slide: refresh,
124+
change: refresh
125+
});
126+
$( "#hue" ).slider({
127+
orientation: "horizontal",
128+
range: "min",
129+
min: 0,
130+
max: 360,
131+
value: 180,
123132
slide: refresh,
124133
change: refresh
125134
});
126135
});
127136
</script>
128137
</body>
129-
</html>
138+
</html>

0 commit comments

Comments
 (0)