在这里向大家介绍下如何在Mixly 上制作第三方用户库,就拿OLED 这个为例子。
硬件准备:
Arduino 开发板 x1
OLED 显示屏 x1
软件平台
Mixly

实现步骤:

  1. 新建文件夹 里面包含以下三个文件夹(block、 generator 、language 和 xxx.xml 这里的xxx是你们自己定义的名字)
    block/xxx.js文件定义了你定制的模块的样子。

generator/xxx.js文件定义了每一个图形化模块对应的 Arduino C语言代码。

block和generator 文件夹下各有一个与项目同名但内容不同的xxx.js文件,一个控制“外观”,另一个控制内容。

在OLED文件夹中放入u8g2库文件

2.编写代码
首先来编写blocks 文件夹下的 OLED.js

//下列三行代码,为刚需,此提供了下列所有代码的入口
'use strict';goog.provide('Blockly.Blocks.OLED');//注意脚本类别及路径名称goog.require('Blockly.Blocks');// ---OLED模块图形配置---//include模块
Blockly.Blocks.U8g2lib_include = {init: function() {this.setColour(120);//模块图形颜色this.appendDummyInput("")//此行代码刚需,为模块创建提供入口.appendField("#include <") //代码块上的文字内容.appendField(new Blockly.FieldTextInput('U8g2lib'), 'INCLUDE')//创建文本输入对象.appendField(".h>");this.setPreviousStatement(true);//是否可以与上一模块连接this.setNextStatement(true);//是否可以与下一模块连接}
};//配置构造函数模块
Blockly.Blocks.config = {init: function() {this.setColour(120);this.appendDummyInput("").appendField("配置构造函数").appendField("U8g2 SSD1306 128X64")this.setPreviousStatement(true, null);this.setNextStatement(true, null);this.setInputsInline(false);//是否开启模块单行显示(true为单行,false为多行)}
};//开启 U8g2驱动模块
Blockly.Blocks.initOled = {init: function() {this.setColour(120);this.appendDummyInput("").appendField("开启U8g2驱动程序")this.setPreviousStatement(true, null);this.setNextStatement(true, null);}
};//中文输入模块
Blockly.Blocks.displayCN = {init: function() {this.setColour(50);this.appendDummyInput("").appendField("输入字符串...")this.appendValueInput("VALUE", String).setCheck([String,Number]).setAlign(Blockly.ALIGN_RIGHT);//开启模块右侧可连接this.setPreviousStatement(true, null);this.setNextStatement(false, null);}
};

然后再打开 OLED.xml

<!--该注释为!!!路径!!!,此为刚需!type="company" block="block/OLED.js" generator="generator/OLED.js"
-->
<script type="text/javascript" src="../../blocks/company/OLED.js"></script>
<script type="text/javascript" src="../../generators/arduino/company/OLED.js"></script><!--根路径&外观配置&所有模块的内容物-->
<category id="kivin OLED demo" name="OLED中文显示" colour= 20><!-- OLED模块 --><!--include模块--><block type="U8g2lib_include"><value name="String"><shadow type="text">  <!--可编辑文本--><field name="_text">U8g2lib.h</field></shadow></value></block><!--配置构造函数模块--><block type="config" name="U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2"></block><!--开启 U8g2驱动模块--><block type="initOled"></block><!--中文输入模块--><block type="displayCN"><value name="disCN"><shadow type="text"><field name="_text">textOled</field></shadow></value></block>
</category>

最后,打开 generator 文件夹中 OLED.js 脚本

//下列三行代码,为刚需,此提供了下列所有代码的入口
'use strict';goog.provide('Blockly.Arduino.OLED');//注意脚本类别及路径名称goog.require('Blockly.Arduino');// ---OLED模块图形转代码---//include模块Blockly.Arduino.U8g2lib_include = function() {var INCLUDE = this.getFieldValue('INCLUDE');//使用INCLUDE 变量来存储,block文件夹中的OLED.js脚本,文本输入对象的值Blockly.Arduino.definitions_['define_'+INCLUDE] = '#include <'+INCLUDE+'.h>';//严格函数,固定写法(转include调用内容)return '';
};//配置构造函数模块Blockly.Arduino.config = function() {Blockly.Arduino.definitions_['define_'] = 'U8G2_SSD1306_128X64_NONAME_F_SW_I2C u8g2(U8G2_R0,SCL,SDA);\n';return '';
};//开启 U8g2驱动模块Blockly.Arduino.initOled = function() {Blockly.Arduino.setups_['setup_intOled'] = 'u8g2.begin();\n';//严格函数固定写法(转setup函数中代码)return '';
};//中文输入模块Blockly.Arduino.displayCN=function(){var value = Blockly.Arduino.valueToCode(this, 'VALUE', Blockly.Arduino.ORDER_ATOMIC) || '\"\"';return 'u8g2.firstPage();' + '\n'  +  'do {'  + '\n' +    'u8g2.setFont(u8g2_font_unifont_t_chinese1);' + '\n'  +    'u8g2.drawUTF8(0,15,'   +value+  ');' + '\n' +  '} while ( u8g2.nextPage() );' + '\n' +  'delay(1000);';};

效果:

希望以上可以给大家带来帮助。

Mixly 自定有OLED相关推荐

  1. Mixly第三方库开发——OLED库

    前言 Mixly自从2015年问世以来,就深受国内创客.中小学教师喜爱,如今已经成为国内最好用的Arduino图形化软件之一.Mixly最大的优点就是其开放性,Mixly建立了一个生态圈,这个生态圈欢 ...

  2. 用mixly软件解决esp8366,OLED液晶屏显示网络时钟的只显示个位数的问题

    有些朋友在编程的时候在用液晶屏显示网络时钟的时候可能会遇到一个小问题,就是时钟在个位数的时候,屏幕也只显示个位,这样屏幕上就会出现有个位数和双位数同时出现的情况,这样整个界面就不太美观,用mixly可 ...

  3. automl_automl简介

    automl During my summer vacation, I ran across a CBInsights report called "AI trends to watch i ...

  4. RuilongMaker ESP8266物联网开发板 串口WIFI模块无线收发 Mini版

    ESP8266 IOT MiniBoard 物联网迷你开发板,是一款以ESP8266-12F为核心的物联网开发板,采用ESP8266-12F为主控,使用稳定性较高的CH340USB串口转换芯片,板载3 ...

  5. esp8266 mixly blynk远程控制 + NTP+天气预报及一体 智能钟

    本人开发环境:图形mixly,省事方便只需点几下鼠标就搞定了这些esp8266 blynk远程控制 + NTP+天气预报及一体 智能钟的功能,而且很简单,本人电子业余爱好者非专业程序猿.逻辑性不太好, ...

  6. Arduino Mixly智能家居

    产品介绍: 智能家居是未来的发展趋势.通过远程智能化技术来控制设备的方式已越来越贴近于人们的生活.智能家居也越来越受大家的喜爱和重视,而智能家居系统就是以提高家庭居住环境为目的的,它融合了计算机,网络 ...

  7. 弧形玻璃清洁机器人_宅家大扫除清洁装备+清洁好物+全屋家电维护一文搞定

    前言: 经过长时间的宅家,相信大家现在都比较重视家里的清洁卫生,个人认为居家大扫除中的重点可以分为四个部分,厨房.卫生间.地面和墙面. 所以今天我就来和聊聊我的宅家大扫除中,如何解决这四个部分的清理, ...

  8. cebemax hal库 stm32 OLED移植 解析

    cebemax hal库 stm32 OLED移植 序言: 这是一篇对于作者对于将OLED的驱动代码移植成hal库的文章,会有完整的过程,后面自然也会有完整的代码,希望能够帮到大家,同时也是做一个记录 ...

  9. Mixly系列 | 关于Blynk,你或许不知道的几个小技巧

    随着 Mixly 软件的不断更新和完善,功能也越来越强大,除了新增很多编程模块以外,还新增了很多硬件支持,比如 Blynk 物联网模块.ESP32 和掌控板等.但是,虽然功能和模块增多了,但是很多老师 ...

最新文章

  1. 正则表达式中?=和?:和?!的理解
  2. echarts画布_vue中动态设置echarts画布大小
  3. redis的常用命令及实例讲解
  4. 了解HTML CSS格式化排版 文字排版
  5. 孙鑫-MFC笔记四--文本编程
  6. 同步,异步,阻塞,非阻塞?
  7. java 加载java文件_如何用JAVA实现加载一个文件?
  8. paip.IIS 7.5 应用程序池,应用程序以及虚拟目录的存储位置
  9. 绝缘检测是什么? 绝缘检测原理 绝缘检测检测的是什么?那个量?电压?电流?电阻?
  10. php 语言开发,PHP语言开发常用工具
  11. vmware虚拟机使用多显示器
  12. Android开发笔记01-TextView01
  13. cv2.error: OpenCV(4.5.1) C:\Users\appveyor\AppData\Local\Temp\1\pip-req-buil
  14. DELL(i7版本)麦克风杂音问题解决方案
  15. iOS开发除了XCode还需要掌握的8个重要工具,让您开发更容易
  16. 移动机器人差速轮运动学模型--(左右轮速度和线速度角速度的相互转换)
  17. js逆向JSVMP篇新版某乎_x-zes-96算法还原
  18. 05-什么是作用域链
  19. 【golang】golang初始化项目(iris下载与使用)
  20. 颠覆传统下载体验 QNAP迅雷系列NAS重磅登场

热门文章

  1. 【项目开发实战】第二章——在线商城系统
  2. OpenFOAM:并行区域划分理解(Domain Decomposition)
  3. C# HTML网页转换为PDF
  4. PC端抖音HTML布局,抖音有PC端了,终于可以发布无损视频了,支持15min内的作品...
  5. 安装正版 Windows
  6. 网络常用命令----抓包,路由
  7. 从零点一开始机器学习之Win10 64位下安装Cuda+Cudnn
  8. PHP得到汉字的拼音字母
  9. 学习单片机对社会的帮助是很大的
  10. FTP服务器的搭建与使用FTP软件进行文件上传