大家好,
我玩 ESP8266 NodeMCU 有一段时间了,我买了一个 ILI9341 2.8" 显示器并连接到 ESP(没有触摸屏)。
它从 DIY 气象站(由太阳能电池板)通过 TCP。
一切都很好,所以现在我想包括我所在地区的天气预报。
我正在使用通过 JSON 文件发送天气数据的本地天气预报提供商。
我可以解析 JSON 文件和提取数据,在所有这些数据中,还有对表示一种天气“状态”(多云、晴天等)的位图的引用。
这些位图是 18 个位图,72x68 像素...我不能使用 SD 卡存储所有这些位图,所以我想使用 PROGMEM 属性将它们“存储”在闪存中。
我使用 GIMP 将它们中的每一个转换为“.c”文件中的 C 数组。
生成的文件包含以下内容:
代码:
全选/* GIMP RGB C-Source image dump (sereno.c) */
#define SERENO_WIDTH (72)
#define SERENO_HEIGHT (68)
#define SERENO_BYTES_PER_PIXEL (2) /* 2:RGB16, 3:RGB, 4:RGBA */
#define SERENO_PIXEL_DATA ((unsigned char*) SERENO_pixel_data)
const PROGMEM unsigned char SERENO_pixel_data[72 * 68 * 2 + 1] =
(" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"
" 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00............."
"
我在其中添加了“PROGMEM”但是当我编译时出现以下错误:
代码:
全选sketchsereno.c:7:15: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'unsigned'
const PROGMEM unsigned char SERENO_pixel_data[72 * 68 * 2 + 1] =
如果我删除 PROGMEM 并在该行的开头添加“sta
tic”,则会加载位图,但只有其中的几个会导致内存空间不足。
为了显示位图,我使用 Adafruit GFX 库和“drawRGBBitmap”。
我该怎么做才能将所有位图保存到闪存中?