Mind+是一款拥有自主知识产权的国产青少年编程软件,支持Arduino、micro:bit、掌控板等各种开源硬件,兼容Scratch3.0,支持AI与IoT功能,只需要拖动图形化程序块即可完成编程,还可以使用Python/C/C++等高级编程语言,让大家轻松体验创造的乐趣。
提示:尽管用户库增加非常简单,但依然建议有一定代码基础的用户进行操作,若有需要增加的模块而不懂代码,依然可以给官方反馈需要增加的模块。
使用用户库请先升级Mind+到V1.6.2RC2.0及以上版本。
详细说明:
enumxxxx{//%引脚描述内容定义,需要翻译的菜单项需要定义到menu文件中//%引脚生成代码定义}//%color="#xxxx"整个扩展block的外观定义,通过//%后的描述内容定义namespacexxxx{//%block="xxx[xxx]"blockType="xxx"第一个block的外观定义描述内容//%block其他描述内容exportfunctionxxxx(parameter:any,block:any){//单个block的生成代码定义,通过函数描述生成代码的位置及内容//生成的代码位置及内容描述}//%block="xxx[xxx]"blockType="xxx"第二个block的外观定义描述内容//%block其他描述内容exportfunctionxxxx(parameter:any,block:any){//生成的代码位置及内容描述}//%block="xxx[xxx]"blockType="xxx"第N个block的外观定义描述内容//%block其他描述内容exportfunctionxxxx(parameter:any,block:any){//生成的代码位置及内容描述}}以一个block的定义为例说明main.ts中的代码如下:
//%block="whenpress[BUTTON]"blockType="hat"//%BUTTON.shadow="dropdown"BUTTON.options="BTN"BUTTON.defl="BTN.A"exportfunctionmyBlock(parameter:any,block:any){letbutton=parameter.BUTTON.code;Generator.addInclude('Mylibraray','#include
在namespace前面的描述词可以指定整个用户库的颜色和icon信息,所有的block定义都需要在namespace大括号中。
//%color="#AA278D"iconWidth=50iconHeight=40namespacemodule{...}创建一个TypeScript命名空间,所有的图形块都写在里面,还可以设置模块的整体颜色以及icon的尺寸,对于图形风格设置应该包含在//%描述符中。所有的风格设置不是必须的,如果没有设置这些参数,系统将会按照默认的风格展示,//%所包含的内容可以写在一行或多行。
通过blockType关键词可以设置block的整体外观。
//%block="setthelinewidthto[WIDTH]pixels"blockType="command"exportfunctionsetBrightness(parameter:any,block:any){...}定义一个方形的图形块,//%所包含的内容可以写在一行或多行。
1.8.0RC3.0及以上版本新增功能
注:色盘控件传入16进制颜色值,如需拆分成RGB三个10进制值,可查看本文最后常见问题中的方法。
Generator是提供生成代码的工具,它被内置在mindplus解释器中,通过Generator.来调用以控制生成代码的规范。
在全局区添加include.
例如:
注意:172RC2.0以下版本不支持。
添加#define代码。
在全局区添加对象
在setup中添加代码。特别注意:使用此函数生成的代码只会生成在setup中,并会生成在其他语句前,且无法生成在函数或其他事件程序中,若非必须,请使用addCode生成代码
在setup或者loop中添加代码,没有返回值的代码添加(一般为方形,帽子形)。
在setup或者loop中添加代码,有返回值的代码添加(一般为圆形,菱形)。
例如:Generator.addCode(["libraray.read()",Generator.ORDER_UNARY_POSTFIX]);
全局区定义一个回调函数
例如:Generator.addEvent("addEvent","void","function","intx,inty");
此代码可以返回当前选择的主控板型号,根据此可以实现同一block在不同主控板生成不同代码。注:如果要在某些主板下屏蔽某积木,只需要在block外观定义阶段增加board参数即可,详情见3.2.1-block外观定义
if(Generator.board==='arduino'){//如果是arduinouno板,生成如下代码 Generator.addSetup("GTSerialSetup",`${ser}.begin(9600);`);}elseif(Generator.board==='esp32'){//如果是掌控板,生成如下代码 Generator.addSetup("GTSerialSetup",`${ser}.begin(9600,${rx},${tx});`);}主控列表
参考3.1节主控列表
parameter是shadow传入参数,它被内置在mindplus解释器中,通过parameter.来调用获取shadow动态传入的参数。
//%block="show[STR]onthe[LINE]line"blockType="command"//%STR.shadow="string"STR.defl=hello//%LINE.shadow="dropdownRound"LINE.options="LINE"LINE.defl="LINE.1"exportfunctionprintln(parameter:any,block:any){letstr=parameter.STR.codeletline=parameter.LINE.codeGenerator.addInclude('oled12864','#include
目前parameter有四个输入参数可选,根据此4个参数,可以灵活调整生成的代码。
此文件可放置图片类的资源文件。
"files":[ "_locales/zh-cn.json", "_images/icon.svg", "libraries/oled12864/oled12864.cpp", "libraries/oled12864/oled12864.h", "libraries/oled12864/qrcode.c", "libraries/oled12864/qrcode.h" ]