More Related Content Similar to Mecha-Mozilla (20) Mecha-Mozilla4. var blink = function(value) {
var arduino =
document.arduino;
arduino.analogWrite(8,
value);
setTimeout(blink, 1000,
value == 0 ? 255 : 0);
}
$(document).ready(function() {
var arduino =
document.arduino;
arduino.open("/dev/
cu.usbmodemfa131");
arduino.pinMode(8, true);
//start blinking
blink(0);
});
arduino.js
12年8月21日火曜日
5. • ウェブを
実世界に取り出してみる
• ウェブブラウザでできないコトを
実世界で補填してみる
• ウェブと実世界の良いところを併せた
コンテンツ/体験を模索してみる
12年8月21日火曜日
9. • ウェブを
実世界に取り出してみる
• ウェブブラウザでできないコトを
実世界で補填してみる
• ウェブと実世界の良いところを併せた
コンテンツ/体験を模索してみる
12年8月21日火曜日
12. arduino.js
//JavaScript
var blink = function(value)
{
var arduino =
document.arduino;
arduino.analogWrite(8,
value);
setTimeout(blink, 1000,
value == 0 ? 255 : 0);
}
$
(document).ready(function()
{
var arduino =
document.arduino;
arduino.open("/dev/
cu.usbmodemfa131");
arduino.pinMode(8,
true);
//start blinking
blink(0);
});
12年8月21日火曜日
15. Addon構成
libArduinoBridge.lib
ネイティブ
arduino.js
Cとの接続ライブラリ
main.js
Addonメイン
12年8月21日火曜日
16. Addon : main.js
Addon エントリポイント
arduinoライブラリを
読み込み
各ドキュメントから
触れるようにする
12年8月21日火曜日
19. js-ctypes と header の比較
js-ctypes header
var openArduino = dylib.declare(
"openArduino", /* function name */
ctypes.default_abi, /* ABI type */
ctypes.int32_t, /* return type */
ctypes.char.ptr, /* parameter */
new ctypes.PointerType(ctypes.char.ptr)
);
int openArduino(char* portname, char** error);
exports.open = function(portname) {
var err = ctypes.char.ptr();
if ( -1 == openArduino(portname, err.address()) ) {
throw err.readString();
}
}
12年8月21日火曜日
21. Arduino
コマンドをUSB経由で
受け付け実行
12年8月21日火曜日
22. packege.json
{
"name": "arduino.js",
"license": "MPL 1.1/GPL 2.0/LGPL 2.1",
"author": "Daisuke Akatsuka",
"version": "0.1",
"fullName": "arduino.js",
"id": "",
"description": "arduino.js core",
"unpack":"true"
}
12年8月21日火曜日
23. 今後の展開
• バリエーションを増やす
12年8月21日火曜日
25. kinect.js
//JavaScript
next: function() {
Main.kinect.getDepthTo(Main.bu
ffer);
var depthBuffer =
Main.buffer;
for (var i = 0, n =
depthBuffer.length; i < n; i+
+) {
var depth =
depthBuffer[i];
var color = 255-
Math.floor(depth/
MAX_DEPTH*255);
var index = i * 4;
Main.imagedata.data[index
+1] = color;
}
Main.context.putImageData(Main
.imagedata, 0, 0);
setTimeout(Main.next, 10);
}
12年8月21日火曜日
26. kinect.js : ソフトウェア構成
Addon
User’s js-ctypes
JavaScript
c++
open
kinect
12年8月21日火曜日
28. ネイティブの配列
• js-ctypes の配列をそのまま使うと遅い
※JITコンパイラが効かない
• JavaScript の配列にコピーして利用する
• XPCOM で実装しても速度は変わらない
※JSAPI の JS_SetElement が遅い??
• XPCOM で予め配列のメモリを確保しても
それを返す実装はできない
※XPCOMで返した配列のメモリが破棄される
• 極力配列数を少なくする
• ビット演算を使って圧縮するなど
12年8月21日火曜日
29. 今後の展開
• Tangible Webmaker
12年8月21日火曜日
30. Mecha-Mozilla
http://www.mecha-mozilla.org
http://mecha-mozilla.tumblr.com
毎週金曜日にMecha-Mozillaミーティング
12年8月21日火曜日