以下是一个示例代码,使用 DHT11 传感器读取湿度和温度值,将数据上传到 OneNet 平台,并接收并执行来自 OneNet 平台的命令,控制舵机的转动角度。

注意:此代码仅供参考,需要根据具体硬件和 OneNet 平台的配置进行修改。

#include <SoftwareSerial.h>
#include <OneNet.h>
#include <dht.h>
#include <Servo.h>

#define ONENET_DEVICE_ID 'your_device_id'  // OneNet 平台的设备 ID
#define ONENET_API_KEY 'your_api_key'  // OneNet 平台的 API Key

#define DHT11_PIN 2  // DHT11 传感器的數據引脚
#define SERVO_PIN 9  // 舵机的信号引脚

dht DHT;
Servo servo;

SoftwareSerial serial(10, 11);  // 用于与 OneNet 平台通信的串口

void setup() {
  Serial.begin(9600);
  serial.begin(9600);  // 初始化 OneNet 通信串口
  OneNet.begin(serial, ONENET_DEVICE_ID, ONENET_API_KEY);  // 初始化 OneNet 库

  servo.attach(SERVO_PIN);  // 初始化舵机
}

void loop() {
  // 读取湿度和温度值
  int chk = DHT.read11(DHT11_PIN);
  float humidity = DHT.humidity;
  float temperature = DHT.temperature;
  
  // 将湿度和温度值上传到 OneNet 平台
  char data[50];
  sprintf(data, '{\'temperature\':%.2f,\'humidity\':%.2f}', temperature, humidity);
  OneNet.sendData(data);
  
  // 接收来自 OneNet 平台的命令,并控制舵机的转动角度
  OneNetCommand cmd = OneNet.receiveCommand();
  if (cmd.isValid()) {
    if (cmd.getName() == 'angle') {
      int angle = cmd.getValue().toInt();
      if (angle >= 0 && angle <= 180) {
        servo.write(angle);
      }
    }
  }
  
delay(1000);
}

原文地址: https://www.cveoy.top/t/topic/oKI9 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录