我最近一直在为麻省理工学院的Scratch设计自定义块来控制基于Arduino的硬件。麻省理工学院的Scratch也基于JavaScript。因此,要创建自己的块,您需要在JavaScript中编写自定义块的后端文件。
我用来控制Arduino的包称为Johnny-Five,到目前为止,我可以通过CommandWindow(cmd)运行Arduino控件JS文件。但是我无法在Scratch的块后端JS代码的末尾添加相同的Arduino控件JS代码。为此,我使用了来自GitHub here的Scratch扩展代码示例,我在开头提到了包名“Johnny-Five”。 (如果这不是正确的方法,那是因为我是JavaScript的新手),稍后在ext.wait_random = function(callback) {
函数的代码上我放置了自己的代码而不是random wait
代码。但毕竟,它似乎没有用。
任何形式的帮助都会非常感激。
这项工作的目的再次是使用Scratch块控制基于Arduino的自定义硬件。
这是我的代码。您可以在ScratchX中测试扩展代码。我之前提到过的GitHub链接中提到了这个描述。
tension demonstrating a blocking command block */
/* Sayamindu Dasgupta <sayamindu@media.mit.edu>, May 2014 */
var five = require("johnny-five");
new (function() {
var ext = this;
// Cleanup function when the extension is unloaded
ext._shutdown = function() {};
// Status reporting code
// Use this to report missing hardware, plugin or unsupported browser
ext._getStatus = function() {
return {status: 2, msg: 'Ready'};
};
// Functions for block with type 'w' will get a callback function as the
// final argument. This should be called to indicate that the block can
// stop waiting.
ext.wait_random = function(callback) {
var board = new five.Board();
board.on("ready", function() {
console.log("Ready!");
var led = new five.Led(13);
led.blink(500);
});
};
// Block and block menu descriptions
var descriptor = {
blocks: [
['w', 'wait for random time', 'wait_random'],
]
};
// Register the extension
ScratchExtensions.register('Random wait extension', descriptor, ext);
})();