|
发表于 2014-3-16 00:25:56
|
显示全部楼层
本帖最后由 Super169 于 2014-3-16 00:27 编辑
shihaipeng04 发表于 2014-3-15 23:48
我估计是 setfont的时候,还是要在内存里建一个临时的数组,好像又没有清除他的地方,所以再建另一个字体 ...
我快要瘋了, 那個 PROGMEM 好像有點怪. 攪了老半天都是出錯, 終於把問題簡化了....
請幫忙試試以下 sketch, 你認為結果會是怎樣?
- uint8_t PROGMEM font8x16[] ={
- 0x08,0x10,0x20,0x10,
- 0x00,0x00,0xC0,0x30,0xC0,0x00,0x00,0x00,0x18,0x07,0x04,0x04,0x04,0x07,0x18,0x00,//A 33
- };
- void setup() {
- // put your setup code here, to run once:
- Serial.begin(9600);
- Serial.println("By variable:");
- int i;
- for(i=0;i < 4;i++)
- {
- Serial.print(i);
- Serial.print(":");
- Serial.print(font8x16[i]);
- Serial.println(" ");
- }
- Serial.println("Fixed value:");
- Serial.print(font8x16[0]);
- Serial.print(":");
- Serial.print(font8x16[1]);
- Serial.print(":");
- Serial.print(font8x16[2]);
- Serial.print(":");
- Serial.print(font8x16[3]);
- Serial.println(" ");
- }
- void loop() {
- // put your main code here, to run repeatedly:
-
- }
复制代码
結果用不同方式讀出來的結果竟然會不同.
By variable:
0:0
1:0
2:2
3:0
Fixed value:
8:16:32:16
同樣是 font8x16[0], 如果用 font8x16[k] 會得到 0, 而 font8x16[0] 就可以得到正確的 8.
再試試剛去當中的 PROGMEM, 結果就正常了: By variable:
0:8
1:16
2:32
3:16
Fixed value:
8:16:32:16
請問這結果正常嗎? |
|