如何使用 ILI9341 正确绘制框架?阿杜诺

问题描述

我有一个2.8 inch TFT LCD 驱动的来自 Adafruit 的 ILI9341。为了在 LCD 上绘图,我使用命令 0x2A 设置宽度、0x2B 设置高度和 0x2C 为每个像素着色 (I2C)。我的问题是我目前将背景绘制为矩形,然后需要每个矩形。这会产生令人不快的外观,因为颜色开始混合并在较小的矩形之间产生令人不安的倾斜线条。这些是我用来绘制的函数

void drawRectangle(long sX,long sY,long eX,long eY,uint16_t clr) {
  send32bitData(0x2A,(sX << 16) | eX);
  send32bitData(0x2B,(sY << 16) | eY);
  oneColor(clr,(eX - sX + 1) * (eY - sY + 1));
}
void oneColor(uint16_t clr,long area) {
  uint8_t hi = clr >> 8;
  uint8_t lo = clr;
  uint8_t dHi = clr >> 6,bHi = clr >> 14,dLo = clr << 2,bLo = clr >> 6;
  sendCommand(0x2C,true);
  PORTC = 0x6;
  for (long i = area; i--; i > 0) {
    PORTC = 0x6;
    PORTD = dHi;
    PORTB = bHi;
    PORTC = 0x2;
    PORTC = 0x6;
    PORTD = dLo;
    PORTB = bLo;
    PORTC = 0x2;
  }
  PORTC = 0x7;
}

Here's a video of that line。我假设我画错了。我想为每个像素保留一个带有颜色的巨大数组,但我有一个 Arduino Uno,它有 2048 字节的可变空间。如果我有那个数组,那么我会为整个屏幕绘制一个矩形并将每种颜色发送到内存。有效的一件事是绘制非常缓慢。但是,这很慢......我想以约 70 fps 的速度进行绘制,同时保持每帧流畅。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)