-
Notifications
You must be signed in to change notification settings - Fork 0
/
temperature.js
74 lines (66 loc) · 1.46 KB
/
temperature.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
69
70
71
72
73
74
var five = require("johnny-five");
var board = new five.Board();
board.on("ready", function() {
var temp = new five.Temperature({
controller: "TMP36",
pin: "A0"
});
var rgb = new five.Led.RGB({
pins: [3, 5, 6],
isAnode: true
});
temp.on("change", function(err, data) {
// Write an algorithm that converts temperature (F, K or C)
// into an RGB hex value.
var value = data.kelvin % 100;
console.log('value', value);
var red, green, blue;
if (value <= 66) {
red = 255;
} else {
red = value - 60;
red = 329.698727446 * (red ^ -0.1332047592);
if (red < 0) {
red = 0;
}
if (red > 255) {
red = 255;
}
}
if (value <= 66) {
green = value;
green = 99.4708025861 * Math.log(green) - 161.1195681661;
if (green < 0) {
green = 0;
}
if (green > 255) {
green = 255;
}
} else {
green = value - 60;
green = 288.1221695283 * (green ^ -0.0755148492);
if (green < 0) {
green = 0;
}
if (green > 255) {
green = 255;
}
}
if (value >= 66) {
blue = 255;
} else {
blue = value - 10;
blue = 138.5177312231 * Math.log(blue) - 305.0447927307;
if (blue < 0) { blue = 0; }
if (blue > 255) { blue = 255; }
}
function componentToHex(c) {
var hex = c.toString(16);
return hex.length === 1 ? '0' + hex : hex;
}
function rgbToHex(r, g, b) {
return '#' + componentToHex(r) + componentToHex(g) + componentToHex(b);
}
rgb.color(rgbToHex(red, green, blue));
});
});