temp_humi\temp_humi.axf: Error: L6218E: Undefined symbol save_data (referred from dht11.o).
时间: 2023-11-12 18:54:29 浏览: 149
这个错误提示说明在编译链接 `temp_humi.axf` 的过程中,找不到 `save_data` 这个符号的定义。可能的原因是在 `dht11.o` 对 `save_data` 进行了引用,但是在链接时没有找到它的定义。
你需要检查一下代码中是否有 `save_data` 这个函数或变量的定义,如果没有,需要添加对应的定义。如果已经有了定义,那可能是链接时出现了问题,需要检查链接设置和库文件是否正确。
相关问题
ESP8266_Init(); delay_ms(800); ESP8266_StaTcpClient_UnvarnishTest(); /*初始化DTT11的引脚*/// MQ2_DO_GPIO_Init(); // MQ2_DO数字接口输入 DHT11_GPIO_Config(); //DHT11温湿度传感器接口初始化 ADCx_Init(); //MQ2 adc通道初始化 /*调用Read_DHT11读取温湿度,若成功则输出该信息*/ if( Read_DHT11(&DHT11_Data)==SUCCESS) { printf("\r\n读取DHT11成功!\r\n\r\n湿度为%d.%d %RH ,温度为 %d.%d℃ \r\n",\ DHT11_Data.humi_int,DHT11_Data.humi_deci,DHT11_Data.temp_int,DHT11_Data.temp_deci); //printf("\r\n 湿度:%d,温度:%d \r\n" ,DHT11_Data.humi_int,DHT11_Data.temp_int); } else { printf("Read DHT11 ERROR!\r\n"); } // LED_Init(); // LED初始化 // Beek_Init(); // OLED while(1) { /*调用Read_DHT11读取温湿度,若成功则输出该信息*/ if( Read_DHT11(&DHT11_Data)==SUCCESS) { printf("湿度为%d.%d %RH ,温度为 %d.%d℃ \r\n",\ DHT11_Data.humi_int,DHT11_Data.humi_deci,DHT11_Data.temp_int,DHT11_Data.temp_deci); //printf("\r\n 湿度:%d,温度:%d \r\n" ,DHT11_Data.humi_int,DHT11_Data.temp_int); ADC_ConvertedValueLocal =(float) ADC_ConvertedValue/4096*3.3; //读取MQ2的adc电压 } else { printf("Read DHT11 ERROR!\r\n"); } printf(" The AD value = %f V \r\n", ADC_ConvertedValueLocal); //显示电压解释代码
这段代码主要是对ESP8266、DHT11、MQ2和ADC进行初始化,并调用Read_DHT11函数读取温湿度数据和ADC的电压值。具体分析如下:
1. ESP8266_Init()函数用于初始化ESP8266模块,包括串口和Wi-Fi连接等。
2. delay_ms(800)函数用于延时800毫秒,等待ESP8266模块初始化完成。
3. ESP8266_StaTcpClient_UnvarnishTest()函数用于检测ESP8266模块的TCP客户端连接状态。
4. MQ2_DO_GPIO_Init()函数用于初始化MQ2传感器的数字信号输入端口。
5. DHT11_GPIO_Config()函数用于初始化DHT11温湿度传感器的引脚。
6. ADCx_Init()函数用于初始化ADC通道。
7. Read_DHT11(&DHT11_Data)函数用于读取DHT11传感器采集的温湿度数据,并将结果存储在DHT11_Data结构体中。
8. ADC_ConvertedValueLocal =(float) ADC_ConvertedValue/4096*3.3;语句用于读取MQ2传感器采集的模拟电压值,并将结果存储在ADC_ConvertedValueLocal变量中。
9. printf语句用于输出读取到的温湿度数据和MQ2传感器采集的电压值。
我很感激你为我提供的帮助,但我用你方法还是没有解决此问题,请您仔细分析以下错误信息 In file included from D:\Users\yinch\Desktop\shiyan\shiyan.ino:1: C:\Users\yinch\Documents\Arduino\libraries\blinker-library-0.3.80210803\src/Blinker.h:262:6: error: #error Please set a mode BLINKER_BLE/BLINKER_WIFI/BLINKER_MQTT ! Please check your mode setting. 262 | #error Please set a mode BLINKER_BLE/BLINKER_WIFI/BLINKER_MQTT ! Please check your mode setting. | ^~~~~ exit status 1 为开发板 NodeMCU 1.0 (ESP-12E Module) 编译时出错。
根据错误信息显示,问题出在 Blinker 库的设置上。错误提示说需要设置 BLINKER_BLE/BLINKER_WIFI/BLINKER_MQTT 模式,但是当前没有进行设置。
你可以尝试在程序的开头添加 `#define BLINKER_WIFI` 来设置为 Wi-Fi 模式。修改后的代码如下:
```cpp
#define BLINKER_WIFI
#include <Blinker.h>
#include <Wire.h>
#include <Adafruit_SGP30.h>
char auth[] = "feccd27f6cc7";
char ssid[] = "MW";
char pswd[] = "1737213260";
BlinkerNumber HUMI("num-shidu");
BlinkerNumber TEMP("num-wendu");
BlinkerNumber CO2("num-co2");
Adafruit_SGP30 sgp;
void dataRead(const String &data)
{
BLINKER_LOG("Blinker readString: ", data);
Blinker.vibrate();
uint32_t BlinkerTime = millis();
Blinker.print("millis", BlinkerTime);
}
void setup()
{
Serial.begin(115200);
BLINKER_DEBUG.stream(Serial);
pinMode(LED_BUILTIN, OUTPUT);
digitalWrite(LED_BUILTIN, LOW);
Blinker.begin(auth, ssid, pswd);
Blinker.attachData(dataRead);
while (!sgp.begin())
{
Serial.println("Sensor not found. Please check your wiring.");
delay(1000);
}
}
void loop()
{
Blinker.run();
if (sgp.IAQmeasure())
{
HUMI.print(sgp.relativeHumidity());
TEMP.print(sgp.temperature);
CO2.print(sgp.eCO2);
}
delay(1000);
}
```
请注意,`#define BLINKER_WIFI` 必须放在 `#include <Blinker.h>` 的前面。
如果问题仍然存在,请确保你的 Blinker 库是最新版本,并且参考 Blinker 库的文档或联系 Blinker 支持团队以获取进一步的帮助。
阅读全文