实战操作

blink功能实现LED灯闪烁

  1. 修改项目中index.js文件内容,使用JavaScript基于TinyEngine代码如下(编辑完成ctrl + s保存):

实现一个LED Blink闪烁功能 - 图1

  1. var ledHandle1 = GPIO.open("led1");
  2. var initStatus = 1;
  3. setInterval(function() {
  4. GPIO.write(ledHandle1,initStatus);
  5. initStatus = 1 - initStatus;
  6. }, 1000);
  1. 修改board.json文件内容,添加以下内容(ctrl + s保存):

实现一个LED Blink闪烁功能 - 图2

  1. "led1":{
  2. "type":"GPIO",
  3. "port":22,
  4. "dir":0,
  5. "pull":1
  6. },
  7. "led2": {
  8. "type": "GPIO",
  9. "port": 67,
  10. "dir": 0,
  11. "pull": 1
  12. },
  13. "led3": {
  14. "type": "GPIO",
  15. "port": 63,
  16. "dir": 0,
  17. "pull": 1
  18. },
  1. 点击IDE上方的“运行”,将代码下载到Developer Kit开发板,程序即被DeviceAgent下载到TinyEngine,稍等片刻即开始执行,Developer Kit开发板上的一盏LED开始闪烁。

从程序内容窥探JS工作台和TinyEngine的开发模式

  1. var ledHandle1 = GPIO.open("led1");

我们使用JavaScript变量var新建ledHandle1这个变量,GPIO是个啥?led1又是个啥?

  1. GPIO是TinyEngine的扩展对象(可以理解成是系统预先定义好的全局对象),GPIO对象实现了使用JavaScript语言操作硬件设备真实GPIO口的能力,API如下所示:
API 说明
GPIO.open(id) 功能:打开GPIO 参数:
id:和板级配置文件中的 id 保持一致 返回值:返回资源 handle
GPIO.close(handle) 功能:关闭 GPIO 参数:
handle:资源 handle,为 GPIO.open 的返回值; 返回值:0=ok other=fail
GPIO.write(handle,level) 功能:设置 GPIO 输出电压 参数:
handle:资源 handle,为 GPIO.open 的返回值; level:电平值,0或1
返回值:0=ok other=fail
GPIO.read(handle) 功能:获取 GPIO 输入电压 参数:
handle:资源 handle,为GPIO.open的返回值; 返回值:引脚电平值
GPIO.on(handle,edge,cb) 功能:GPIO 中断监听 参数: handle:资源 handle,为 GPIO.open 的返回值; edge:中断触发类型,”rising”上升沿触发,”falling”下降沿触发,”both”双边沿触发; cb:服务function; 返回值:0=ok other=fail
  1. 只理解GPIO这个对象是不够的,还需要知道led1是什么。在blink例程中,我们在board.json添加了led1到led3的JSON描述,JS工作台和TinyEngine使用board.json描述硬件的所有功能,包括GPIO、I2C、ADC、DAC等等,新增硬件外设,也需要在board.json中对外设进行配置,调用板载上的传感器等能力,也需要对board.json进行配置。关于board.json的描述,请参照:板级配置文件board.json使用说明.md