我目前正在使用带有Arduino Mega 2560的TFTv2 Seeedstudio Shield。当我意识到没有方法可以获得像素的颜色时,我正在屏幕上画画。我的直接想法是进入库文件并添加一个方法,该方法将返回与(x, y)
处的像素对应的颜色(一个整数)。屏幕上的像素数为240 * 320 = 76800.当我创建一个索引为76800的数组时,草图编译得很好:
INT16U pixels[76800];
但:
INT16U pixels[320][240];
是禁忌。
我收到一个错误,说数组大小太大了。
我在TFTv2.cpp文件中更改的唯一其他内容是setPixel(int x, int y, int color)
方法,我添加了一个名为getColorAt(int x, int y)
的方法,该方法返回unsigned int8
。我还在TFTv2.h头文件中添加了该方法。以下是这些变化:
标题文件:
INT16U getColorAt(INT8U poX, INT8U poY);
CPP文件:
void TFT::setPixel(INT16U poX, INT16U poY,INT16U color)
{
setXY(poX, poY);
pixels[poX][poY] = color; //added this line myself
sendData(color);
}
INT8U TFT::getColorAt(INT8U poX, INT8U poY)
{
return pixels[poX][poY];
}
这有什么区别?我认为二维数组会保存相同数量的数据,而单个数组具有相同数量的索引。
任何意见都表示赞赏,如果您需要任何其他信息,请随时询问!