文章目录

  • 前言
  • 一、实施过程
    • 1、获取模板库
    • 2、修改config.json
    • 3、编辑资源文件
    • 4、修改-main.ts描述文件
  • 二、测试
    • 1.导入用户库
    • 2.连接硬件测试
  • 导出分享

前言

Mind+是一款拥有自主知识产权的国产青少年编程软件,支持Arduino、micro:bit、掌控板等各种开源硬件,兼容Scratch3.0,支持AI与IoT功能,只需要拖动图形化程序块即可完成编程,还可以使用Python/C/C++等高级编程语言,让大家轻松体验创造的乐趣。

  • Mind+支持三大主流开源硬件平台(Arduino,micro:bit,掌控板esp32),均可以使用基于arduino C的库,因此只需要编写一个arduino的库即可达到三平台兼容。
  • Mind+已经支持几十种常用的扩展小模块库,为方便更多用户的使用,从V1.6.2版本开始开放用户自定义库功能,你可以根据自己的需要编写或移植现有的arduino库,自己设计图形模块(block)的外观及形状,自己设计对应生成的代码。
  • 支持通过网络加载Github的用户库或直接本地加载(config.json或.mpext文件)。

注:使用用户库请先升级Mind+到V1.6.2 RC2.0及以上版本。

本项目参考官方样例和文档,基于Mind+上传模式自定义用户库,利用光电测速模块实现了测速的功能。

一、实施过程

1、获取模板库

下载官方样例:
https://gitee.com/dfrobot/ext-oled12864.git
参考官方文档:
https://mindplus.dfrobot.com.cn/ext-api

用户库文件结构

└─newExtensions                    // 项目名称│  config.json                 // 本用户库的配置文件│  LICENSE.TXT                 // 许可证说明│  README.md                   // 文档说明│└─arduinoC                     // arduino模式用户库根目录│  main.ts                 // 图形块描述文件│├─libraries                // arduino库文件,列出本扩展库所有需要引用的.c或.h或.cpp文件│  └─oled12864│          oled12864.cpp│          oled12864.h│          qrcode.c│          qrcode.h│├─_images                  // 图片文件│      featured.png        // MindPlus扩展库展示图片│      icon.svg            // MindPlus中图形块上的图标文件│├─_locales                 // 翻译文件,支持多国语言│      zh-cn.json│      en.json│└─_menus                   // 下拉菜单参数,每个板子可以独立设置leonardo.jsonuno.jsonnano.jsonmega2560.jsonmicrobit.jsonmpython.json

将官方提供的模板下载下来,下载后解压得到一个文件夹,删除其中的mpext文件,修改文件夹名字为你的项目名称。
(注:用英文数字或下划线,不要用中文和特殊符号。)

2、修改config.json

  • 修改name和description对应字段
  • 修改author(作者)和email(邮箱)为自己的
  • 修改id为这个扩展库唯一标识,英文数字或下划线,不要用中文和特殊符号,最好与文件夹后的名字相同
  • version为版本号,可以改成0.0.1,以后每次修改代码数字逐渐升级
{"name": {"zh-cn": " 光电测速模块","en": "Photoelectric speed measuring module"},"description": {"zh-cn": "测量被测物运行速度的模块","en": "A module that measures the speed of the object being measured"},"author": "XX","email": "XXX@qq.com","license": "MIT","isBoard": false,"id": "SpeedModule","version": "0.0.1","platform": ["win","mac","web"],"asset": {"arduinoC": {"dir": "arduinoC/","version": "0.0.1","board": ["microbit","esp32","arduino"],"main": "main.ts"}}
}

详细说明

  • name: 名称。模块显示在扩展库中的标题名称。
  • description: 描述。模块显示在扩展库中的描述。
  • author: 作者名。请使用英文字母表示。
  • email: 邮箱。当版本更新需要修改用户库或用户反馈,将通过邮件通知开发者(预留功能)
  • license: 许可证类型。参考链接
  • isBoard: 主控。当前扩展是否为主控(预留功能,统一为false)
  • id: 模块区分号。同一作者的不同模块需要设置不同的id,建议使用英文和数字符号命名。
  • platform: 支持平台。有三个选项:“win”, “mac”, “web”,分别表示Mind的windows桌面版,mac桌面版,网页版,当前仅支持win。
  • asset: 各模式配置。当前仅支持上传模式的arduino C模式。
  • dir: 指定模式路径。/不能遗漏,例如:“dir”: “arduinoC/”,不建议修改。
  • ersion: 版本信息。三个数字,从小到大,例如:“0.0.1”,建议每次发布都增加一位小数,依次从小到大增加(版本控制功能预留)。
  • board: 指定支持的主控,主控对应字段见下文“主控列表”。请确认测试通过后添加对应支持主控。若当前主控板不支持或模式不支持,则用户库右上角会显示“不可用”
  • main: block描述文件的文件名。需要是ts后缀文件,名称自定义,需要在对应路径下,例如:main.ts。
  • files: 包含所需文件的路径,以便加载。 (注:从1.6.2RC2.0开始删除此字段,编译和导出库时自动添加相关文件。)
  • isTest: 调试模式。True打开测试模式:每次编译都会重新构建静态文件(用于调试);False关闭测试模式:只会在第一次编译才会构建静态文件。建议开发者在调试过程中设置为True,在导出发布时设置为False。(注:从1.6.2RC2.0开始删除此字段,根据加载库方法自动判断模式。从本地解压导入config.json为调试模式则有调试标志及刷新按钮,以zip或从网络加载为非调试模式则无标志及按钮。)

3、编辑资源文件

_images:此文件可放置图片类的资源文件。

  • 删除_images中的所有文件

  • 将一张600x372像素的照片放到文件夹中,命名为featured.png(扩展库界面图片,名称不可修改)

  • 在iconfont搜索led,找一个合适的图片,点击下载,颜色选择白色,点击SVG下载,保存到文件夹中,命名为icon.png


_libraries文件夹中放置需要用到的库文件,我这里用到的库文件内容如下

_locales此文件夹放置翻译文件,如果仅中文可以不用操作此文件夹,本文无需修改

说明:

  • block及menu都可以定义。
  • json格式,每一行格式为:

“用户库名称.函数名|block”:“翻译内容[菜单项]”,

或菜单项则为:

“用户库名称.菜单名.菜单项|menu”:“翻译内容”,

_menus文件夹放置下拉菜单文件,例如引脚编号的下拉,默认放置了所有主控器的常见引脚,可以直接在main.ts中调用,本文无需修改

4、修改-main.ts描述文件

  • 图形块描述文件中通过//%后面的内容可以定义图形块外观
  • 通过function定义block对应的生成代码以及位置

文件内容结构

enum xxxx {//% 引脚描述内容定义,需要翻译的菜单项需要定义到menu文件中//% 引脚生成代码定义
}//% color="#xxxx"   整个扩展block的外观定义,通过 //% 后的描述内容定义
namespace xxxx {  //% block="xxx [xxx]" blockType="xxx" 第一个block的外观定义描述内容  //% block其他描述内容 export function xxxx(parameter: any, block: any) {  //单个block的生成代码定义,通过函数描述生成代码的位置及内容//生成的代码位置及内容描述}//% block="xxx [xxx]" blockType="xxx" 第二个block的外观定义描述内容 //% block其他描述内容 export function xxxx(parameter: any, block: any) {//生成的代码位置及内容描述}//% block="xxx [xxx]" blockType="xxx" 第N个block的外观定义描述内容//% block其他描述内容 export function xxxx(parameter: any, block: any) {//生成的代码位置及内容描述}
}

思路设计
这里设计了光电测速模块的功能是通过码盘的周长及其栅格1秒内经过光电门的次数计算出其路程,从而计算出1秒内的速度。

实现

  • 积木颜色如果需要修改可以用取色板工具取色后修改
  • namespace名字修改为与id相同
  • 修改block字段设置积木文字和下拉菜单,blocktype设置积木形状
  • shadow配置下拉菜单 配置menu文件 如果需要翻译可以修改zh-cn文件
  • 配置block函数内容

部分代码

二、测试

1.导入用户库

打开Mind+,切换到上传模式,打开扩展,选择Arduno uno,然后导入用户库查看效果,可以看到已经有调试标志以及快捷刷新按钮了


2.连接硬件测试

硬件准备

硬件 数量
Arduino UNO 1
光电测速模块 1
光电测速模块 1
调速模块 1
电机 1
码盘 1

上传代码

导出分享

1、测试完成之后,在扩展库上右键选择导出,稍等即可导出完成

2、此时查看库文件目录下有一个.mpext文件,此文件直接加载即可,此时没有调试模式的标志


3、调试完成后,编写README.md文件(以markdown格式编辑本扩展库的教程)

4、分享(推荐分享到 Mind+社区):

  • 本地加载:直接分享给其他用户加载.mpext(注意不要解压从本地上传,否则是调试模式,从本地应该直接选择.mpext加载打开)。
  • 网络加载:将.mpext文件导出到与config.json同级目录下,通过git将整个文件夹上传到github或者gitee(码云) (gith教程),将git链接分享给其他用户加载。

Mind+上传模式自定义用户库实现光电测速模块测速相关推荐

  1. Mind+实现自定义用户库——TM1637数码管

    Mind+实现自定义用户库--TM1637数码管 前言 Mind+内置支持上百种常见的传感器库,并从V1.6.2开始,开放用户库,任何用户均可以制作和分享自己的用户库,并提供了本地及网络加载方式,方便 ...

  2. Mind+上传模式的第三方Arduino用户库实现 -DHT11温湿度模块

    Mind+上传模式的第三方Arduino用户库实现--DHT11模块读取温湿度 前言 Mind+是一款拥有自主知识产权的国产青少年编程软件,支持Arduino.micro:bit.掌控板等各种开源硬件 ...

  3. 自编记单词小程序项目(自定义词库,多功能)C/C++语言实现

    一款方便实用又简洁的记单词小程序,自定义单词库,多功能协助记忆!!! github地址:https://github.com/Knock-man/Memorizing-words-program 如今 ...

  4. 【Mind+】APDS9960第三方用户库实现

    文章目录 一.前言 二.修改外观信息 1.下载样例库 用户库文件结构 2.修改json信息 json配置文件 3.修改外观图片以及积木块矢量图 Mind+预览效果 三.库引入及修改编写main.ts ...

  5. apds9960第三方用户库实现

    一.前言 Mind+内置支持上百种常见的传感器库,并从V1.6.2开始,开放用户库,任何用户均可以制作和分享自己的用户库,并提供了本地及网络加载方式,方便大家的使用. 二.修改外观信息 1.下载样例库 ...

  6. mind+自定义arduino库,实现简易RFID智能家居系统

    文章目录 前言(完整用户库下载链接在文章末尾) 一.用户库文件结构 二.配置config.json文件 三.编写main.ts文件 四.编辑资源文件夹 _images _locales _menus ...

  7. IK分词器使用自定义词库

    2019独角兽企业重金招聘Python工程师标准>>> 1.拷贝IKAnalyzer.cfg.xml到WEB-INF/classes下,拷贝IKAnalyzer2012FF_u1.j ...

  8. Java-Web JSTL标签库、自定义标签库和MVC设计模式

    目录 一.JSTL标签库 1.什么是JSTL 2.JSTL标签库 3.使用taglib指令导入标签库 4.core标签库常用标签 (1)out和set (2)remove (3)url (4)if ( ...

  9. Elasticsearch 之(24)IK分词器配置文件讲解以及自定义词库

    1.ik配置文件 ik配置文件地址:es/plugins/ik/config目录 IKAnalyzer.cfg.xml:用来配置自定义词库 main.dic:ik原生内置的中文词库,总共有27万多条, ...

最新文章

  1. gcc可以编译python程序吗_gcc c语言编译流程
  2. 【Android 热修复】运行 Tinker 官方示例 ( 处理 TINKER_ID 问题 | 编译 debug 包 | 修改 Gradle 脚本 | 生成 patch 包 | 热修复 )
  3. JTextPane设置颜色出现的问题
  4. VS2010中如何实现自定义MFC控件
  5. 超速问题的c语言编程,超速行驶问题--精选.doc
  6. oracle 的使用
  7. 第十节:委托和事件(2)(泛型委托、Func和Action、事件及与委托的比较)
  8. java getmonth_Java LocalDateTime类| 带示例的getMonth()方法
  9. 计算机网络(第四章网络层)
  10. prim最小生成树算法 邻接表+STL实现
  11. WMI Defense
  12. JZOJ7月18日提高组T1 Family
  13. could not extract ResultSet 错误
  14. phyton做年历和月历
  15. ctfshow萌新赛web
  16. python打印实心菱形图案_python输入三角形三边求面积|python打印实心菱形图案
  17. python高斯噪声怎么去除_【OpenCV+Python】线性滤波amp;非线性滤波
  18. [内附完整源码和文档] 基于Java的个人通讯录管理系统
  19. 年轻程序员如何快速成长
  20. 谷歌浏览器安装vue-devtools

热门文章

  1. vue 中的 ... (三个点的用法)
  2. AD18输出BOM表
  3. Android连上USb不充电,为什么手机usb连不上电脑只显示充电 安卓手机解决方法
  4. 小伙伴们,一个身份证可注册五个微信公众号了!
  5. 文件扫描件怎么弄?分享三个实用的方法
  6. 伊朗上下5000年简史
  7. matlab控制turtlebot,Turtlebot与Matlab入门教程-控制机器人
  8. javaMail学习(二)——邮箱客户端Foxmail的使用
  9. JS 根据生日计算年龄(年月天)
  10. 电脑添加新的固态应硬盘的步骤