/
led.js.html
121 lines (90 loc) · 2.81 KB
/
led.js.html
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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>JSDoc: Source: led.js</title>
<script src="scripts/prettify/prettify.js"> </script>
<script src="scripts/prettify/lang-css.js"> </script>
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<link type="text/css" rel="stylesheet" href="styles/prettify-tomorrow.css">
<link type="text/css" rel="stylesheet" href="styles/jsdoc-default.css">
</head>
<body>
<div id="main">
<h1 class="page-title">Source: led.js</h1>
<section>
<article>
<pre class="prettyprint source linenums"><code>/**
* @module Server-Side Events: LED
*/
/**
* Listener for LED blink event, sends data to board, manages timing
* @param {obj} board Reference to instantiated Firmata board
* @param {obj} socket Reference to socket.io socket
*/
exports.blink = function blink(board, socket) {
socket.on('blink', function(data){
var ledPin = data.pin,
ledOn = true,
length = data.length || 500;
board.pinMode(ledPin, board.MODES.OUTPUT);
var blinkID = setInterval(function() {
if (ledOn) {
board.digitalWrite(ledPin, board.HIGH);
} else {
board.digitalWrite(ledPin, board.LOW);
}
ledOn = !ledOn;
}, length);
socket.on('blink cancel', function(data) {
clearInterval(blinkID);
});
});
};
/**
* Listener for LED fade event, sends data to board, manages timing
* @param {obj} board Reference to instantiated Firmata board
* @param {obj} socket Reference to socket.io socket
*/
exports.fade = function fade(board, socket) {
socket.on('fade', function(data) {
board.pinMode(data.pin, board.MODES.PWM);
var time = data.time,
start = data.start,
stop = data.stop,
inc = data.inc,
steps = time / inc,
span = Math.abs(start - stop),
vps = span / steps,
mult = stop > start ? 1 : -1,
val = start;
function nextVal(a, b) {
return a + mult * b;
}
function setStep(num){
setTimeout(function(){
board.analogWrite(data.pin, val);
val = nextVal(val, vps);
}, num * inc);
}
for (var i = 0; i <= steps; i++){
setStep(i);
}
});
};</code></pre>
</article>
</section>
</div>
<nav>
<h2><a href="index.html">Home</a></h2><h3>Modules</h3><ul><li><a href="module-Server-Side%2520Events_%2520LED.html">Server-Side Events: LED</a></li></ul>
</nav>
<br class="clear">
<footer>
Documentation generated by <a href="https://github.com/jsdoc3/jsdoc">JSDoc 3.3.2</a> on Mon Aug 24 2015 21:06:12 GMT-0400 (EDT)
</footer>
<script> prettyPrint(); </script>
<script src="scripts/linenumber.js"> </script>
</body>
</html>