示例-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,或在论坛发帖点击加入官方库。