[ Ruff 开发套件 ] Lesson 1 - SOS 求救灯

前言Ruff 是一个支持 JavaScript 开发应用的物联网操作系统,让物联网应用开发更简单高效。Ruff 开发套件 是一个旨在帮助开发者快速学习使用 Ruff 的工具,并且通过 Ruff 开发套件可以快速建立产品原型。本教程是针对 Ruff 开发套件 的使用教程,从10个外设配件起的应用开发再到驱动开发以及板卡开发,我们将从头开始一步步教大家如何使用 Ruff

前言

Ruff 是一个支持 JavaScript 开发应用的物联网操作系统,让物联网应用开发更简单高效。

Ruff 开发套件 是一个旨在帮助开发者快速学习使用 Ruff 的工具,并且通过 Ruff 开发套件可以快速建立产品原型。

本教程是针对 Ruff 开发套件 的使用教程,从10个外设配件起的应用开发再到驱动开发以及板卡开发,我们将从头开始一步步教大家如何使用 Ruff 开发套件

现在就拿起手边的 Ruff 开发套件 开始学习如何开发物联网应用吧!

Ruff 开发准备

在学习之前,你需要:

  1. 完成 Ruff 开发板的网络设置、硬件连线,可以在起步走了解。

  2. Ruff 应用开发步骤和模型,可以到这里。

Tips: 我们会对产品的硬件和软件做些改动和升级,这样可能会产生软硬件使用和本教程在某些细节上不符,请以最新软件和您购买的开发套件实际配置为准。

第一课 SOS 求救灯

我们的 Ruff 之旅从这节课正式开启!

  1. 谁将登场:

板载 LED 灯

  1. 大按键模块

  2. 你将学会:

按键输入控制 Ruff 的输出

  1. Ruff 中的延时函数

  2. 板载 LED 灯的使用

介绍

SOS 求救灯应用中:

  1. 按下按钮

  2. 板载 LED 灯发出 三短光三长光三短光 的 SOS 摩斯电码求救信号。

想了解摩斯电码,可以到这里。

元件

  1. Ruff 开发板 ×1

  2. 大按键模块 ×1

外设添加

  1. 向项目中添加名为“button”的大按键模块,model 选择 CK002,驱动版本选择最新版。

代码

  1. 在编写代码之前需要完成 Ruff 开发板的设置连接、硬件连线。如果有疑问大家可以在这里了解。

  2. 想了解 Ruff 应用开发步骤和模型,可以到这里。

闪烁

首先我们解决:如何使板载 LED 灯闪烁。

  1. 检测板载 LED 灯当前是否点亮,

如果点亮,关闭 LED 灯;

  1. 如果关闭,点亮 LED 灯;

可以在这里进一步学习板载 LED 知识。

具体的闪烁实例代码如下:

//Led灯闪烁函数
function Blink() {
if (!$('# led-r').isOn()) {
$('# led-r').turnOn();
}
else {
$('# led-r').turnOff();
}
}

延时函数

在 LED 能够闪烁之后,我们再来尝试控制 LED 灯长短闪烁。

  1. 长短闪烁的区别在于,每次由亮变暗和由暗变亮的延时时间长度,即调用 Blink 函数的延时时间长度。

这里我们使用 setTimeout 函数实现延时,setTimeout 函数语法如下:

setTimeout (回调函数, 延时时间)

  1. setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式,setTimeout() 只执行表达式一次;

想了解更多有关 setTimeout 函数的内容,可以到这里

发出摩斯电码

再来,我们解决如何发出摩斯电码 “S” 和 “O” 信号。

  1. 在摩斯电码表中,每一个英文字母由点和线的不同组合表示,我们可以通过 LED 的闪烁“拼写”出每个字母,通短闪烁和长闪烁表示点和线,比如:

字母 “S” 在摩斯码中用三个点表示,这里我们用三次短闪烁代替;

  1. 字母 “O” 在摩斯码中用三条线表示,这里我们用三次长闪烁代替;

  2. LED 灯的闪烁通过控制灯交替亮灭实现。

  3. 长短闪烁表示 “S” 和 “O” 字母实例代码如下:

//三个快闪烁来表示字母“S”
function performS() {
$('# led-r').turnOn();//设置led模块亮
setTimeout(Blink, 1000);//1000ms后led灭
setTimeout(Blink, 2000);//2000ms后led亮
setTimeout(Blink, 3000);//3000ms后led灭
setTimeout(Blink, 4000);//4000ms后led亮
}
//三个慢闪烁来表示字母“O”
function performO() {
$('# led-r').turnOn();
setTimeout(Blink, 2000);
setTimeout(Blink, 4000);
setTimeout(Blink, 6000);
setTimeout(Blink, 8000);
}

按键检测

有了发出摩斯电码的函数,接下来,我们可以使用 大按键 作为“开关”,控制 Ruff 发出摩斯电码。

  1. 大按键模块有两种事件,分别是 push 按下事件和 release 放开事件。

  2. Ruff一直检测按键模块的 push 和 release 事件,一旦检测到信号,执行相对应的“行为”函数。

在这个应用中,需要向 push 行为函数中添加发出摩斯电码“S”和“O”的函数,并设置正确长度的延时函数:

0s时,先执行发摩斯电码 ”S“ 函数;

  1. 5s时,灭灯;

  2. 6s时,执行发摩斯电码 ”O“ 函数;

  3. 16s时,灭灯;

  4. 17s时,执行送摩斯电码 ”S“ 函数;

  5. 22s时,灭灯;

前往Ruff-大按键模块,可以进一步学习大按键模块的知识。

利用大按键控制发出 S.O.S 信号的具体实现如下:

//在‘button’按下时运行函数
$('# button').on('push', function () {
performS();
setTimeout(function () { $('# led-r').turnOff(); }, 5000);
setTimeout(performO, 6000);
setTimeout(function () { $('# led-r').turnOff(); }, 16000);
setTimeout(performS, 17000);
setTimeout(function () { $('# led-r').turnOff(); }, 22000);
});
最后,

  1. 将大按键控制函数放到 $.ready 事件下;

  2. 摩斯电码发出函数和闪烁函数放在后面。

大功告成!

快去自己动手实现吧!

完整代码

'use strict';

//Led灯闪烁函数
function Blink() {
if (!$('# led-r').isOn()) {
$('# led-r').turnOn();
}
else {
$('# led-r').turnOff();
}
}

//三个快闪烁来表示字母“S”
function performS() {
$('# led-r').turnOn();//设置led模块亮
setTimeout(Blink, 1000);//1000ms后led灭
setTimeout(Blink, 2000);//2000ms后led亮
setTimeout(Blink, 3000);//3000ms后led灭
setTimeout(Blink, 4000);//4000ms后led亮
}

//三个快闪烁来表示字母“O”
function performO() {
$('# led-r').turnOn();//设置led模块亮
setTimeout(Blink, 2000);
setTimeout(Blink, 4000);
setTimeout(Blink, 6000);
setTimeout(Blink, 8000);
}

$.ready(function (error) {
if (error) {
console.log(error);
return;
}

//在‘button’按下时运行函数$('# button').on('push', function () {    performS();    setTimeout(function(){$('# led-r').turnOff();}, 5000);    setTimeout(performO, 6000);    setTimeout(function(){$('# led-r').turnOff();}, 16000);    setTimeout(performS, 17000);    setTimeout(function(){$('# led-r').turnOff();}, 22000);});

});

课后练习

按键抢答器

使用三个按键模块和两个板载LED灯。

  1. 如果按键 A 按下,板载蓝灯(led-b)亮;

  2. 按键 B 按下,板载红灯(led-r)亮;

  3. 按键 C 用于重置抢答器,C 键按下,两灯都灭;

  4. 按键 A 或 B 按下后,直到按下按键 C 重置抢答器,即使另一按键按下,两LED 灯也不会有变化。

Let's Ruff On !

关键字:JavaScript, ruff, blink, 函数