Arduino TFT 1.44寸彩屏

C:\Program Files (x86)\Arduino\libraries\UTFT\DefaultFonts.c:14:14: error: variable 'SmallFont' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 fontdatatype SmallFont[1144] PROGMEM={
              ^~~~~~~~~
C:\Program Files (x86)\Arduino\libraries\UTFT\DefaultFonts.c:118:14: error: variable 'BigFont' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 fontdatatype BigFont[3044] PROGMEM={
              ^~~~~~~
C:\Program Files (x86)\Arduino\libraries\UTFT\DefaultFonts.c:227:14: error: variable 'SevenSegNumFont' must be const in order to be put into read-only section by means of '__attribute__((progmem))'
 fontdatatype SevenSegNumFont[2004] PROGMEM={
              ^~~~~~~~~~~~~~~
exit status 1
为开发板 Arduino Uno 编译时出错。
解决办法:
修改UTFT库文件下的DefaultFonts.c文件,在SmallFont、BigFont、SevenSegNumFont前添加const。

例如

原代码:fontdatatype SmallFont[1144] PROGMEM={ 

修改为:
const fontdatatype SmallFont[1144] PROGMEM={ 

const fontdatatype BigFont[3044] PROGMEM={

const fontdatatype SevenSegNumFont[2004] PROGMEM={
#include <UTFT.h>

UTFT myGLCD(YYROBOT_TFT144, A2, A1, A5, A4, A3); // Remember to change the model parameter to suit your display module!
//YYROBOT_TFT144  屏幕型号,不用修改
//SDA----A2
//SCL----A1
//CS-----A5
//RST----A4
//RS----A3
//LED---A0  UTFT库里面设定的,如果需要修改需要修改库文件

extern uint8_t SmallFont[]; // 原始文件在库文件的DefaultFonts.c中
extern uint8_t BigFont[]; // 原始文件在库文件的DefaultFonts.c中
extern uint8_t SevenSegNumFont[]; // 原始文件在库文件的DefaultFonts.c中

void setup()
{
  randomSeed(analogRead(0));
  // Setup the LCD
  myGLCD.InitLCD(); // 初始化液晶
  myGLCD.InitLCD(); // 初始化两次有利于系统稳定
  myGLCD.setFont(SmallFont); // 设置字体为SmallFont格式
}
void loop()
{
  myGLCD.fillScr(255, 0, 0); // 填充RED
  delay (500);
  myGLCD.fillScr(0, 255, 0); // 填充GREEN
  delay (500);
  myGLCD.fillScr(0, 0, 255); // 填充BLUE
  delay (500);

  //En_8X12 Test
  myGLCD.setColor(255, 255, 255); // 设置字体颜色
  myGLCD.setBackColor(255, 0, 0); // 设置背景颜色
  myGLCD.clrScr(); //清屏
  myGLCD.setFont(SmallFont); // 设置字体为SmallFont格式(8*12字符)
  myGLCD.print("HelloWorld", CENTER, 20); // 打印HelloWorld,中间显示,显示在20行
  myGLCD.setFont(BigFont); // 设置大字体BigFont(16*16字符)
  myGLCD.print("ROBOT", LEFT, 40); // 打印ROBOT,靠左显示,显示在20行
  delay (500);

  //myGLCD.setFont(BigFont);
  myGLCD.setFont(SmallFont);
  myGLCD.clrScr();
  myGLCD.print("Size:1.44", LEFT, 20);
  myGLCD.print("Dots:128X128", LEFT, 35);
  myGLCD.print("Driver:ST7735", LEFT, 50);
  delay (3000);

  //SegNum Test
  myGLCD.setColor(255, 255, 255);
  myGLCD.setBackColor(255, 0, 0);
  myGLCD.clrScr();
  myGLCD.setFont(SmallFont);
  myGLCD.print("SegNum Test", CENTER, 20);
  delay (500);
  myGLCD.setFont(SevenSegNumFont);
  for (int i = 100; i < 110; i++)
  {
    myGLCD.printNumI(i, 0, 50, 4, '0'); // 显示数值是i,位置x=0,y=50,长度4,空位置填充字符0
    delay (500);
  }
}
阅读全文