应用实例

以下实例有助于您快速熟悉 Atom。

案例一 LED闪烁

Atom 在D7引脚上连接了一个LED灯,可以方便调试程序。

打开首页登录您的账户,在设备展示中会看您绑定的设备。

第1步:点击在线编程 -> 创建新工程,输入您的工程信息,有关在线编程的详细信息请参考这里

第2步:编写程序

// -----------------------------------
//  LED 闪烁
// -----------------------------------

// 引脚定义
#define  LED_PIN  D7

void setup()
{
    //put your setup code here, to run once.
    pinMode(LED_PIN,OUTPUT);
}

void loop()
{
    // put your main code here, to run repeatedly.
    digitalWrite(D6,HIGH); //打开LED
    delay(500);            //延时500ms
    digitalWrite(D6,LOW);  //关闭LED
    delay(500);            //延时500ms
}

第3步:编译、烧录。程序下载完成后会看到 Atom 板上的用户灯呈闪烁状态。

案例二 应用控制LED

这个案例中我们将通过APP来控制用户灯亮灭。

点击设备后在右上角的“应用配置”处选中编辑“应用”,里面有大量“应用”可供使用,“应用”可以显示传感器上传的数据或者推送信息到 Atom。 每一个“应用”都有对应的 topic,在设备底下选中“智能灯应用”之后,点击其右上角的“应用接口”会弹出此“应用”的所有信息,其中功能 topic 就是我们所需要的。 详情请见 WEB功能 的应用接口

调用 IntoRobot.publish()IntoRobot.subscribe() 实现设备与平台的信息交换,详情请见函数接口

第1步:每个设备底下已经存在一个默认的“智能灯应用”

第2步:在线编程编写程序

  • 定义智能灯应用topic值
  • 灯开关回调函数,上送灯的开关状态到云平台
  • 订阅接收灯开关命令
// -----------------------------------
// 应用控制 LED
// -----------------------------------

//智能灯应用topic定义
#define SMARTLIGHT_CMD_SWITCH   "channel/smartLight_0/cmd/switch" //开关命令
#define SMARTLIGHT_DATA_STATUS  "channel/smartLight_0/data/status" //开关状态

const uint16_t led = D7;

void LightSwitchCb(uint8_t * payload, uint32_t len)
{
  SerialUSB.println("LightSwitchCb");
  if(!memcmp(payload,"1",1))
  {
     digitalWrite(led, HIGH);//打开 LED  
     IntoRobot.publish(SMARTLIGHT_DATA_STATUS, "1");
  }
  else if(!memcmp(payload,"0",1))
  {
     digitalWrite(led, LOW);//关闭 LED 
     IntoRobot.publish(SMARTLIGHT_DATA_STATUS, "0");
  }
}


void setup() 
{
    // 初始化 D7 端口为输出
    pinMode(led, OUTPUT);
    //接收灯开关命令
    IntoRobot.subscribe(SMARTLIGHT_CMD_SWITCH, NULL, LightSwitchCb);
}

//  loop 将永远循环执行
void loop() 
{

}

第3步:编译、烧录成功后,通过APP或Web端在您的设备下点击“智能灯应用”即可以控制LED灯亮灭。

第4步:使用关联控制功能,当灯打开时云平台发送系统消息到我们平台账户底下。

1.选择关联控制后点击“创建联控”会出现关联控制的界面,里面包含设备列表以及设备对应底下的应用信息,有关关联控制信息请看这里
2.选中我们的智能灯设备,然后在右边设置触发事件,我们选中灯的状态为开。
3.点击确认后出现响应事件的列表,在右边我们填写系统消息发送的内容。
4.点击确认后一个完整的关联控制就设置完成了,点击保存。
5.点击ON/OFF可以打开和关闭该关联控制。

案例三 温湿度监测

我们已经了解了在线编程以及如何使用“应用”,在此例程中我们会将温湿度数据上送到云平台。

所需器件:

  • DHT11温湿度传感器

传感器模块可以用Atom上面的3.3V接口进行供电。Atom将会把温湿度值上送至云平台,温湿度应用将会显示当前环境的温度与湿度值。

第1步:在线编程编写程序

  • 添加公共库,在工程的左侧有个公有库,这是一个包含了很多传感器模块驱动的函数库,可直接点击载入使用。详情请见这里
  • 温湿度监控应用topic定义
  • 获取温湿度值,上送到云平台
// -----------------
// 温湿度检测
// -----------------
//调用公有库
#include <DHT11/dht11.h>

DHT11 dht11 = DHT11(D15);

char     airTemperature;  //温度值
u8       airHumidity;     //湿度值
char     tmp[128];

//温湿度监控应用topic定义
#define HUMITURE_DATA_TEMPERATURE  "channel/humiture_0/data/temperature" //温度
#define HUMITURE_DATA_HUMIDITY   "channel/humiture_0/data/humidity"//湿度

void setup() 
{
    //初始化
    dht11.begin();
}

void loop() 
{
    airTemperature = dht11.ReadTemperature(0);
    IntoRobot.publish(HUMITURE_DATA_TEMPERATURE, airTemperature);

    airHumidity = dht11.ReadHumidity();
    IntoRobot.publish(HUMITURE_DATA_HUMIDITY, airHumidity);

    delay(3000);
}

第2步:编译、烧录。

第3步:在设备底下添加“温湿度监控应用”,可以看到当前环境的温湿度数据了。

更多应用实例请点击IntoRobot创客论坛