如何解决在 Arduino IDE 上运行代码时出现库错误
在 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
}
解决方法
Blynk 使用开源 SimpleTimer 库。
有很多名为 SimpleTimer 的库 - 请参阅 GitHub Search Results。
如果您的库版本与 Blynk 使用的版本不同,您可能会收到编译错误:
BlynkTimer.h: 36:21: error: redefinition of 'class BlynkTimer
如果您使用 Blynk 使用的库 - marcelloromani/Arduino-SimpleTimer - 您不会在构建时出错,并且可以 #include <SimpleTimer.h>
并与 Blynk 一起使用它,没有问题。
如果您使用 Blynk,建议使用 BynkTimer
而不是 `SimpleTimer',原因如下:
当 BlynkTimer 难以多次运行时(由于循环阻塞),它只会跳过所有错过的时间间隔,并且只调用一次您的函数。 New Blynk Library Release v0.5.3 - June 2018
要更改您的代码,请删除
#include <SimpleTimer.h>
并替换
SimpleTimer timer;
与
BlynkTimer timer;
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。