【转载】MIXLY二次开发(傻瓜版)

Mixly是北师大教育学部创客教育实验室开发的一款图形化编程软件,是在Google Blockly图形化语言的基础上开发,目前支持大部分arduino型号。可惜Mixly还不支持Genuino101的六轴传感器和BLE蓝牙两项强大功能,在和

北师大教育学部创客教育实验室的老师交流之后,我决定自己来开发Mixly对Genuino101的支持模块。

Mixly的大部分程序都是用JavaScript写的,本人之前从未接触过JavaScript,参考了两篇教程,自己摸索了几天,终于把功能实现了,所以希望通过我这篇开发提示,更多人能够根据自己需要修改Mixly软件。

 

Step 1: 文件结构与功能

Picture of 文件结构与功能

Picture of 文件结构与功能

Picture of 文件结构与功能

先来个整体的结构介绍:

1. Mixly0.97\arduino-1.7.9 这个文件夹里是ArduinoIED的免安装文件,可以直接双击里面的arduino图标,打开ArduinoIDE。子文件夹Libraries里是arduino的库文件,这里我需要将用到的库文件放在这个路径。

2. Mixly0.97\company 这个文件夹里定义了我们的模块名称、种类、相关文件的路径,文件格式为

xxx.XML。

3.Mixly0.97\blockly 这个文件夹里的文件是我们修改软件的主要工作:

Mixly0.97\blockly\blocks 这里的文件定义了图形化模块的图形外观。

Mixly0.97\blockly\generators\arduino 将图形化语言转换到arduino代码。

Mixly0.97\blockly\media 图片的使用。

Mixly0.97\blockly\msg\js 语言的切换。

Mixly0.97\blockly\apps\mixly 这里文件还没弄清楚,只知道color.css文件可以设置模块类的图标。

Mixly0.974_WinFull\Mixly0.97\blockly\core 这里面是Blockly的核心库文件,暂时不需要修改。

只需要根据后面的步骤执行有下划线的步骤,就可以完成一些简单模块功能的设计。

 

Step 2: 模块的各部分路径定义

Picture of 模块的各部分路径定义

Picture of 模块的各部分路径定义

首先我们要定义模块类的名称、子模块、相关文件的路径。以输入/输出模块类的子模块“高/低电平”为例,我们需要定义模块类的名称、外观,然后定义子模块的名称、外观和相关文件路径。

在路径Mixly0.97\company下新建一个文件curie.xml,按照图片的示例定义了4个子模块。

 

Step 3: 子模图形结构定义

Picture of 子模图形结构定义

Mixly0.97\blockly\blocks 这里的文件定义了图形化模块的图形外观,我们新建curie.js文件,我一共定义了四个子模块,这里以IMU为例,代码如下:

'use strict';

goog.provide('Blockly.Blocks.base');

goog.require('Blockly.Blocks');

Blockly.Blocks.IMU = {

init: function() {

this.setColour(220);

this.appendDummyInput("")

.appendTitle(Blockly.xmaker_IMU)

.appendTitle(new Blockly.FieldDropdown([["ax", "ax"], ["ay", "ay"],["az", "az"],["gx", "gx"], ["gy", "gy"],["gz", "gz"]]), "IMUSENSOR");

this.setOutput(true, Number);

}

};

  • this.setColour()设置子模块颜色

  • this.appendDummyInput("")设置子模块的下拉选项菜单

  • .appendTitle(Blockly.xmaker_IMU)设置下拉菜单对应的文字说明,xmaker_IMU是我在文字定义文件里定义的一个字符串

  • .appendTitle(new Blockly.FieldDropdown([["ax", "ax"], ["ay", "ay"],["az", "az"],["gx", "gx"], ["gy", "gy"],["gz", "gz"]]), "IMUSENSOR");设置下拉菜单的选项内容,这里要注意,后面的图形转代码的程序编写需要这里的选项参数

  • this.setOutput(true, Number);设置子模块返回数字到前一级模块

 

Step 4: 子模块图形转Arduino代码程序

Picture of 子模块图形转Arduino代码程序

最后一步是实现我们拖动子模块时,对应的Arduino代码的生成。

我的模块类里有四个子模块,因此对应四个完成Arduino代码生成的函数,以IMU六轴传感器数据返回模块为例,程序如下:

Blockly.Arduino.IMU = function() {
Blockly.Arduino.definitions_['define_IMU'] = '#include ';

Blockly.Arduino.setups_['IMUBegin'] = 'CurieIMU.begin();\n';

Blockly.Arduino.setups_['IMUSetGyro'] ='CurieIMU.setGyroRange(250);\n';

Blockly.Arduino.setups_['IMUSetAcc'] ='CurieIMU.setAccelerometerRange(2);\n';

var what = this.getTitleValue('IMUSENSOR');

var funcName='IMU_get'+what;

var code='float'+ ' ' + funcName + '() {\n'

+' int gxRaw, gyRaw, gzRaw;\n'

+' float gx, gy, gz;\n'

+' int axRaw, ayRaw, azRaw;\n'

+' float ax, ay, az;\n'

+' CurieIMU.readGyro(gxRaw, gyRaw, gzRaw);\n'

+' CurieIMU.readAccelerometer(axRaw, ayRaw, azRaw);\n'

+' gx = (gxRaw * 250.0) / 32768.0;\n'

+' gy = (gyRaw * 250.0) / 32768.0;\n'

+' gz = (gzRaw * 250.0) / 32768.0;\n'

+' ax = (axRaw * 2.0) / 32768.0;\n'

+' ay = (ayRaw * 2.0) / 32768.0;\n'

+' az = (azRaw * 2.0) / 32768.0;\n'

+' return '+what+';\n' +' }\n';

Blockly.Arduino.definitions_[funcName] = code;

return [funcName+'()',Blockly.Arduino.ORDER_ATOMIC];

};

总结出几条规则:

  • Blockly.Arduino.definitions后面带宏定义

  • Blockly.Arduino.setups后面带setupup里面的代码

  • return后面是loop里面的代码

Step 5: 大功告成,做几个示例

Picture of 大功告成,做几个示例

Picture of 大功告成,做几个示例

软件下载地址:

http://pan.baidu.com/s/1skSeDqt

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: Mixly是一个用于编程教育的开源图形化编程软件,被广泛应用于中小学教育领域。Mixly支持使用第三方库扩展功能,使得用户可以更加便捷地使用各种传感器和执行器等硬件设备。 要下载Mixly第三方库,需要先了解Mixly官方提供的库管理器。在打开Mixly软件之后,用户可以在「任务栏」中找到「库」选项,点击进入以后会看到官方提供的各种库和对应版本。用户可以通过搜索关键字或者分类筛选,找到所需要的库,点击「引入」按钮,即可下载并添加到自己的工程中。 如果官方提供的库不足以满足用户需要,用户也可以自行开发Mixly第三方库。开发并上传第三方库需要遵循一定的规范,这些规范必须要满足才能提交Mixly库市场。具体规范详见Mixly官方文档。 在开发Mixly第三方库前,需要用户具备一定的编程技能。用户可下载Mixly官网提供的库开发样例,结合官方文档和自身开发经验进行开发。开发完成后,可将库文件上传至Mixly官方平台,并填写相关信息。通过官方审核后,库文件将会被发布至Mixly库市场,供用户使用。 总体而言,Mixly第三方库的下载和开发需要遵循一定的规范和流程。用户可通过官方库管理器下载官方库,也可以根据自身需求开发第三方库并提交至Mixly官方平台,从而使自己和其他用户获得更多的扩展和应用。 ### 回答2: Mixly是一款基于Scratch开发的图形化编程软件,为方便和拓展用户的编程需求,Mixly提供了第三方库的下载和使用功能。 在Mixly中,用户可以通过“菜单栏-库管理”来查看和下载第三方库。下载后,用户需要将库文件解压到Mixly的“libraries”文件夹中,并重新启动Mixly软件。此后用户在编程时,可在拓展类别下找到所需的库。 值得注意的是,第三方库并非Mixly开发团队开发,因此用户在使用时需要自行验证库的可靠性和安全性。另外,由于Mixly是一个国内开发的软件,英文名称可能与官方英文名称不一致,因此在搜索和下载时需要注意区分。 总的来说,Mixly提供第三方库的下载和使用功能,方便用户进行编程拓展,但需要注意验证库的可靠性和安全性,并注意英文名称的区别。 ### 回答3: Mixly是一款免费、简单易用且功能强大的编程软件,它通过拖拽图形来进行编程,适合初学者使用。Mixly还支持第三方库的开发与下载,让用户可以通过添加自己开发的库,来扩展Mixly的功能。 对于初学者来说,开发自己的第三方库可能比较困难,不过用户可以从互联网上下载其他人开发的库,然后通过Mixly导入到自己的项目中。用户只需要在Mixly界面中选择“文件”-“项目库管理器”,然后在弹出的窗口中点击“导入”按钮,选择下载好的库文件即可完成导入。 另外,有些第三方库是Mixly官方提供的,用户同样可以在“项目库管理器”中选择“官方库”选项卡,选择需要的库进行安装。 总之,Mixly的第三方库开发与下载为用户提供了更加丰富的功能和实用的组件,进一步提高了软件的易用性和开发效率。用户可以根据自己的需要选择下载第三方库,或者通过开发自己的库来扩展Mixly的功能。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值