脚本解释器 在Arduino上运行 “脚本语言解释器” 的几种方案
很早以前,我就想在Arduino上运行脚本解释器了,通过长时间的摸索也找到了几个将脚本解释器放在Arduino上的运行的方案,下面我会逐一列出 一、“脚本解释器”的通俗解释
在平时编写arduino程序时,我们都是编写的C/C++语言程序。可是Arduino开发板认识这些C/C++程序吗?很显然是不认识的,所以才需要Arduino软件来将这些源代码“翻译”成Arduino认识的二进制指令才能上传到Arduino执行。这个过程叫做编译,在你点击“上传”按钮的时候就会自动完成。
我们要做的脚本解释器实现的就是一个翻译功能,它能将我们编写的高级语言程序翻译Arduino认识的指令进而直接执行,这样我们就不需要Arduino软件了,只需要通过串口不断的向Arduino发送代码,Arduino里面的脚本解释器就能不断的读取代码并自动翻译执行了。你也可以将代码存储到sd卡里面,Arduino直接读取sd卡里面的代码就可以执行。
PS:其实我们平时用的python就是一种脚本解释器,它能将python代码不断翻译成CPU认识的指令并执行。(当然,我们在arduino上制作的脚本解释器肯定不会有python那么强大的,arduino那仅仅几十K的ROM也不允许我们做出很厉害的解释器)
如果您到此步你依然不知道什么是脚本解释器的话,建议您还是不继续阅读下去了,或者是先去搜索一波,网上的很多文章讲的都非常好。
二、Arduino上的“脚本解释器”是什么样的
首先我们来看arduino有多大的存储空间,就以arduino uno来看其Flash只有32KB,RAM也只有仅仅的2KB,所以为了能在这么小的空间里面容纳一个脚本解释器,此解释器必须要足够小。所以像python、javascript、lua解释器那种是不可能的了。(如果你想在MCU上运行python解释器,那么建议使用esp8266等开发板,我之前有一篇文章专门讲了这个)
三、几种方案(排名越靠前的代表越推荐) 1、Bitlash:(语法类似于C,帮助文档比较全)
Bitlash是一个专门针对于arduino的脚本解释器,帮助文档比较完善(相比于下面推荐的解释器)所以非常推荐。Bitlash可以从串口接收脚本命令并运行。
Bitlash的特性主要有:
arduino很多的库函数在bitlash里面都有对应的,例如引脚控制、PWM输出、millis函数、数学函数。函数定义、if、while、switch等语句支持C语言里面大多数的运算符支持后台运行自定义函数,并且能将自定义函数存储到EEPROM中提供用于扩展的API(个人觉得已经很完善了,几乎不用扩展了)
这里只是简单的列举了Bitlash的部分特性,其实Bitlash最主要的还是具有完善的帮助文档脚本解释器,这一点我觉得才是最重要的,同时Bitlash占用的ROM也很低,所以非常推荐。
如果想使用Bitlash的话可以去官网下载,同时官网有非常多的教程和文档,地址为:
http://bitlash.net/
2、elk:(可嵌入的javascript的脚本引擎,易于扩展)
elk是一个微小的可嵌入的javascript的脚本引擎,它并不是完成的javascript(就arduino那点存储空间来看,表示很理解) elk仅仅实现了while,if等控制语句,同时支持函数定义和对象,不支持数组。elk的api比较简单易懂,可以使用api导入自定义的函数来实现对arduino的底层控制
如果想使用elk的话可以去github上下载,地址为: