添加扩展块以便进行硬件控制

时间:2018-05-23 09:48:58

标签: javascript node.js arduino mit-scratch johnny-five

我最近一直在为麻省理工学院的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);
})();

0 个答案:

没有答案