首页 > 解决方案 > 如何处理 Arduino 中 M5Stack 库抛出的编译错误

问题描述

我目前正在尝试使用 ESP32 芯片对我的 M5Stack 进行编程。我下载了(或至少我认为)上传到开发板所需的所有依赖项,但我什至无法编译我的程序。我通过板管理器下载了 ESP32,我按照他们网站上的 M5Stack 教程进行操作,似乎在他们的库本身中发现了错误。我不知道如何解决,下面是我的代码,下面是我收到的错误消息。

#include <M5Stack.h>
#include <Wire.h>
#define SPEAKER_PIN 25
#include "config.h"

AdafruitIO_Feed *voltage1 = io.feed("V1");
AdafruitIO_Feed *voltage2 = io.feed("V2");
AdafruitIO_Feed *curr = io.feed("Current");

void setup() {
  // put your setup code here, to run once:
  M5.begin(true, true, true, false);
  Serial.begin(115200);
  dacWrite(25,0);
  M5.Lcd.fillScreen(BLACK);
  M5.Lcd.setTextSize(5);

  // wait for serial monitor to open
  while(! Serial);

  Serial.print("Connecting to Adafruit IO");

  // connect to io.adafruit.com
  io.connect();

  // wait for a connection
  while(io.status() < AIO_CONNECTED) {
    Serial.print(".");
    delay(500);
  }

  // we are connected
  Serial.println();
  Serial.println(io.statusText());


//  ads.getAddr_ADS1100(ADS1100_DEFAULT_ADDRESS);
//  ads.setGain(GAIN_ONE);
//  ads.setMode(MODE_CONTIN);
//  ads.setRate(RATE_32);
//  ads.setOSMode(OSMODE_SINGLE);
//  ads.begin();
}

void loop() {

  io.run();

  // put your main code here, to run repeatedly:
  float v1 = (float)analogRead(36) / 4096 * 17.4  * 0.975;
  float v2 = (float)analogRead(35) / 4096 * 17.4 * 0.975;
  float current = (float)analogRead(5);


  Serial.print("v1: ");
  Serial.print(v1);
  Serial.println("V");
  Serial.print("v2: ");
  Serial.print(v2);
  Serial.println("V");

  M5.Lcd.setTextColor(WHITE);
  M5.Lcd.setCursor(10, 10);
  M5.Lcd.print("V1: ");
  M5.Lcd.print(v1);
  M5.Lcd.print("V");

  M5.Lcd.setTextColor(WHITE);
  M5.Lcd.setCursor(10, 70);
  M5.Lcd.print("V2: ");
  M5.Lcd.print(v2);
  M5.Lcd.print("V");

  M5.Lcd.setTextColor(WHITE);
  M5.Lcd.setCursor(10, 140);
  M5.Lcd.print("Current: ");
  M5.Lcd.print(current);
  M5.Lcd.print("A");
  delay(500);

  M5.Lcd.setCursor(10, 10);
  M5.Lcd.setTextColor(BLACK);
  M5.Lcd.print("V1: ");
  M5.Lcd.print(v1);
  M5.Lcd.print("V");

  M5.Lcd.setCursor(10, 70);
  M5.Lcd.setTextColor(BLACK);
  M5.Lcd.print("V2: ");
  M5.Lcd.print(v2);
  M5.Lcd.print("V");

  M5.Lcd.setTextColor(BLACK);
  M5.Lcd.setCursor(10, 140);
  M5.Lcd.print("Current: ");
  M5.Lcd.print(current);
  M5.Lcd.print("A");


  Serial.print("sending v1-> ");
  Serial.println(v1);
  voltage1->save(v1);

  Serial.print("sending v2-> "); 
  Serial.println(v2);
  voltage2->save(v2);

  Serial.print("sending Current-> ");
  Serial.println(current);
  curr->save(current);

}

错误输出:

Arduino: 1.8.12 (Windows 10), Board: "M5Stack-Core-ESP32, QIO, 80MHz, Default, 921600, None"

C:\Users\graff\OneDrive\Documents\Arduino\libraries\M5Stack\src\M5Display.cpp: In member function 'void M5Display::drawPngUrl(const char*, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, uint16_t, double, uint8_t)':

C:\Users\graff\OneDrive\Documents\Arduino\libraries\M5Stack\src\M5Display.cpp:543:3: error: 'HTTPClient' was not declared in this scope
   HTTPClient http;
   ^

C:\Users\graff\OneDrive\Documents\Arduino\libraries\M5Stack\src\M5Display.cpp:545:7: error: 'WiFi' was not declared in this scope
   if (WiFi.status() != WL_CONNECTED) {
       ^

C:\Users\graff\OneDrive\Documents\Arduino\libraries\M5Stack\src\M5Display.cpp:545:24: error: 'WL_CONNECTED' was not declared in this scope
   if (WiFi.status() != WL_CONNECTED) {
                        ^

C:\Users\graff\OneDrive\Documents\Arduino\libraries\M5Stack\src\M5Display.cpp:550:3: error: 'http' was not declared in this scope
   http.begin(url);
   ^

C:\Users\graff\OneDrive\Documents\Arduino\libraries\M5Stack\src\M5Display.cpp:553:19: error: 'HTTP_CODE_OK' was not declared in this scope
   if (httpCode != HTTP_CODE_OK) {
                   ^

C:\Users\graff\OneDrive\Documents\Arduino\libraries\M5Stack\src\M5Display.cpp:559:3: error: 'WiFiClient' was not declared in this scope
   WiFiClient *stream = http.getStreamPtr();
   ^

C:\Users\graff\OneDrive\Documents\Arduino\libraries\M5Stack\src\M5Display.cpp:559:15: error: 'stream' was not declared in this scope
   WiFiClient *stream = http.getStreamPtr();
               ^

Multiple libraries were found for "WiFi.h"
 Used: C:\Users\graff\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\WiFi
 Not used: C:\Program Files (x86)\Arduino\libraries\WiFi
 Not used: C:\Users\graff\OneDrive\Documents\Arduino\libraries\WiFi
Multiple libraries were found for "SD.h"
 Used: C:\Users\graff\AppData\Local\Arduino15\packages\esp32\hardware\esp32\1.0.4\libraries\SD
 Not used: C:\Program Files (x86)\Arduino\libraries\SD
 Not used: C:\Users\graff\OneDrive\Documents\Arduino\libraries\SD
exit status 1
Error compiling for board M5Stack-Core-ESP32.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

标签: c++compiler-errorsarduinoshared-libraries

解决方案


首先你应该做你的编译器想要的:

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

这提供了更多详细信息,如果解决方案不起作用,请编辑您的问题并用详细的信息替换编译器输出。在您的程序中手动包含缺少的库

#include <WiFi.h>
#include <SD.h>
#include <M5Stack.h>
#include <Wire.h>

并检查您拥有的依赖项

#include "config.h"

由于缺少文件,我无法编译


推荐阅读