这个错误是因为在使用 ESP8266 时,SPI.beginTransaction() 函数需要传入第二个 SPISettings 参数。解决方法如下:
1. 打开 Blynk 库所在的文件夹(通常在 Arduino/libraries/Blynk),找到文件 BlynkSimpleEsp8266.h。
2. 打开该文件并找到以下代码块:
```
#if defined(ESP8266)
class AuthTokenProvider {
public:
AuthTokenProvider(const char* auth) : _auth(auth) {}
void get(char* buff) { strcpy(buff, _auth); }
private:
const char* _auth;
};
typedef BlynkWifi BlynkTransport;
#else
typedef BlynkEthernet BlynkTransport;
#endif
```
3. 在 #if defined(ESP8266) 和 #else 之间添加以下代码:
```
#include
```
4. 找到以下代码行:
```
SPI.begin();
```
5. 将该行代码替换为以下代码:
```
SPI.begin(14, 12, 13, 15); //Set the pins used for ESP8266 SPI Interface
```
6. 打开文件 Adafruit_MCP3008.h,通常在 Arduino/libraries/Adafruit_MCP3008 目录中。
7. 找到以下代码块:
```
#if defined(SPI_HAS_TRANSACTION)
void beginTransaction(SPISettings settings);
void endTransaction(void);
#endif
void setBitOrder(uint8_t);
void setDataMode(uint8_t);
void setClockDivider(uint8_t);
```
8. 在 #if defined(SPI_HAS_TRANSACTION) 和 #endif 之间添加以下代码:
```
#if defined(ESP8266)
void beginTransaction(SPISettings settings);
#endif
```
9. 打开文件 Adafruit_MCP3008.cpp,通常在 Arduino/libraries/Adafruit_MCP3008 目录中。
10. 找到以下代码块:
```
#if defined(SPI_HAS_TRANSACTION)
void Adafruit_MCP3008::beginTransaction(SPISettings settings) {
SPI.beginTransaction(settings);
}
void Adafruit_MCP3008::endTransaction(void) {
SPI.endTransaction();
}
#endif
```
11. 在 #if defined(SPI_HAS_TRANSACTION) 和 #endif 之间添加以下代码:
```
#if defined(ESP8266)
void Adafruit_MCP3008::beginTransaction(SPISettings settings) {
SPI.beginTransaction(settings);
}
#endif
```
12. 保存文件并重新编译 BlynkBlink 示例。
如果仍然存在编译器错误,请尝试升级到较新版本的 Arduino IDE 和 Blynk 库。
这个错误是因为在使用 ESP8266 时,SPI.beginTransaction() 函数需要传入第二个 SPISettings 参数。解决方法如下:
1. 打开 Blynk 库所在的文件夹(通常在 Arduino/libraries/Blynk),找到文件 BlynkSimpleEsp8266.h。
2. 打开该文件并找到以下代码块:
```
#if defined(ESP8266)
class AuthTokenProvider {
public:
AuthTokenProvider(const char* auth) : _auth(auth) {}
void get(char* buff) { strcpy(buff, _auth); }
private:
const char* _auth;
};
typedef BlynkWifi BlynkTransport;
#else
typedef BlynkEthernet BlynkTransport;
#endif
```
3. 在 #if defined(ESP8266) 和 #else 之间添加以下代码:
```
#include
```
4. 找到以下代码行:
```
SPI.begin();
```
5. 将该行代码替换为以下代码:
```
SPI.begin(14, 12, 13, 15); //Set the pins used for ESP8266 SPI Interface
```
6. 打开文件 Adafruit_MCP3008.h,通常在 Arduino/libraries/Adafruit_MCP3008 目录中。
7. 找到以下代码块:
```
#if defined(SPI_HAS_TRANSACTION)
void beginTransaction(SPISettings settings);
void endTransaction(void);
#endif
void setBitOrder(uint8_t);
void setDataMode(uint8_t);
void setClockDivider(uint8_t);
```
8. 在 #if defined(SPI_HAS_TRANSACTION) 和 #endif 之间添加以下代码:
```
#if defined(ESP8266)
void beginTransaction(SPISettings settings);
#endif
```
9. 打开文件 Adafruit_MCP3008.cpp,通常在 Arduino/libraries/Adafruit_MCP3008 目录中。
10. 找到以下代码块:
```
#if defined(SPI_HAS_TRANSACTION)
void Adafruit_MCP3008::beginTransaction(SPISettings settings) {
SPI.beginTransaction(settings);
}
void Adafruit_MCP3008::endTransaction(void) {
SPI.endTransaction();
}
#endif
```
11. 在 #if defined(SPI_HAS_TRANSACTION) 和 #endif 之间添加以下代码:
```
#if defined(ESP8266)
void Adafruit_MCP3008::beginTransaction(SPISettings settings) {
SPI.beginTransaction(settings);
}
#endif
```
12. 保存文件并重新编译 BlynkBlink 示例。
如果仍然存在编译器错误,请尝试升级到较新版本的 Arduino IDE 和 Blynk 库。
举报