Arduino FastLED编译因折旧而导致的错误

时间:2015-12-22 19:38:31

标签: c++ arduino

我正在使用一个带有500个完全可寻址LED的Arduino控制圣诞树。我现在正在使用FastLED库(虽然我将通过采样音频更新一些动画来控制)我使用http://pastebin.com/Qe0Jttme中的代码作为起点。

以下行:( pastebin示例中的第36行)

const PROGMEM prog_uint16_t levels[NUM_LEVELS] = {58, 108, 149, 187, 224, 264, 292, 309, 321, 327, 336, 348};

给我错误:

exit status 1 
'prog_uint16_t' does not name a type

这是因为它已被折旧。我找到了另一种here,但现在由于折旧而导致以下行错误,但我不知道如何通过它。

const PROGMEM prog_uchar ledCharSet[20] = {
B00111111,B00000110,B01011011,B01001111,B01100110,B01101101,B01111101,B00000111,B01111111,B01101111,
B10111111,B10000110,B11011011,B11001111,B11100110,B11101101,B11111101,B10000111,B11111111,B11101111
};

返回相同的错误:

exit status 1
'prog_uchar' does not name a type

我使用的是Arduino 1.6.6版和最新的FastLED库。

1 个答案:

答案 0 :(得分:1)

如果有很多这些prog_类型,那么一个简单的解决方案就是创建一个包含以下内容的头文件,并包含在使用这些类型的任何文件中:

#include <stdint.h>

typedef void prog_void;
typedef char prog_char;
typedef unsigned char prog_uchar;
typedef int8_t prog_int8_t;
typedef uint8_t prog_uint8_t;
typedef int16_t prog_int16_t;
typedef uint16_t prog_uint16_t;
typedef int32_t prog_int32_t;
typedef uint32_t prog_uint32_t;
typedef int64_t prog_int64_t;
typedef uint64_t prog_uint64_t;

如果只有少量prog_类型的用法,或者您想要正确修复代码,那么只需将它们替换为适当类型的用户。例如:

const PROGMEM uint16_t levels[NUM_LEVELS] = {...};
const PROGMEM unsigned char ledCharSet[20] = {...};