Arduino TFT 3.2" + Touch Panel
Пришел вот такой девайс: http://www.ebay.com/itm/TFT-3-2-320-...item3f044f6832
Мучаюсь второй день как подключать к Arduino MEGA ......
В "оригинальной" схеме, которая предлагается и для 2.4" экранов след. распиновка:
DB8-DB15 to D0-D7 of Arduino, DB0-DB8 to GND - видимо очепятка здесь, сделал до DB7.
RS to D8, WR to D9, RD to 3.3v, CS to D10, RESET to D11, VCC to 5V, GND to GND.
Так вот, VCC посадил на +3.3 вольта, как написано красным шрифтом к описания экрана.
D0-D7 - как понимаю у ардуино на группе PWM, 0 и 1 вывод это TX и RX.
Так же когда спаял первый раз - экран вообще никак не отреагировал, даже подсветка не загорелась.
По схеме ясно, что + подается на подсветку (LEDA), а минуса нету, посадил минус на LEDK - и хотябы подсветка загорается.
Re: Arduino TFT 3.2" + Touch Panel
А каким скетчем пользуешся?
Даташит на дисплей здесь
Re: Arduino TFT 3.2" + Touch Panel
Хмм, сейчас попробовал переключиться на 16ти битный режим, тоже самое.... все глухо.
Родной скетч, который прилагается не копилируется, слизал с инета.
Дело в том, что на экране вообще ничего нету...
Кстате, идет вместе с data.c - куда файл этот кидать?
PHP код:
#include <avr/pgmspace.h>
#define LCD_RS 8
#define LCD_WR 9
#define LCD_CS 10
#define LCD_REST 11
extern unsigned char image[3200];
void LCD_Writ_Bus(char VH,char VL)
{
unsigned char i,temp,data;
data=VH;
for(i=0;i<8;i++)
{
temp=(data&0x01);
if(temp)
digitalWrite(i,HIGH);
else
digitalWrite(i,LOW);
data=data>>1;
}
digitalWrite(LCD_WR,LOW);
digitalWrite(LCD_WR,HIGH);
data=VL;
for(i=0;i<8;i++)
{
temp=(data&0x01);
if(temp)
digitalWrite(i,HIGH);
else
digitalWrite(i,LOW);
data=data>>1;
}
digitalWrite(LCD_WR,LOW);
digitalWrite(LCD_WR,HIGH);
}
void LCD_Write_COM(char VH,char VL) //发送命令
{
digitalWrite(LCD_RS,LOW);
LCD_Writ_Bus(VH,VL);
}
void LCD_Write_DATA(char VH,char VL) //发送数据
{
digitalWrite(LCD_RS,HIGH);
LCD_Writ_Bus(VH,VL);
}
void Address_set(unsigned int x1,unsigned int y1,unsigned int x2,unsigned int y2)
{
LCD_Write_COM(0x00,0x20);
LCD_Write_DATA(x1>>8,x1);
LCD_Write_COM(0x00,0x21);
LCD_Write_DATA(y1>>8,y1);
LCD_Write_COM(0x00,0x50);
LCD_Write_DATA(x1>>8,x1);
LCD_Write_COM(0x00,0x52);
LCD_Write_DATA(y1>>8,y1);
LCD_Write_COM(0x00,0x51);
LCD_Write_DATA(x2>>8,x2);
LCD_Write_COM(0x00,0x53);
LCD_Write_DATA(y2>>8,y2);
LCD_Write_COM(0x00,0x22);
}
void LCD_Init(void)
{
digitalWrite(LCD_REST,HIGH);
delay(5);
digitalWrite(LCD_REST,LOW);
delay(5);
digitalWrite(LCD_REST,HIGH);
delay(5);
digitalWrite(LCD_CS,LOW);
//************* Start Initial Sequence **********//
LCD_Write_COM(0x00,0xE5);
LCD_Write_DATA(0x78,0xF0); // set SRAM internal timing
LCD_Write_COM(0x00,0x01);
LCD_Write_DATA(0x01,0x00); // set SS and SM bit
LCD_Write_COM(0x00,0x02);
LCD_Write_DATA(0x07,0x00); // set 1 line inversion
LCD_Write_COM(0x00,0x03);
LCD_Write_DATA(0x10,0x30); // set GRAM write direction and BGR=1.
LCD_Write_COM(0x00,0x04);
LCD_Write_DATA(0x00,0x00); // Resize register
LCD_Write_COM(0x00,0x08);
LCD_Write_DATA(0x02,0x07); // set the back porch and front porch
LCD_Write_COM(0x00,0x09);
LCD_Write_DATA(0x00,0x00); // set non-display area refresh cycle ISC[3:0]
LCD_Write_COM(0x00,0x0A);
LCD_Write_DATA(0x00,0x00); // FMARK function
LCD_Write_COM(0x00,0x0C);
LCD_Write_DATA(0x00,0x00); // RGB interface setting
LCD_Write_COM(0x00,0x0D);
LCD_Write_DATA(0x00,0x00); // Frame marker Position
LCD_Write_COM(0x00,0x0F);
LCD_Write_DATA(0x00,0x00); // RGB interface polarity
//*************Power On sequence ****************//
LCD_Write_COM(0x00,0x10);
LCD_Write_DATA(0x00,0x00); // SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_Write_COM(0x00,0x11);
LCD_Write_DATA(0x00,0x07); // DC1[2:0], DC0[2:0], VC[2:0]
LCD_Write_COM(0x00,0x12);
LCD_Write_DATA(0x00,0x00); // VREG1OUT voltage
LCD_Write_COM(0x00,0x13);
LCD_Write_DATA(0x00,0x00); // VDV[4:0] for VCOM amplitude
LCD_Write_COM(0x00,0x07);
LCD_Write_DATA(0x00,0x01);
delay(50); // Dis-charge capacitor power voltage
LCD_Write_COM(0x00,0x10);
LCD_Write_DATA(0x10,0x90); // 1490//SAP, BT[3:0], AP, DSTB, SLP, STB
LCD_Write_COM(0x00,0x11);
LCD_Write_DATA(0x02,0x27); // DC1[2:0], DC0[2:0], VC[2:0]
delay(50); // Delay 50ms
LCD_Write_COM(0x00,0x12);
LCD_Write_DATA(0x00,0x1F); //001C// Internal reference voltage= Vci;
delay(50); // Delay 50ms
LCD_Write_COM(0x00,0x13);
LCD_Write_DATA(0x15,0x00); //0x1000//1400 Set VDV[4:0] for VCOM amplitude 1A00
LCD_Write_COM(0x00,0x29);
LCD_Write_DATA(0x00,0x27); //0x0012 //001a Set VCM[5:0] for VCOMH //0x0025 0034
LCD_Write_COM(0x00,0x2B);
LCD_Write_DATA(0x00,0x0D); // Set Frame Rate 000C
delay(50); // Delay 50ms
LCD_Write_COM(0x00,0x20);
LCD_Write_DATA(0x00,0x00); // GRAM horizontal Address
LCD_Write_COM(0x00,0x21);
LCD_Write_DATA(0x00,0x00); // GRAM Vertical Address
// ----------- Adjust the Gamma Curve ----------//
LCD_Write_COM(0x00,0x30);
LCD_Write_DATA(0x00,0x00);
LCD_Write_COM(0x00,0x31);
LCD_Write_DATA(0x07,0x07);
LCD_Write_COM(0x00,0x32);
LCD_Write_DATA(0x03,0x07);
LCD_Write_COM(0x00,0x35);
LCD_Write_DATA(0x02,0x00);
LCD_Write_COM(0x00,0x36);
LCD_Write_DATA(0x00,0x08);//0207
LCD_Write_COM(0x00,0x37);
LCD_Write_DATA(0x00,0x04);//0306
LCD_Write_COM(0x00,0x38);
LCD_Write_DATA(0x00,0x00);//0102
LCD_Write_COM(0x00,0x39);
LCD_Write_DATA(0x07,0x07);//0707
LCD_Write_COM(0x00,0x3C);
LCD_Write_DATA(0x00,0x02);//0702
LCD_Write_COM(0x00,0x3D);
LCD_Write_DATA(0x1D,0x04);//1604
//------------------ Set GRAM area ---------------//
LCD_Write_COM(0x00,0x50);
LCD_Write_DATA(0x00,0x00); // Horizontal GRAM Start Address
LCD_Write_COM(0x00,0x51);
LCD_Write_DATA(0x00,0xEF); // Horizontal GRAM End Address
LCD_Write_COM(0x00,0x52);
LCD_Write_DATA(0x00,0x00); // Vertical GRAM Start Address
LCD_Write_COM(0x00,0x53);
LCD_Write_DATA(0x01,0x3F); // Vertical GRAM Start Address
LCD_Write_COM(0x00,0x60);
LCD_Write_DATA(0xA7,0x00); // Gate Scan Line
LCD_Write_COM(0x00,0x61);
LCD_Write_DATA(0x00,0x01); // NDL,VLE, REV
LCD_Write_COM(0x00,0x6A);
LCD_Write_DATA(0x00,0x00); // set scrolling line
//-------------- Partial Display Control ---------//
LCD_Write_COM(0x00,0x80);
LCD_Write_DATA(0x00,0x00);
LCD_Write_COM(0x00,0x81);
LCD_Write_DATA(0x00,0x00);
LCD_Write_COM(0x00,0x82);
LCD_Write_DATA(0x00,0x00);
LCD_Write_COM(0x00,0x83);
LCD_Write_DATA(0x00,0x00);
LCD_Write_COM(0x00,0x84);
LCD_Write_DATA(0x00,0x00);
LCD_Write_COM(0x00,0x85);
LCD_Write_DATA(0x00,0x00);
//-------------- Panel Control -------------------//
LCD_Write_COM(0x00,0x90);
LCD_Write_DATA(0x00,0x10);
LCD_Write_COM(0x00,0x92);
LCD_Write_DATA(0x06,0x00);
LCD_Write_COM(0x00,0x07);
LCD_Write_DATA(0x01,0x33); // 262K color and display ON
digitalWrite(LCD_CS,HIGH);
}
void Pant(char VH,char VL)
{
int i,j;
digitalWrite(LCD_CS,LOW);
Address_set(0,0,240,320);
for(i=0;i<320;i++)
{
for (j=0;j<240;j++)
{
LCD_Write_DATA(VH,VL);
}
}
digitalWrite(LCD_CS,HIGH);
}
void setup()
{
unsigned char p;
char hi,lo;
int i,j,k;
for(p=0;p<20;p++)
{
pinMode(p,OUTPUT);
}
LCD_Init();
// Pant(0xff,0xff);
digitalWrite(LCD_CS,LOW);
for(k=0;k<8;k++)
{
for(j=0;j<6;j++)
{
Address_set(40*j,40*k,40*j+39,40*k+39);
for(i=0;i<1600;i++)
{
hi=pgm_read_byte(&image[i*2+1]);
lo=pgm_read_byte(&image[i*2]);
LCD_Write_DATA(hi,lo);
}
}
}
digitalWrite(LCD_CS,HIGH);
}
void loop()
{
}
Re: Arduino TFT 3.2" + Touch Panel
Я подключал аналогичный дисплей, правда 2.4", через такой адаптер. Там же есть библиотеки.
Re: Arduino TFT 3.2" + Touch Panel
#define LCD_RS 8
#define LCD_WR 9
#define LCD_CS 10
#define LCD_REST 11
Вот это точно не верно, т.к. эти выводы заняты Data Bus.
RESET у меня сидит на Analog 2
CS у меня сидит на Analog 3
WR у меня сидит на Analog 4
RS у меня сидит на Analog 5
Какие это выводы по порядку у ардуины?:)
Re: Arduino TFT 3.2" + Touch Panel
Цитата:
Сообщение от
zhserg
Я подключал аналогичный дисплей, правда 2.4", через
такой адаптер. Там же есть библиотеки.
Схема этого шилда есть гденить в инете??:) Темболее у меня монитор БЕЗ SD карты
Re: Arduino TFT 3.2" + Touch Panel
Цитата:
Сообщение от
alekseykok
#define LCD_RS 8
#define LCD_WR 9
#define LCD_CS 10
#define LCD_REST 11
Вот это точно не верно, т.к. эти выводы заняты Data Bus.
RESET у меня сидит на Analog 2
CS у меня сидит на Analog 3
WR у меня сидит на Analog 4
RS у меня сидит на Analog 5
Какие это выводы по порядку у ардуины?:)
И ты хочешь что бы он заработал без инициализации и при неправильном подключении?
подключи все выводы как в скетче
PHP код:
RS D8
WR D9
CS D10
REST D11
DATA D0-D7
Re: Arduino TFT 3.2" + Touch Panel
у ардуины 1280 в программе аналоговые с какой цифры начинаются?
Re: Arduino TFT 3.2" + Touch Panel
Еще раз повторю, Подключи на цифровые выводы
PHP код:
RS - D8
WR - D9
CS - D10
REST - D11
DATA - D0-D7
Re: Arduino TFT 3.2" + Touch Panel
Эти выводы заняты Шиной Данных..... Скетч написан со многими ошибками:(