0

我正在研究一棵 Arduino 控制的圣诞树,里面有 500 个完全可寻址的 LED。我正在使用 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

这是因为它已经贬值了。我在这里找到了一个替代方案,但现在由于折旧也出现以下行错误,但我不知道如何克服它。

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 库。

4

1 回答 1

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] = {...};
于 2015-12-22T20:02:54.450 回答