I am playing with 3,5" (400x240) TFT display which is placed into Arduino Mega 2560 R3 board.
My final goal is taking .raw data from SD card and drawing it on display.
What I have done so far:
- My drawing method in the sketch:
void LoadImage(File& file)
{
for (int y = 0; y < SCREEN_HEIGHT && file.available(); y++) {
uint16_t buf[SCREEN_WIDTH];
for (int x = SCREEN_WIDTH - 1; x >= 0; x--) {
byte l = file.read();
byte h = file.read();
buf[x] = ((uint16_t)h << 8) | l;
}
myGLCD.drawPixelLine(0, y, SCREEN_WIDTH, buf);
}
}
- For reference drawPixelLine method's implementation from UTFT library:
void UTFT::drawPixelLine(int x, int y, int sx, uint16_t* data)
{
unsigned int col;
cbi(P_CS, B_CS);
setXY(x, y, x+sx-1, y);
for (int tc=0; tc<sx; tc++)
{
char* p = (char*)&data[tc];
LCD_Write_DATA(*(p + 1), *p);
}
sbi(P_CS, B_CS);
}
void UTFT::setXY(word x1, word y1, word x2, word y2)
{
if (orient==LANDSCAPE)
{
swap(word, x1, y1);
swap(word, x2, y2)
y1=disp_y_size-y1;
y2=disp_y_size-y2;
swap(word, y1, y2)
}
LCD_Write_COM(0x2a);
LCD_Write_DATA(x1>>8);
LCD_Write_DATA(x1);
LCD_Write_DATA(x2>>8);
LCD_Write_DATA(x2);
LCD_Write_COM(0x2b);
LCD_Write_DATA(y1>>8);
LCD_Write_DATA(y1);
LCD_Write_DATA(y2>>8);
LCD_Write_DATA(y2);
LCD_Write_COM(0x2c);
}
My current rendering:
Desired image:
TFT Lcd and Mega Board
UPDATE1
I ran henningan test from utft library, drawing sin/cos graph and simple squares
Here is attempt to render yellow square 100x100 raw data