1、 M i x l y 速查 手册 傅骞 谢博超 陈露 M ixly T e am 2 016 .4 目 录 M ix ly 简介 . 1 2 1 M ixly 简介 . 1 2 M ixl y 系统介绍 2 2.1 模块选择区 2 2.1 .1 输入输出 . 3 2.1 .2 控制 6 2.1 .3 数学 7 2.1 .4 文本 9 2.1 .5 数组 9 2.1 .6 逻辑 10 2.1 .7 通信 10 2.1 .8 存储 12 2.1 .9 传感器 12 2.1 .1 0 执行器 . 12 2.1 .1 1 以太网(新增):初始化、客户端连接、数据读取、数据发送 . 13 2.1 .1
2、2 变量 . 13 2.1 .1 3 函数 . 14 2.1 .1 4 第三方扩展 15 2.2 程序建构区 . 15 2.3 代码程序区(可隐藏) 16 2.4 系统功能区 . 17 2.4 .1 一般功能 17 2.4 .2 库功能 17 2.4 .3 编译 & 上传 19 2.4 .4 主控板选择 & 端口 19 2.4 .5 串口监视器 . 19 2.4 .6 拖动缩放界面按钮 20 2.5 消息提示区 20 3 自定义公司库 21 3.1 一个完整的公司库的目录 . 21 3.2 bl o c k 和 gen e r at o r 21 3.3 h ar d w ar e 目录 .
3、22 3.4 x xx 目录 23 3.5 c o mp an y pin 目录 . 23 3.6 lang u a ge 目录 . 23 3.7 me dia 目录 . 25 3.8 xx x. x ml 文件 25 3.9 把写好的库导入 M ix ly 25 4 示范案例 26 4 .1 模仿延展类 26 4 .2 创意整合类 26 4 .3 协同合作类 27 1 - 1 - 2 Mix ly 简介 M ixly ( 全称 M ix ly _ Ar du i n o ,中文名称 米思齐)是在北京师范大学教育学部创客教育实验室负责人傅骞老师的带领下 , 由其团队开发 的 一款国内自主研发,
4、且免费开源的图形化编程工具 。 在国内外都掀起创客教育 的浪潮中,傅骞老师认真 分析了当前 电子领域内的创客教育,并认为“如果不能给学生提供一个足够简单的、不能给教师提供一个容易上手的,不能给各大生产厂商提供一个足够自主的编程工具,所谓的“创”也只能是停留在表面的浮云,风一吹便散。”为了大力贯彻落实创客实验室“自主实践,分享快乐”的教育理念,傅骞老师 带领其团队,开发出 具有易用性、简单性、功能性、普适性、延续性及生态性等特点的M ixly 。 易用性 当前多数中小学机房安装了硬盘保护卡,频繁的软件安装 与更新工作, 给 机房的管理工作 造成 极大的不便。 为此, M i x l y 在设计上
5、做到了完全绿色使用。用户直接从网上下载 M i x l y软件包,解压后即可在 W i n d o w s X P 及以上的操作系统运行。软件无需额外安装浏览器,也不用安装 Ja va 运行环境, 极大 方便了师生的使用。 简单性 Mix l y 采用了 B l o ckl y 图形化编程引擎,使用图形化的积木块代替了复杂的文本操作,为学生的快速入门奠定了良好的基础。另外, M i x l y 的开发 团队使用以下方式 来 帮助师生快速熟悉软件:第一,用不同颜色的示意图标代表不同类型的功能块,方便用户归类区分;第二,在复合功能块中提供默认选项,有效减少用户的拖动次数;第三,在同一个界面整合软件
6、的所有功能;第四,提供参考教程及代码示例。 功能性 当前,很多学校将组织或参与创客类比赛作为创客教育的一种途径, 比赛的竞技性 对软件的功能提出了更高的要求。因此, Mi x l y 在功能的设计上力求和 Ar d u i n o I D E 的文本编程保持一致,目前最新发布的 Mix l y 0 . 9 7 版已经实现 A rd u i n o 的所有官方功能(包括中断处理),并加入了大量的第三方扩展库功能,如红外遥控、超声波等,可以保证课程开设和各类创客比赛的双重需求。 普适性 Mix l y 在设计上考虑了绝对的普适性。首先,对于 Ar d u i n o 官方支持的所有开发板, Mix
7、 l y都提供了完美的支持: M i x l y 会根据开发板的类型自动改变模块中的管脚号、中断号、模拟输出管脚等;其次,对于 Ard u i n o 支持的第三方开发板 , Mi x l y 同样 支持 ,用户只要把相应开发板的定义复制到 Mi x l y 中 即可 。如国内大量的 E SP82 6 6 开发板、各类用户修改后的开发板等等, 以 保证用户在开发板选择上的最大自由度。 延续性 图形化编程系统的目标绝对不是替换原有的文本编程方式,而是希望学生通过图形化编程更好更快地理解编程的原理和程序的思维,并为未来的文本编程打好基础。 Mi x l y 的设计理念也是如此。在软件的设计上加入了
8、更多的可延续性内容,从而保护用户的学习成果。具体来说,包括引入变量类型、在模块的设计上尽量保持和文本编程的一致、支持图形编程和文本编程的对照等。 生态性 生态性是 M i x l y 最重要的设计理念,也是它区别于其它 A r d u i n o 图形化编程 的最重要特征。为了实现 Mi x l y 可持续发展, M i x l y 在设计上既允许厂商开发自己的特有模块(当前已经支持 D f Rob o t 、 Sta rt Lab 、 Mak eB l o ck 、 Se n s e 、 Se ee d 、 Lu b o t , Mic rodu i n o 、 Ru i l o n g 、
9、 No d eM cu ,No va , 用户需要有 JavaS c ri p t 编程基础才能制作这部分模块),也允许用户直接利用 Mi x l y- 2 - 的图形化编程功能生成通用模块(如数码管显示、蜂鸣音播报等,用户只需会使用 Mi x l y 即可制作这部分模块)。以上两类模块均可通过“导入库”功能导入 M i x l y 系统,从而在 Mi x l y软件的普及中实现用户自身的价值。 3 Mix ly 系统介绍 Mix l y 的主界面如图 3 - 1 所示,由左上的模块选择区、中上的程序构建区、右上的代码程序区(可隐藏)、中部的系统功能区和下部的消息提示区构成。通过该界面,用户可
10、以完成程序的编写、上传、保存、代码查看等全部工作。 当前 M i xly 0.97 支持的图形化代码编写模块有: 程序流程控制: 顺序执行、条件执行、循环执行、初始化操作、数学运算、文本运算、变量使用、类型转换、逻辑操作、数组使用、函数定义、函数使用; Ar du in o 基本操作: 数字输入、数字输出、模拟输入、模拟输出、中断控制、脉冲长度、移位输出、时间延迟、时间获取; Ar du in o 扩展操作: 声音播放、舵机控制、液晶显示、超声波使用、 DH T 1 1 使用、串口 通信 、红外 通信 、 I 2C通信 、 E E P R O M 读写, SD 卡写入; 图 3 - 1 Mi
11、x l y 主界面 3.1 模块选择区 模块选择区主要包含了 M i x l y 编程工程中的指令,这些指令依据其用途分门别类的存放在各个模块中。 以下是 M i x l y 最新版 0 . 9 7 模块中的指令详解: - 3 - 图 3 - 2 Mi x l y 模块选择区 3 .1 .1 输入输出 输入输出 所包含的指令主要分为四部分:控制管脚的输入输出(按信号类型可分为数字信号和模拟信号)、中断、脉冲长度及 Shif t O u t 。 输入输出:数字输入、数字输出、模拟输入、模拟输出、中断控制、脉冲长度、移位输出 图 3 - 3 输入输出指令模块 模块选择区- 4 - 输入 / 输出
12、数字 / 模拟输入 / 输出 图 3 - 4 数字 / 模拟输入 / 输出 依据信号是数字信号还是模拟信号以及信号的状态是输入还是输出进行适当的物理连接及代码选择。 例如如果想要点亮一盏 L E D 灯(假设该灯连接管脚 13 ),使用数字输出语句将管脚 13的电平调为高即可。 图 3 - 5 点亮一盏 L E D 灯的代码 如果想要使用模拟信号,就需要用到模拟管脚,当学生用模拟输出或模拟输入指令时,单击其下拉箭头,可看到 A rd u i n o 所支持的模拟输出或模拟输入所支持的管脚口,省去学生记忆的时间。 图 3 - 6 设置模拟输出管脚 图 3 - 7 设置模拟输入管脚 - 5 - 输
13、入 / 输出 中断指令 图 3 - 8 中断指令模块 由于程序往往是顺序执行,但有时可能要突然打断正在执行的指令而转而去执行更加重要的指令,因此,中断的使用就显得尤为重要了。 以下是一个最典型的中断指令应用的案例,即按一下 开关 按键 L E D 点亮三秒,三秒后自动熄灭,但如果在灯亮三秒内监测到 开关 按键再次按下,则 L E D 立即熄灭。 图 3 - 9 中断指令应用案例 图 3 - 10 设置中断模式 M ixly 的中断模式有三种可以选择:上升、下降及改变。 上升指的是按 键 的电平由低到高(实际上就是按 键 按下的过程); 下降指的是按 键 的电平由高到低(实际上就是按 键 抬起的
14、过程); 改变指的是按 键 的电平由低到高或由高到低的过程(实际上就是按 键 按下或抬起的过程)。 当学生使用中断上升模式时,只要按下按 键 则立即执行中断语句内的指令,当执行完中断内指令后,代码将继续执行之前被打断的相应指令。 - 6 - 输入 / 输出 脉冲长度 图 3 - 11 输入 / 输出中的 脉冲长度 输入 / 输出 Sh i f tO u t 图 3 - 12 输入 / 输出中的 S h i f t O ut 3 .1 .2 控制 时间延迟、条件执行、循环执行、获取时间、初始化、 S w i t ch 执行(新增) 控制模块中主要执行的内容是对程序结构进行的相应控制。 控制 初始
15、化 初始化中的内容程序只执行一次,因此我们通常把一些变量的声明(如 图 3 - 14 )或函数定义(如中断)等放在初始化里 。 图 3 - 13 初始化一个整形变量 图 3 - 14 对中断模式进行初始化 控制 条件 语 句 M ixly 的条件语句为两个,一个是 ,另一个是 。 以 为例 : 图 3 - 15 条件语句代码示例 可以理解为:当 按键 按下( 按键 接管脚 2 )时(此时【数字输入 管脚 #2 】状态为 1 ,满足条件句执行条件), L E D (接管脚 13 )点亮; 否则 (即 按键 抬起后,【数字输入 管脚 #2 】状态为 0 ,不满足 执行条件, 自动 执行否则里面的内
16、容 ) LE D 灭。在使用条件语句过程中需注意, 该条件句左上角有一个小齿轮,当点击小齿轮时可得到图 2 - 1 7 ,把否则拉入条件 句内, 如 图 2 - 1 8 所示。当对条件句操作完后,需再次点击左上角的小齿轮将弹出的窗口关闭。 - 7 - 图 3 - 16 点击小齿轮展开 “ 如果 ” 模块 图 3 - 17 设置“如果 - 否则 ” 语句 控制 循环语句 控制循环语句的代码有三条。 分别是 、 和 。 循环语句的功能就是 使某段代码重复运行。 比如最常见的呼吸灯(手机提醒灯或者路由器的灯)。呼吸灯的效果是 LE D 由 慢慢由 灭变量,后又慢慢由亮变灭的一种渐变灯。 对于存在中间
17、 状态的渐变,用数字输出就无法 实现 了。 图 3 - 18 呼吸灯的代码示例 图 2 - 1 9 就是呼吸灯的代码。 Ar du in o 本身支持的模拟输出状态为 25 6 种,也就是 0 25 5 个数值。步长为每次循环变量增加的幅度。 “ 使用 i 从 0 到 25 5 步长为 1 “ 可以理解为 i 将以每次加 1 的增福由 0 变化到 25 5 。 而我们在 3 号管脚接的 L E D 的值也将是 0 , 1 ,2, 3 最后直到 255 。第二个循环块原理类似。 控制 系统运行时间 该指令可以读取从代码编程开始到此时的系统时间。 3 .1 .3 数学 该部分主要完成数学变换功能,
18、具体包括 数字映射、数字约束、数学运算、取整、随机、三角函数 。 - 8 - 图 3 - 19 数学变换功能模块 数学 随机数 图 3 - 20 生成随机数 模块 随机数是一个左闭右开的取值范围。也就是较小的数可以取到,较大的数无法取到。 数学 约束 图 3 - 21 约束模块 约束 是 将数值限制在最小值与最大值之间,所有小于最小值的数值 被赋值为最小值,同理,所有大于最大值的数被赋值为最大值。 数学 映射 图 3 - 22 映射模块 图 3 - 23 L E D 与蜂鸣器同步增减 图 2 - 24 为 LE D 与蜂鸣器同步增大或减小的代码。因为对于 sin (i) 来说, 其值域为正数时
19、 i 的取值范围为 0, 1 8 0 ,不过对于 L E D 的呼吸灯来说,最大值可以取到 2 55 ,因此在这里运用一个映射,即使 i 因循环本身最大只能取到 1 79 ,但通过一一映射, i 的实际值 可以取到0, 25 5 。 - 9 - 3 .1 .4 文本 文本的具体内容为代码的文本输出功能,具体包括:文本连接、文本转数字、数字转文本。 图 3 - 24 文本功能 模块 所有文本内容可通过串口监视器或外接显示屏打印。 3 .1 .5 数组 数组是为了便于代码编写时所采用的一种数字块。具体包括: 定义数组、取数组值、改数组值 。 图 3 - 25 数组功能模块 数组像一个大盒子,可以储
20、存一定个数的数字 (第一个指令)或字符串(第二个指令) 。在课程中的音乐盒一课,我们就用到了数组。 图 3 - 26 两只老虎代码示例 如上图, t o n e li st , mu siclis t, high lis t, r h y th mlis t 分别储存了歌曲两只老虎的基本- 10 - 频率(即哆来咪等七音的对应频率),频率变化(即两只老虎的简谱数字),每个音的音名C D E FG AB 以及每个音的时值(长短)。 两只老虎共有三十二 个音,因此使用了一个从 1 到 32 的循环语句以此读取第一个音的频率变化(简谱,并通过 语句可读取简谱的基本频率),随后与获取 high li
21、st 里的对应音高并 按 thy th mlis t 里的 时值进行相应延时。 该代码将两只老虎的指令放到了一个名为 play mu sic 的函数 内,并通过执行 play mu sic 调用该函数。关于函数的内容,我们将在下面函数部分具体详解。 3 .1 .6 逻辑 逻辑模块中的指令大多是逻辑运算处理内容,具体可分为:条件判断、逻辑运算、?运算 。 图 3 - 27 逻辑模块 3 .1 .7 通信 通信是为了方便人 与计算机交互而采用的一种特殊 通信 方式。 具体包括: 串口 通信 ( 新增串口选择和波特率设置 ) 、红外 通信 、 I 2 C 通信 、 S P I 通信 (新增) 。 图
22、 3 - 28 通信模块(一) 图 3 - 29 通信模块(二) - 11 - 通信 串口 通信 图 3 - 30 串口通信 模块 串口 通信 功能 学生可在串口监视器中查看。这一功能对于学生检查自己代码以及监视传感器数据提供了便利条件。 假设学生将 L M 35 的温度传感器接到 模拟 管脚 A0 口 , 学 生 可 通 过指令观察当前室温。随后可能会提出疑问:当前室温怎么可能是 58 ?这将引发学生进一步的思考造成该数据的可能性。 通信 红外 通信 图 3 - 31 红外 通信 模块 上图指令主要运用的是 红外接收管与遥控器之间的数据发射与接收功能。学生掌握了红外 通信 的相关内容,便可以
23、制作遥控风扇、遥控汽车等自主设计更强的创意电子产品。 通信 I 2 C 通信 I 2 C ( I n t e r I n t e g r at e d C i r c u it )是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。 M ixly 支持 I 2 C 的读取和写入,并且支持基于 I 2 C 协议的执行器。 通信 SPI 通信 SP I 是串行外设接口( S e r i al P e r iph e r a l I n t e r f ac e )的缩写。 SP I ,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了
24、芯片的管脚,同时为 P C B的布局上节省空间,提供方便,拥有简单易用的特性。用户可以使用 M ix ly 向 SP I 传输数据。 - 12 - 3 .1 .8 存储 存储模块: E E P R O M 读写, SD 卡写入 图 3 - 32 存储功能模块 3 .1 .9 传感器 传感模块:超声波、 DH T 1 1 、 DB1 8B2 0 (新增) 图 3 - 33 传感器模块 在传感器部分,我们将一些最常见的传感器相关指令进行编库 ,比如超声波测距模块,学生在使用超声波进行测距时,可直接运用该模块,只需将 T r ig 与 E c h o 管脚填好即可,这大大节省了学生的编程时间,这将更
25、有助于使学生将更多的精力集中在 创意实践上而非抓耳挠腮地编程。 3 .1 .1 0 执行器 执行模块:声音播放、舵机控制、 I 2 C 液晶模块 - 13 - 图 3 - 34 执行器模块 (一) 图 3 - 35 执行器模块(二) 3 .1 .1 1 以太网(新增):初始化、客户端连接、数据读取、数据发送 3 .1 .1 2 变量 依据 变量 类型 可分为 :浮点变量、整型变量、布尔变量、字符串变量 。根据变量的值又可分为高 或 低、真 或 假。 图 3 - 36 变量模块 在运算中,变量是一个使用非常频繁的指令。比如在 2.1 .7 .2 使用红外接收管和遥控器的相关代码中, ir _ i
26、t e m 就是一个变量。 在使用变量时,如果用户在程序建构区内已新建了一个变量(例如使用循环语句 i 变量),变量模块 将 自动生成了一个 相对应的 系统变量 i , 用户直接使用即可。 - 14 - 图 3 - 37 系统自动生成 i 变量 3 .1 .1 3 函数 在函数部分,主要分为 定义函数 和 执行函数 ,需注意,当用户自定义一个函数时,执行函数的代码是系统生成的。 图 3 - 38 函数模块 比如让 L E D 点亮这个代码,当我把它放到函数 blin k 中后,系统会自动生成执行 blin k代码。 - 15 - 图 3 - 39 系统自动生成 执行函数 b l i n k 代
27、码模块 另外需要注意,如果使用函数指令,必须运行执行 blin k 才可以 。如果只自定义函数blin k 而不执行, L E D 是不会有任何反应的。 3 .1 .1 4 第三方扩展 M ixly 特设了第三方拓展功能。方便各大硬件厂商技术人员编写自己公司产品的库以供用户使用。截止 M ixl y 0.97 版本,现第三方扩展有 : DF R O B O T 、 SE E E DS T UDI O 、 M AK E BL O C K 、M BO T 机器人、 S E N S E 盒子、 S E N S E 机器人、 Lu B o t 、 M ic o du in o 、 N o v a 。
28、3.2 程序建构区 图 3 - 40 程序构建区 我们通常把能完成一定功能的代码在该区域处连接。 该区域右下方有个垃圾桶,学生可以将不用的代码拖进去删除,也可以将不用的代码直接往最左方拖拽(模块选 择区),同样可以删除代码。当然,点击不用的代 码后点击键盘Dele t e 也可将代码删除。 - 16 - 在垃圾桶上方有上下两个图形,一个是 + 一个是 - 。该图形可放大或缩小程序构建区代码的大小。 图 3 - 41 正常代码大小 图 3 - 42 按了放大键 + 的代码大小 在该图形上还有一个图形,它的功能是将代码大小正常化 并居中。点击它后编写的代码大小正常化并出现在搭建区最中心的位置。 图
29、 3 - 43 设置语言的种类 在该区域的右上角,还可以选取语言的种类。截止目前为止, M ixl y 可支持英语、西班牙语、简体中文及繁体中文。在选择语言的左边还有两个箭头。这两个箭头是 M ixly 0. 97新增的功能: 撤销( u n do , C tr l + Z )及重做( r e do , C tr l + Y )。 撤销功能是当我们编写代码时误删代码后,便可点击左箭头或直接按 C tr l + Z 来恢复误删代码;而重做则是和 C t r l + Z 相反,它是恢复上一步操作。该功能学生可通过点击右箭头或直接键入 C tr l + Y 来实现。 3.3 代码程序区(可隐藏) 图
30、 3 - 44 代码程序区的隐藏功能 该区域可通过点击 右侧 深灰色箭头来显示或隐藏。 学生在程序建构区 拖拽 指令后, 可以在代码指令区进一步学习程序语言。 代码指令区的所有 文字 代码都是 随着 相应指令被拖拽而直接生成 , 即 学生每 拖拽 一条指令,都会在代码指令区立即反馈。这对于学生自主学习程序语言、 代码自检 有 着重要作用。 - 17 - 图 3 - 45 拖拽指令即生成相应代码程序 3.4 系统功能区 图 3 - 46 系统功能区 系统功能区主要执行的功能有新建、打开、保存、另存为、导出库、导入库、管理库、编译、上传、选择主控板型号及端口、串口监视器及软件界面放大缩小等功能。
31、3 .4 .1 一般功能 新建、打开、保存、另存为是 M ixl y 的一般功能,其中代码保存或另存为 的 格式为 .x ml 。当用户需要打开已保存的文件时 ,必须通过 M ixl y 软件将其打开。也就是说,想要打开某一代码,必须要先打开 M ixl y 软件后点击 “ 打开 ” 按钮,找到该代码位置后打开。如果直接点击该代码的 . xml 文件,则只能打开该文件的 源代码 。 3 .4 .2 库功能 为了方便学生、教师及厂商的使用及代码分享, M ix ly 特增加了库功能。 库 功能分别包括:导出库,导入库以及管理库。 当学生编写完一 段 代码后(比如 语音播报), 可 这个代码 集成
32、在 一个函数中(假设该函数为 s ay N u m )。之后 只需要点击导出库并给该库起个名字 便 能 使用 。 - 18 - 图 3 - 47 导出库文件 保存后就可以将该库上传至平台,供他人下载使用、学习 。当有人下载该代码后,可直接将该库进行导入并使用。点击导入库找到该文件的位置 。 图 3 - 48 导入库文件 导入后界面会刷新,耐心等待 1 - 2 秒,便可在模块选择区见到新导入的库,同时,在消息提示区也会提示“导入自定义库成功!”接着可直接点击 s ay Nu m 库,将 指令拖入程序构建区,调用该函数即可。图 3 - 49 模块区域新增导入的库 图 3 - 50 调用该函数 -
33、19 - 管理库的功能是可以对已导入的库进行重命名、删除和打开目录。 图 3 - 51 管理库功能 3 .4 .3 编译 & 上传 当学生编写完代码后,如果想要检查代码逻辑是否有误,可点击编译。如果 显示“编译失败”,则需要根据提示检查自己的代码,如显示“编译成功”则证明代码逻辑上无误,可上传。如果出现“上传失败”,大多数情况插拔 U S B 线即可解决该问题;如果出现“上传成功”,则证明代码已上传至板子上。当然,如果学生对于代码逻辑信心十足,可直接点击上传按钮。 3 .4 .4 主控板选择 & 端口 图 3 - 52 选择主控板型号 当学生点击主控板下拉三角时即可看到有众多主控板型号可供选择
34、。学生需按照当前手中主控板型号予以选择。 图 3 - 53 选择“ Ar d u i n o U no ”主控板 上传前,学生需要将主控板与电脑通过串口线连接,此时将显示具体的端口号。 图 3 - 54 选择端口号 3 .4 .5 串口监视器 串口监视器与模块选择区的通信模块中的串口 通信 指令一起使用。假设学生已连接红外接收管,他可通过串口监视器时时观测遥控器上不同按钮的十六进制数 (其中,只有 FD 开头的数才是真正的接收数值,其他数据均为干扰数据) 。 需要注意的是,在使用串口监视器后需及时关闭。如果在没有关闭串口监视器的情况下进行代码的再次上传,往往是失败的。因为串口监视器工作时占用了
35、主控板的相关端口, 使得上传失败。 - 20 - 图 3 - 55 串口监视器 3 .4 .6 拖动缩放界面按钮 在串口监视器右侧有一个左右可拉的按钮,该按钮可放大或缩小 M ixl y 整个界面的大小。与程序构建区内的 + - 不同(该按钮只可放大或缩小程序构建区代码的大小),拖动缩放界面可放大除消息提示区外所有区域的大小。 图 3 - 56 缩放程序构建区代码 3.5 消息提示区 消息提示区通常是给学生予以信息反馈的场所。比如编译或上传进程中,编译或上传是否成功,如果失败原因是什么;或者是导入库是否成功等消息。 - 21 - 图 3 - 57 消息提示区 4 自定义 公司库 M ixly
36、方便各大硬件厂商技术人员编写自己公司产品的库以供用户使用。 编写库 的人员只需具备最基础的程序设计知识, 了解 公司库编写的规则,即可完成 公司库 的编写。 4.1 一个 完整 的 公司库的目录 下面 是一个名为 xxx 的公司库 的完整 目录: 图 4 - 1 公司库 完整 目录 示例 该 目录下 不是 所有的文件都是必须的, 视公司 库的具体 情况 而定。 下面 就对每一个目录进行说明。 4.2 b lock 和 gen era t or blo c k 和 g e n e r at o r 文件夹下分别有一个 JS 文件,一般是同名的,比如 xx x. js 。 blo c k/ xxx
37、 .j s 文件定义了你定制的图形化模块的样子。 - 22 - gene r at o r / x xx. js 文件定义了每一个图形化模块对应的 Ar du in o 代码。 比如下图就是“延时”的图形化模块的样子及其对应的 A r du in o 代码: 图 4 - 2 “ 延时 ” 模块 及其 对应的 Ar d u i n o 代码 b lo c k 和 g e n e r at o r 目录 通常 是 必不可少 的, 因此保证 bl o c k/ xxx .js 和 g e n e r at o r / xxx .j s的 正确性 是 成功定制公司库的 关键 。 比如“延时” 模块的
38、两部分 JS 代码分别如下: 图 4 - 3 “延时 ” 模块“生成 模块 ” 示例 图 4 - 4 “延时 ” 模块“生成代码” 示例 对于 这两 个 JS 文件如何书写, 在软件的 b lo c kl y / bl o c ks 和 bl o c kly / g e n e r at o r s / ar du in o目录 下有大量的例子, 基本包含 了全部类型的图形化模块的定制方法。 如果 您 想更深入的了解这些代码, 您 可以 访问 G o o gl e 的 b lo c kl y 源码进行 更加 深入 的 研究。 4.3 h a r dwar e 目录 har d w a r e
39、目录 不是必需 的目录, 通常 在公司 使用 了自己的 Ar du in o 板子 (即 官方的Ar du in o I D E 没有我们所需要的板子) 时 ,才需要 har d w a r e 目录, 该 目录 包含了 一些跟硬件相关的信息,比如 板子信息 ,管脚信息等等。 因此 , 需要比较专业的 技术 人员进行定制 此目录 。 最后是一个 以公司名 ( 比如 x xx ) 命名 的 文件夹形式存在,直接 拷贝 至 ha r d w ar e 目录下即可。 - 23 - 4.4 xxx 目录 xxx 目录 是自己的 Ar du in o 库 , xxx 一般以公司名命名, 里面 包含 一些
40、 .c pp 和 .h 文件,这个 目录也不是 必需 的, 一般 在生成的代码 中 有 #in c lu de 时 需要。 4.5 com p a ny pi n 目录 c o mp any p in 目录定义了公司所需板子的 管脚对应 关系, 该 目录 也 是非必需的, 通常 在公司 使用 了 全新的 A r du in o 板子 时 才需要 。 下面以 lu b o t 的新板子 Lu bo t MK 为例 : 图 4 - 5 在选择 板卡中出现 L u b o t MK 我们 想为这块板子定义新的 管脚 对应关系 , 先在 c o m p any pin 目录 下建立子文件夹lu bo
41、t( 通常 以公司名命名) , 再建立 pin .js 文件 ,打开 pin . js 文件 , 管脚 定义如下 图 所示(包括数字管脚、模拟管脚、 P WM 管脚、中断管脚 以及 Se r ial 选择和默认波特率 ): 图 4 - 6 l u b o t 的管脚定义 注 : pin .j s 中 可定义多块板子,即 多个 pr o f i le “ 板子 名称 “ 。 4.6 langu a ge 目录 如果 想让公司库支持 多国 语言, 就需要 l ang u ag e 目录 , 这个也是非必需的。 先 在 l ang u ag e 目录下建立子文件夹 xxx ( 通常 以公司名命名)
42、,再 在 xxx 文件夹下 建立多国语言文件。如下图 所示:分别 是 英语 、西班牙语 、 简体中文、繁体中文 。在这些 多国语言 的 js 文件中定义了 一些 JS 常量 。 图 4 - 7 多国语言支持文件 下面 讲解如何定义这些 JS 文件, 还是 以 “延时” 模块为例 , 下面分别是 英语 、西班牙语、简体中文 、 繁体中文对应的样子: - 24 - 图 4 - 8 “ 延时 ” 模块 的 多国语言 再 来看如何在语言文件中定义 对应 的文字 。 e n. js 图 4 - 9 “延时 ” 的英文 s p a. js 图 4 - 10 “延时 ” 的 西班牙文 z h - han s
43、.js 图 4 - 11 “延时 ” 的 简体中文 z h - han t.js 图 4 - 12 “延时 ” 的 繁体中文 最后 在 bl o c k / xxx .js 文件 中引用即可 : 图 4 - 13 语言包的引用 - 25 - 4.7 m edi a 目录 me dia 目录下是一些媒体文件 , 主要是图片, 这个 目录是非必需的 。只有 当 模块需要使用 图片 时 才需要该文件夹。比如 下面 这个模块 里面 就嵌入了一张图片 : 图 4 - 14 带有图片的 mi x l y 块 所有 的媒体文件放在 m e di a/ xxx 下 即可 , xxx 是子文件夹,通常 以 公司
44、名命名。 4.8 x x x . x m l 文件 xxx .x ml 文件是 一个 非常重要的 文件, 它是 必不可少 , 通常以公司名命名 。在这个 文件中定义了 所有需要 呈现的模块 , 以及整个库 中 相关文件的路径 ( 即 前面提过的这些 文件 目录) 。 下面 是一个空例子 , 可以基于这个例子进行修改 。 图 4 - 15 x m l 文件示例 4.9 把 写好 的 库 导入 Mi x ly 当我们把 整个库写好之后,就可以把 写好 的库导入到 M ixly 中 去了。 打开 M ix ly 软件( 版本 要求 0.96 4 及 以上) 。 点击“ 导入库 ” 找到 x xx.
45、x ml 文件 。 图 4 - 16 将 x x x .x ml 导入 mi x l y 点击 打开就完成整个公司库的导入 ( 前提是公司库必须正确) 。 - 26 - 5 示范案例 创客教育的核心不是知识的重复复制或复杂功能的底层实现,而是激发学生的创新并享受分享所带来的快乐。基于 Mix l y 的创意电子课程也要遵循这样的理念。遂 从 Mix l y 的技术特点出发,将 M i x l y 的应用模式分为以下几类: 5.1 模仿延展类 该模式主要用于 Mi x l y 初学者学习创意电子的基础知识,其具体步骤如下: 由教师创设情境,并提出本次课(活动)的具体任务; 启发学生思考,得出实现
46、本任务的基本思路并鼓励学生尝试实现; 教师给出参考实例,学生基于教师的代码模仿完成; 教师给出扩展任务方向,引导学生修改原有的代码实现。 下面以两只老虎为例描述这一过程。本课的目标是让学生学会使用蜂鸣器播放简单的音乐。首先,教师需要讲解基本乐理知识及 Mi x l y 中声音的播放方法,然后引导学生思考并鼓励学生尝试实现。在实际教学中,学生最初的实现过于浅显,与目标任务相差甚远。在给出合适的鼓励后再给出如图 4 - 1 所示的实现方式(使用四个数组分别用来表示基本音阶、音乐的音高、变调和时长),并引导学生进行模仿。模仿成功后,教师需要讲解实现的基本原理并给出延伸任务,让学生设计更复杂的音乐。事
47、实上,学生只需简单地修改数组就可以播放出不同的音乐。 图 5 - 1 两只老虎 Mi x l y 代码 5.2 创意整合类 该模式主要用于具有一定 Mix l y 基础的学生针对某一技术的创意整合应用,其具体步骤如下: 由教师创设情境,并提出一个特定的功能需求; 启发学生思考,得出实现功能的基本思路; 教师给出功能的具体实现模块,学生导入并体验; 激发学生创新,结合本模块和先前知识给出创意应用。 下面以语音温度计为例描述这一过程。本课的目标是实现低成本的人机交互。首先,教师抛出问题:如何才能让用户知道 Ar d u i n o 中的结果数据 ? 学生一般会给出各种各样的答案,教师在给出合理的正
48、向反馈后分析各种答案的可行性,并引导学生提出通过蜂鸣器播报数据的方案。在此基础上,给出相应的扩展库让学生尝试使用(一般不建议让学生理解该库- 27 - 的实现原理,只需会用即可)。然后,教师需要激发学生思考如何利用该库完成创新应用。图 4 - 2 给出了一个语音温度计的 Mi x l y 实现( L M3 5 和 A0 相连,蜂鸣器和 10 号管脚相连),图 4 - 3 则是语音播报库的具体实现。 图 5 - 2 语音温度计 Mi x l y 代码 图 5 - 3 语音播报库 Mi x l y 代码 5.3 协同合作类 该模式主要用于 Mi x l y 专业学习者协同完成综合性任务,其具体步骤
49、如下: 学生以小组为单位,通过协商得出要做的综合任务目标; 教师在听取学生的汇报后,给出项目的可行性评估及实现建议; 学生在教师的帮助下完成基于模块的任务分工并实现最初的设计; 小组汇总程序、进行调试,并完成最终成果的展示。 下面以在中学讲授创意电子课程的一个小组综合项目为例,描述这一过程。本课的目标是使学生综合运用元件和所学知识开发出一个创意作品。此前,教师应讲解在复杂的程序设计中代码模块化的意义,并给出一些具体的例子。在此基础上,学生自愿结为两人小组,提出创意。此处仅以其中一组学生设计并实现的温控报警散热器为例,描述后续过程。小组成员提出,使用温度传感器、蜂鸣器、 LE D 灯、数码管等元件制作一个具有显示温度和报警功能的散热器。学生描述功能并进一步对其进行分解,除了使用到教师提供的一位共阳数码管库外,还构建了呈现彩色灯(