-1

我有以下错误:

在来自 C:\Users\Lenovo\OneDrive\Documents\Arduino\libraries\Blynk\src/Blynk/BlynkApi.h:37:0 的文件中,来自 C:\Users\Lenovo\OneDrive\Documents\Arduino\libraries\Blynk \src/BlynkApiArduino.h:14,来自 C:\Users\Lenovo\OneDrive\Documents\Arduino\libraries\Blynk\src/BlynkSimpleEsp8266.h:24,来自 C:\Users\Lenovo\OneDrive\Desktop\sketch_mar31a\sketch_mar31a .ino:36: C:\Users\Lenovo\OneDrive\Documents\Arduino\libraries\Blynk\src/Blynk/BlynkTimer.h:36:21: 错误:重新定义“BlynkTimer 类”#define SimpleTimer BlynkTimer ^ C:\ Users\Lenovo\OneDrive\Documents\Arduino\libraries\SimpleTimer-1.0.0/SimpleTimer.h:10:7: 注意:在宏 'SimpleTimer' 类 SimpleTimer { ^ C:\Users\Lenovo\OneDrive\Documents\ Arduino\libraries\Blynk\src/Blynk/BlynkTimer.h:36:21: 错误:'class BlynkTimer' 的先前定义#define SimpleTimer BlynkTimer ^ C:\Users\Lenovo\OneDrive\Documents\Arduino\libraries\Blynk\src/Blynk/BlynkTimer.h:41:7: 注意:在扩展宏“SimpleTimer”类 SimpleTimer { ^ 退出状态 1 Eroare de compilare pentru placa NodeMCU 1.0(ESP-12E 模块)。

当我使用此代码时:

#define BLYNK_PRINT Serial    // Comment this out to disable prints and save space
#include <SPI.h>
#include <ESP8266WiFi.h>
#include <BlynkSimpleEsp8266.h>
#include <SimpleTimer.h>
#include <DHT.h>


// You should get Auth Token in the Blynk App.
// Go to the Project Settings (nut icon).
char auth[] = "wwnCVJrGmlkVcYrYsCq-RjO2A0C5s16t"; //Enter the Auth code which was send by Blink

// Your WiFi credentials.
// Set password to "" for open networks.
char ssid[] = "DIGI-7v32";  //Enter your WIFI Name
char pass[] = "2UWCQ6R4";  //Enter your WIFI Password

#define DHTPIN 2          // Digital pin 4

// Uncomment whatever type you're using!
#define DHTTYPE DHT11     // DHT 11
//#define DHTTYPE DHT22   // DHT 22, AM2302, AM2321
//#define DHTTYPE DHT21   // DHT 21, AM2301

DHT dht(DHTPIN, DHTTYPE);
SimpleTimer timer;

// This function sends Arduino's up time every second to Virtual Pin (5).
// In the app, Widget's reading frequency should be set to PUSH. This means
// that you define how often to send data to Blynk App.
void sendSensor()
{
  float h = dht.readHumidity();
  float t = dht.readTemperature(); // or dht.readTemperature(true) for Fahrenheit

  if (isnan(h) || isnan(t)) {
    Serial.println("Failed to read from DHT sensor!");
    return;
  }
  // You can send any value at any time.
  // Please don't send more that 10 values per second.
  Blynk.virtualWrite(V5, h);  //V5 is for Humidity
  Blynk.virtualWrite(V6, t);  //V6 is for Temperature
}

void setup()
{
  Serial.begin(9600); // See the connection status in Serial Monitor
  Blynk.begin(auth, ssid, pass);

  dht.begin();

  // Setup a function to be called every second
  timer.setInterval(1000L, sendSensor);
}

void loop()
{
  Blynk.run(); // Initiates Blynk
  timer.run(); // Initiates SimpleTimer
}
4

1 回答 1

0

Blynk 使用开源 SimpleTimer 库。

那里有很多名为 SimpleTimer 的库 - 请参阅GitHub 搜索结果

如果您使用的库版本与 Blynk 使用的库版本不同,您可能会收到编译错误:

BlynkTimer.h: 36:21: error: redefinition of 'class BlynkTimer

如果您使用 Blynk 使用的库 - marcelloromani/Arduino-SimpleTimer - 您将不会在构建时遇到错误,并且可以#include <SimpleTimer.h>毫无问题地与 Blynk 一起使用它。

如果您使用的是 Blynk,建议使用BynkTimer`SimpleTimer' 代替,原因如下:

当 BlynkTimer 难以运行多次(由于循环阻塞)时,它只会跳过所有错过的时间间隔,并且只调用一次你的函数。新的 Blynk 库版本 v0.5.3 - 2018 年 6 月

要更改您的代码,请删除

#include <SimpleTimer.h>

并更换

SimpleTimer timer;

BlynkTimer timer;
于 2021-04-26T12:28:04.640 回答