示例-Arduino

Arduino用户库快速模板流程:制作一个LED灯模块扩展

1、获取模板库

  • 首先下载模板库:https://gitee.com/dfrobot/ext-oled12864.git
  • 下载后解压得到一个文件夹,删除其中的mpext文件,修改文件夹名字为:ext-led,英文数字或下划线,不要用中文和特殊符号

2、修改config.json

  • 删除其中files字段部分代码
  • 修改name和description对应字段,英文部分可以 谷歌翻译
  • 修改author(作者)和email(邮箱)为自己的
  • 修改id为这个扩展库唯一标识,英文数字或下划线,不要用中文和特殊符号,最好与文件夹后的名字相同
  • version为版本号,可以改成0.0.1,以后每次修改代码数字逐渐升级
  • board填写支持的板子,无法测试的不要写

其他部分不用动,保存。
具体字段描述见api列表。

修改后如下:

{
  "name": {
    "zh-cn": "LED灯模块",
    "en": "LED Module"
  },
  "description": {
    "zh-cn": "简单的控制数字引脚控制的LED灯模块",
    "en": "Simple control LED lamp module controlled by digital pin"
  },
  "author": "xxx",
  "email": "xxx@qq.com",
  "license": "MIT",
  "isBoard": false,
  "id": "led",
  "platform": ["win","mac","web"],
  "version": "0.0.1",
  "asset": {
    "arduinoC": {
      "dir": "arduinoC/",
      "version": "0.0.1",
      "board": [
        "microbit",
        "esp32",
        "arduino"
      ],
      "main": "main.ts"
    }
  }
}

3、资源文件

_images:

  • 删除_images中的所有文件
  • 将一张600x372像素的照片放到文件夹中,命名为featured.png
  • iconfont搜索led,找一个合适的图片,点击下载,颜色选择白色,点击SVG下载,保存到文件夹中,命名为icon.svg

完成后如下:

libraries

  • 本样例库不需要库文件,因此此文件夹内容删除清空。
  • 如果有arduino库,即包含.h和.cpp文件时,需要放到此文件夹中。

_locales

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

_menus

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

4、效果预览

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

5、编写main.ts

打草稿:

首先我们设计一下积木块,控制LED灯需要一个执行模块,需要设置引脚开关状态以及亮度,据此列出需要的积木块和对应代码如下:

实现:

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

enum KAIGUAN {
    //% block="开"
    HIGH,
    //% block="关"
    LOW
}

//% color="#AA278D" iconWidth=50 iconHeight=40
namespace led {
    //% block="控制[YINJIAO]引脚的LED灯[KAIGUAN]" blockType="command"
    //% YINJIAO.shadow="dropdown" YINJIAO.options="PIN_DigitalWrite" 
    //% KAIGUAN.shadow="dropdown" KAIGUAN.options="KAIGUAN" KAIGUAN.defl="HIGH"
    export function kaiguan(parameter: any, block: any) {
        let YINJIAO = parameter.YINJIAO.code;
        let KAIGUAN = parameter.KAIGUAN.code;
        Generator.addCode(`digitalWrite(${YINJIAO},${KAIGUAN});`);
    }
    
    //% block="控制[YINJIAO]引脚的LED灯亮度为[LIANGDU]" blockType="command"
    //% YINJIAO.shadow="dropdown" YINJIAO.options="PIN_AnalogWrite" 
    //% LIANGDU.shadow="range"   LIANGDU.params.min=0    LIANGDU.params.max=255    LIANGDU.defl=255
    export function liangdu(parameter: any, block: any) {
        let YINJIAO = parameter.YINJIAO.code;
        let LIANGDU = parameter.LIANGDU.code;
        
        Generator.addCode(`analogWrite(${YINJIAO},${LIANGDU});`);
    }

}


加载测试,编程及上传,测试硬件功能

  • 点击刷新按钮,积木出现
  • 拖动积木编写程序,查看生成代码正确
  • 连接硬件主控板上传测试

6、导出分享

  • 测试完成之后,在扩展库上右键选择导出,稍等即可导出完成。
  • 此时查看库文件目录下有一个**.mpext**文件,此文件直接加载即可,此时没有调试模式的标志。

  • 如果需要通过网络加载,可以修改readme文件,然后通过git上传gitee或github,或在论坛发帖点击加入官方库。