C:\Users\Administrator\AppData\Local\Temp\.arduinoIDE-unsaved2023620-4200-iksi8r.v6bsj\sketch_jul20a\sketch_jul20a.ino: In function 'void loop()': C:\Users\Administrator\AppData\Local\Temp\.arduinoIDE-unsaved2023620-4200-iksi8r.v6bsj\sketch_jul20a\sketch_jul20a.ino:107:48: error: no matching function for call to 'U8GLIB_SSD1306_128X64::drawStr(int, int, StringSumHelper&)' u8g.drawStr(80, 12, "Value: " + String(angle)); ^ In file included from C:\Users\Administrator\AppData\Local\Temp\.arduinoIDE-unsaved2023620-4200-iksi8r.v6bsj\sketch_jul20a\sketch_jul20a.ino:7:0: c:\Users\Administrator\Documents\Arduino\libraries\U8glib\src/U8glib.h:171:16: note: candidate: u8g_uint_t U8GLIB::drawStr(u8g_uint_t, u8g_uint_t, const char*) u8g_uint_t drawStr(u8g_uint_t x, u8g_uint_t y, const char *s) { return u8g_DrawStr(&u8g, x, y, s); } ^~~~~~~ c:\Users\Administrator\Documents\Arduino\libraries\U8glib\src/U8glib.h:171:16: note: no known conversion for argument 3 from 'StringSumHelper' to 'const char*' c:\Users\Administrator\Documents\Arduino\libraries\U8glib\src/U8glib.h:201:16: note: candidate: u8g_uint_t U8GLIB::drawStr(u8g_uint_t, u8g_uint_t, const __FlashStringHelper*) u8g_uint_t drawStr(u8g_uint_t x, u8g_uint_t y, const __FlashStringHelper *s) { return u8g_DrawStrP(&u8g, x, y, (u8g_pgm_uint8_t *)s); } ^~~~~~~ c:\Users\Administrator\Documents\Arduino\libraries\U8glib\src/U8glib.h:201:16: note: no known conversion for argument 3 from 'StringSumHelper' to 'const __FlashStringHelper*' exit status 1 Compilation error: no matching function for call to 'U8GLIB_SSD1306_128X64::drawStr(int, int, StringSumHelper&)'
时间: 2023-10-09 22:17:32 浏览: 268
根据你提供的错误信息,看起来是在调用`u8g.drawStr()`函数时出现了问题。错误信息显示没有匹配的函数来处理传递给函数的参数。
在U8glib库中,`drawStr()`函数的第三个参数应该是一个`const char*`类型的字符串,而你传递给它的是一个`StringSumHelper`类型的对象,这导致了错误。
为了解决这个问题,你可以使用`String`对象的`c_str()`方法将其转换为`const char*`类型的字符串。请尝试修改你的代码如下:
```cpp
u8g.drawStr(80, 12, ("Value: " + String(angle)).c_str());
```
上述代码将把拼接的字符串转换为`const char*`类型,并传递给`drawStr()`函数。
请确保你已经正确包含了U8glib(或U8g2)库,并按照库的文档和示例进行正确的函数调用。
如果你仍然遇到问题,请提供更多的代码和错误信息,以便我更好地帮助你解决问题。
相关问题
C:\Users\闫秋帅\AppData\Local\Temp\.arduinoIDE-unsaved2023620-30356-1nrx2ou.4y9i\sketch_jul20a\sketch_jul20a.ino:10:1: error: 'Ticker' does not name a type C:\Users\闫秋帅\AppData\Local\Temp\.arduinoIDE-unsaved2023620-30356-1nrx2ou.4y9i\sketch_jul20a\sketch_jul20a.ino: In function 'void setup()': C:\Users\闫秋帅\AppData\Local\Temp\.arduinoIDE-unsaved2023620-30356-1nrx2ou.4y9i\sketch_jul20a\sketch_jul20a.ino:34:2: error: 'tk' was not declared in this scope exit status 1 Compilation error: 'Ticker' does not name a type
这个错误提示表明在你的代码中存在以下问题:
1. `'Ticker'` 未被声明为类型。这可能是因为你没有正确包含 `Ticker` 库的头文件,或者你的文件中存在语法错误。
2. `'tk'` 在作用域中未被声明。这意味着你在 `setup()` 函数中使用了一个未声明的变量 `'tk'`。
为了解决这些问题,你可以尝试以下步骤:
1. 确保已经正确地包含了 `Ticker` 库的头文件。在你的代码开头添加以下语句:
```cpp
#include <Ticker.h>
```
这将确保编译器知道 `Ticker` 类型的存在。
2. 检查是否在 `setup()` 函数之前声明了 `'tk'` 变量。例如:
```cpp
Ticker tk;
```
确保在使用 `'tk'` 变量之前进行了声明。
希望这些解决方案可以帮助你解决问题。如果还有其他问题,请随时提问。
C:\Users\Administrator\AppData\Local\Temp\.arduinoIDE-unsaved2023620-4200-iksi8r.v6bsj\sketch_jul20a\sketch_jul20a.ino:67:1: error: too many initializers for 'const unsigned char [5][32]' }; ^ exit status 1 Compilation error: too many initializers for 'const unsigned char [5][32]'
这个错误提示表明在你的代码中,对于一个名为`const unsigned char`的二维数组,有太多的初始化值。
根据错误信息,这个二维数组的大小是`[5][32]`,也就是说它有5行32列。然而,在你的代码中,初始化值的数量超过了这个大小限制,导致编译错误。
要解决这个问题,你需要检查代码中对这个二维数组的初始化部分,并确保初始化值的数量与数组大小相匹配。如果你只想使用部分元素进行初始化,可以缩小数组的大小或者只初始化需要的部分元素。
如果你能提供相关的代码片段,我可以帮助你更具体地找出问题所在并提供解决方案。
阅读全文