给mBlock添加扩展模块
·
mBlock 是基于开源软件 Scratch 2.0 开发的图形化编程软件,mBlock支持 Arduino 编程,从而让用户可以轻易创造出可交互的智能应用。
可以在深圳创客工场有限公司官网下载3.x.x版本的,链接:http://www.mblock.cc/zh-home/download/
以Demo扩展为例,带大家一步一步添加自己的扩展
我们要实现的效果:
(1)在线和离线控制Arduino数字脚输出高低电平
(2)通过自定义类实现Arduino指示LED闪烁
1、扩展文件有哪些内容
解压zip文件后可以看到以下文件
s2e文件:扩展模块的定义文件
js文件夹:在线通讯调用的JavaScript脚本(Scratch在线编程)
src文件夹:Arduino编译所需.h和.cpp的源文件(Arduino离线编程)
2、定义扩展模块
打开demo.s2e
{
"extensionName": "GPIO_Demo", //扩展名称
"sort":0, //扩展在mBlock中展示次序
"javascriptURL":"js/demo.js", //指定javascript文件的路径
"extensionPort":0, //扩展使用的网络端口,0表示使用串口
"firmware":"1.0", //在线控制的固件版本号
"blockSpecs": [ //模块定义数组
["h","Demo Program","runArduino"],
[
"w", //"h"表示事件模块,“w”表示写模块,“r”表示读模块
"digitalWrite( %n , %d.digital )", //模块显示的文字,%n为第一个参数是数字类型,%d.digital为第二个参数是名为“digital”的菜单值
"digitalWrite", //执行的javascript函数
"13", //第一个参数的默认值
"HIGH", //第二个参数的默认值
{
/* ****** 该参数用于定义Arduino离线编程 ****** */
"setup":"pinMode({0},OUTPUT); \n", //插入setup中的代码
"inc":"", //引用的头文件,例如#include <Arduino.h>
"def":"", //定义实例或变量,例如double _num = 0;
"work":"digitalWrite({0},{1});\n", //输出执行代码
"loop":"" //插入loop函数中的代码
}
],
[
"w",
"blink",
"blink",
{
"setup":"",
"inc":"#include \"demo.h\"",
"def":"DemoClass demo; \n",
"work":"demo.blink(); \n",
"loop":""
}
]
],
"menus": {
"digital":["HIGH","LOW"] //菜单
},
"values":{
"HIGH":1, //字符串对应的值
"LOW":0
},
"translators":{
"zh_CN":{ //汉化字典
"Demo Program":"GPIO演示程序",
"HIGH":"高电平",
"LOW":"低电平",
"digitalWrite( %n , %d.digital )":"数字口输出( %n ,%d.digital )",
"blink":"闪烁翻转"
}
}
}
3、编写JavaScript脚本
在javascript中实现对应的函数
[JavaScript] 纯文本查看 复制代码
01
02
03
04
05
06
07
08
09
10
|
ext.digitalWrite = function (pin,level) {
//实现digitalWrite 函数
runPackage(30,pin, typeof level== "number" ?level:levels[level]);
};
var _level = 0;
ext.blink = function (){
//实现GPIO blink 函数
_level = 1 - _level;
runPackage(30,13,_level);
};
|
在src文件夹里面增加demo.h和demo.cpp
在cpp文件实现函数blink
[C++] 纯文本查看 复制代码
1
2
3
4
5
6
7
8
9
|
#include "demo.h"
DemoClass::DemoClass(){
pinMode(13,OUTPUT);
level = 0;
}
void DemoClass::blink(){
level = 1- level;
digitalWrite(13,level);
}
|
5、打包zip文件
将所有文件压缩成zip包,在mBlock的扩展管理器中导入到程序中。
最终效果如下:
生成的Arduino代码
更多推荐
所有评论(0)