天天看點

【Mind+】APDS9960第三方使用者庫實作一、前言二、修改外觀資訊三、庫引入及修改編寫main.ts四、總結

文章目錄

  • 一、前言
  • 二、修改外觀資訊
    • 1、下載下傳樣例庫
      • 使用者庫檔案結構
    • 2、修改json資訊
      • json配置檔案
    • 3、修改外觀圖檔以及積木塊矢量圖
      • Mind+預覽效果
  • 三、庫引入及修改編寫main.ts
    • 1、引入庫檔案
    • 2、main.ts描述檔案總述
      • 檔案結構
      • 修改後的代碼
      • 最終效果
  • 四、總結

一、前言

Mind+内置支援上百種常見的傳感器庫,并從V1.6.2開始,開放使用者庫,任何使用者均可以制作和分享自己的使用者庫,并提供了本地及網絡加載方式,友善大家的使用。

使用者庫官方開發教程

二、修改外觀資訊

1、下載下傳樣例庫

樣例庫: https://gitee.com/dfrobot/ext-oled12864.git

【Mind+】APDS9960第三方使用者庫實作一、前言二、修改外觀資訊三、庫引入及修改編寫main.ts四、總結

使用者庫檔案結構

└─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.json

uno.json

nano.json

mega2560.json

microbit.json

mpython.json

2、修改json資訊

解壓後可以看到json檔案,我們需要修改裡面的一些配置資訊,讓庫檔案顯示出簡略的簡介資訊

【Mind+】APDS9960第三方使用者庫實作一、前言二、修改外觀資訊三、庫引入及修改編寫main.ts四、總結

json配置檔案

{

“name”: {

“zh-cn”: “APDS-9960手勢傳感器”,

“en”: “APDS-9960 Sensor”

},

“description”: {

“zh-cn”: “識别向上、向下、向左、向右、靠近、遠離六種手勢。”,

“en”: “This sensor offers ambient light and color measuring, proximity detection, and touchless gesture sensing.”

},

“author”: “silvery”,

“email”: “[email protected]”,

“license”: “MIT”,

“isBoard”: false,

“id”: “APDS_9960”,

“version”: “0.0.1”,

“platform”: [“win”, “mac”, “web”],

“asset”: {

“arduinoC”: {

“dir”: “arduinoC/”,

“version”: “0.1.0”,

“board”: [

“arduino”,

“arduinounor3”,

“arduinonano”,

“leonardo”,

“mega2560”,

“esp32”

],

“main”: “main.ts”

}

}

}

3、修改外觀圖檔以及積木塊矢量圖

_images:

删除_images中的所有檔案

将一張600x372像素的照片放到檔案夾中,命名為featured.png

在iconfont搜尋led,找一個合适的圖檔,點選下載下傳,顔色選擇白色,點選SVG下載下傳,儲存到檔案夾中,命名為icon.png

【Mind+】APDS9960第三方使用者庫實作一、前言二、修改外觀資訊三、庫引入及修改編寫main.ts四、總結
【Mind+】APDS9960第三方使用者庫實作一、前言二、修改外觀資訊三、庫引入及修改編寫main.ts四、總結

Mind+預覽效果

此時可以打開Mind+,切換到上傳模式,打開擴充,選擇Arduno uno,然後導入使用者庫檢視效果:

【Mind+】APDS9960第三方使用者庫實作一、前言二、修改外觀資訊三、庫引入及修改編寫main.ts四、總結

三、庫引入及修改編寫main.ts

1、引入庫檔案

打開libraries檔案夾,将庫檔案放入

【Mind+】APDS9960第三方使用者庫實作一、前言二、修改外觀資訊三、庫引入及修改編寫main.ts四、總結

2、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) {
       //生成的代碼位置及内容描述
    }

}
           

修改後的代碼

enum GESTURE {
  //% block="DIR_NONE"
  DIR_NONE,
  //% block="DIR_LEFT"
  DIR_LEFT,
  //% block="DIR_RIGHT"
  DIR_RIGHT,
  //% block="DIR_UP"
  DIR_UP,
  //% block="DIR_DOWN"
  DIR_DOWN,
  //% block="DIR_NEAR"
  DIR_NEAR,
  //% block="DIR_FAR"
  DIR_FAR
}

//% color="#AA278D" iconWidth=40 iconHeight=40
namespace apds9960 {
  //% block="gesture sensor initliallize SCL [SCL] SDA [SDA]" blockType="command"
  //% SDA.shadow="dropdown" SDA.options="SDA"
  //% SCL.shadow="dropdown" SCL.options="SCL"
  export function init(parameter: any, block: any) {
    // let intpin = parameter.INTPIN.code;
    let sda = parameter.SDA.code;
    let scl = parameter.SCL.code;
    Generator.addInclude("includeWire", "#include <Wire.h>");
    Generator.addInclude(
      "includeSparkFun_APDS9960",
      "#include <SparkFun_APDS9960.h>"
    );
    Generator.addObject(
      "apdsObject",
      "SparkFun_APDS9960",
      `apds = SparkFun_APDS9960();`
    );
    
    Generator.addSetup(`initSetup`, `apds.init();`);
    Generator.addSetup(
      `enableGestureSensorSetup`,
      `apds.enableGestureSensor(true);`
    );
  }

  //% block="gesture available?" blockType="boolean"
  export function isGestureAvailable(parameter: any, block: any) {
    Generator.addCode("apds.isGestureAvailable()");
  }

  //% block="read gesture" blockType="reporter"
  export function readGesture(parameter: any, block: any) {
    Generator.addCode(`apds.readGesture()`);
  }

  //% block="gesture type [GESTURE]" blockType="reporter"
  //% GESTURE.shadow="dropdown" GESTURE.options="GESTURE" GESTURE.defl="GESTURE.DIR_LEFT"
  export function gesture(parameter: any, block: any) {
    let gesture = parameter.GESTURE.code;
    Generator.addCode( `${gesture}`);
  }


}

           

最終效果

積木塊樣式:

【Mind+】APDS9960第三方使用者庫實作一、前言二、修改外觀資訊三、庫引入及修改編寫main.ts四、總結

程式拼接測試效果

【Mind+】APDS9960第三方使用者庫實作一、前言二、修改外觀資訊三、庫引入及修改編寫main.ts四、總結

四、總結

本次學習了如何使用Mind+自定義庫功能,從樣例庫檔案中學習了積木樣式以及程式的定義,參考着其他庫制作了這個庫,從中學習到了很多不一樣的知識,就目前來講,對于自定義庫編寫還非常的不熟悉,期待自己能完成一個完全屬于自己的庫,為mind+這個軟體添加自己的元素。

Ps:ADkeyboard使用庫制作中。。。

【Mind+】APDS9960第三方使用者庫實作一、前言二、修改外觀資訊三、庫引入及修改編寫main.ts四、總結

繼續閱讀