doublelook 发表于 2013-8-8 11:16:00

arduino+DHT11+Yeelink 程序没见错误,但提交到Yeelink时没任何显示

完整的程序代码如下:
#include <Ethernet.h>
#include <WiFi.h>
#include <SPI.h>
#include <http_client.h>
#include <yl_data_point.h>
#include <yl_device.h>
#include <yl_w5100_client.h>
#include <yl_wifi_client.h>
#include <yl_messenger.h>
#include <yl_sensor.h>
#include <yl_value_data_point.h>
#include <yl_sensor.h>
#include <idDHT11.h>

int idDHT11pin = 2; //Digital pin for comunications
int idDHT11intNumber = 0; //interrupt number (must be the one that use the previus defined pin (see table above)
//declaration
void dht11_wrapper(); // must be declared before the lib initialization
// Lib instantiate
idDHT11 DHT11(idDHT11pin,idDHT11intNumber,dht11_wrapper);
// 配置你的yeelink api
#define APIKEY "e42010328eb6accf419129805d1e53b9"// 输入你的 yeelink api key
#define DEVICEID 4212// 输入你的设备ID
#define TEMPERATURE_SENSORID 6111// 输入你的温度传感器ID
#define HUMIDITY_SENSORID 6186// 输入你的湿度传感器ID
yl_device mydev(DEVICEID);
yl_sensor hum(HUMIDITY_SENSORID, &mydev);

yl_w5100_client client;
yl_messenger messenger(&client, APIKEY, "api.yeelink.net");
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };// 为Ethernet分配MAC地址
byte ip[] ={ 192, 168, 0, 144 };
void setup()
{
   Serial.begin(9600);//开启串口
// 开启Ethernet的连接
Ethernet.begin(mac, ip);
   
   // 打印DHT11的库文件版本
Serial.print("LIBRARY VERSION: ");
   Serial.println(IDDHT11LIB_VERSION);
   Serial.println("---------------");
}
// This wrapper is in charge of calling
// mus be defined like this for the lib work
void dht11_wrapper() {
   DHT11.isrCallback();
}
void loop()
{
   // 分别发送温度、湿度数值
    sendData(readSensor(0),HUMIDITY_SENSORID);
}

// 定义接受数据函数
int readSensor(int sensor_id)
{
   Serial.println("\n");
   // 判断传感器是否正常
Serial.print("Read sensor: ");
   int result = DHT11.acquireAndWait();
   switch (result)
   {
   case IDDHTLIB_OK:
   Serial.println("OK");
   break;
   case IDDHTLIB_ERROR_CHECKSUM:
   Serial.println("Error\n\r\tChecksum error");
   break;
   case IDDHTLIB_ERROR_TIMEOUT:
   Serial.println("Error\n\r\tTime out error");
   break;
   case IDDHTLIB_ERROR_ACQUIRING:
   Serial.println("Error\n\r\tAcquiring");
   break;
   case IDDHTLIB_ERROR_DELTA:
   Serial.println("Error\n\r\tDelta time to small");
   break;
   case IDDHTLIB_ERROR_NOTSTARTED:
   Serial.println("Error\n\r\tNot started");
   break;
   default:
   Serial.println("Unknown error");
   break;
   }
   // 打印温度、湿度
if(sensor_id == 0)
   {
   Serial.print("Humidity (%): ");
   Serial.println(DHT11.getHumidity(), 2);
   return DHT11.getHumidity();
   }
   else
   {
   Serial.print("Temperature (oC): ");
   Serial.println(DHT11.getCelsius(), 2);
   return DHT11.getCelsius();
   }
}

// 定义发送数据函数
void sendData(int thisData, int SENSORID)
{
   Serial.print("thisData is: ");
   Serial.println(thisData);
   Serial.print("SENSORID is: ");
   Serial.println(SENSORID);
   yl_value_data_point dp(thisData);
   hum.single_post(messenger, dp);
   delay(1000 * 30);
}

----------------------------------------------------------------------------------------------
在com窗口里输出的信息如下:

LIBRARY VERSION: 0.1
---------------

Read sensor: OK
Humidity (%): 36.00
thisData is: 36
SENSORID is: 6186

Read sensor: OK
Humidity (%): 36.00
thisData is: 36
SENSORID is: 6186
----------------------------------------------------------------------------------------
大家帮忙看看是什么原因

林定祥 发表于 2013-8-8 11:26:50

网络联上了吗?联上了应该有回应.

doublelook 发表于 2013-8-8 13:35:33

网络是连上了的

a6641 发表于 2016-2-19 19:57:17

那这是怎么回事
Arduino:1.6.7 (Windows 10), 开发板:"Arduino/Genuino Uno"

C:\Users\XPHOME~1\AppData\Local\Temp\arduino_b522fcdc292ee9c99cc0a4bd5230aa6a\sketch_feb19c.ino: In function 'void loop()':

sketch_feb19c:48: error: 'sendData' was not declared in this scope

      sendData(readSensor(0),HUMIDITY_SENSORID);

                                              ^

exit status 1
'sendData' was not declared in this scope

报告将会包含更多的信息
"在编译时,输出详细信息"
在 文件>首选项 中启用
页: [1]
查看完整版本: arduino+DHT11+Yeelink 程序没见错误,但提交到Yeelink时没任何显示