LusoRobótica - Robótica em Português
Sistemas específicos => Arduino / AVR => Tópico iniciado por: tucandroid em 16 de Março de 2013, 14:24
-
Boas amigos,
hoje recebi o LCD TFT 3.2" para o UNO comprado no ebay ao membro womarts (Podem ver aqui (http://www.ebay.co.uk/itm/271162229616?ssPageName=STRK:MEWNX:IT&_trksid=p3984.m1497.l2649)
Apos varias tentativas de librarias e tal, apenas acendia o "backlight" branco, perguntei ao vendedor que libraria usava e ele enviou-me um link com a libraria TFTLCD com o ide0022.
Apos passar o codigo de teste enviado por ele, o "tftpaint", o ecra atrofia todo cheio de linhas brancas sempre a piscar e tal.
acham que é problema do LCD ou nao?
vi este video
Ver Aqui aos 6 segundos (http://www.youtube.com/watch?v=bN1xEp7pEH4#ws)
e acontece-me o mesmo do video aos 6 segundos, mas o meu esta ligado directo ao UNO.
o que pode ser?
cumprimentos
-
Isso é pinos no ar,ou código mal feito.
-
obrigado senso, ainda andava a procura e ja tinha uma resposta. :)
em relaçao a pinos no ar, em que sentido? mal encaixados mesmo ou avariados?
o codigo é o seguinte, vê se tem algo de mal pf.
#include "TFTLCD.h"
#include "TouchScreen.h"
//Duemilanove/Diecimila/UNO/etc ('168 and '328 chips) microcontoller:
#define YP A3 // must be an analog pin, use "An" notation!
#define XM A2 // must be an analog pin, use "An" notation!
#define YM 9 // can be a digital pin
#define XP 8 // can be a digital pin
#define TS_MINX 150
#define TS_MINY 120
#define TS_MAXX 920
#define TS_MAXY 940
// For better pressure precision, we need to know the resistance
// between X+ and X- Use any multimeter to read it
// For the one we're using, its 300 ohms across the X plate
TouchScreen ts = TouchScreen(XP, YP, XM, YM, 300);
#define LCD_CS A3
#define LCD_CD A2
#define LCD_WR A1
#define LCD_RD A0
// optional
#define LCD_RESET A4
// Color definitions
#define BLACK 0x0000
#define BLUE 0x001F
#define RED 0xF800
#define GREEN 0x07E0
#define CYAN 0x07FF
#define MAGENTA 0xF81F
#define YELLOW 0xFFE0
#define WHITE 0xFFFF
TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);
#define BOXSIZE 40
#define PENRADIUS 3
int oldcolor, currentcolor;
void setup(void) {
Serial.begin(9600);
Serial.println("Paint!");
tft.reset();
// uint16_t identifier = tft.readRegister(0x0);
// if (identifier == 0x9325) {
// Serial.println("Found ILI9325");
// } else if (identifier == 0x9328) {
// Serial.println("Found ILI9328");
//} else {
// Serial.print("Unknown driver chip ");
// Serial.println(identifier, HEX);
// while (1);
//}
tft.initDisplay();
tft.fillScreen(BLACK);
tft.fillRect(0, 0, BOXSIZE, BOXSIZE, RED);
tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, YELLOW);
tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, GREEN);
tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, CYAN);
tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, BLUE);
tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, MAGENTA);
// tft.fillRect(BOXSIZE*6, 0, BOXSIZE, BOXSIZE, WHITE);
tft.drawRect(0, 0, BOXSIZE, BOXSIZE, WHITE);
currentcolor = RED;
pinMode(13, OUTPUT);
}
#define MINPRESSURE 10
#define MAXPRESSURE 1000
void loop()
{
digitalWrite(13, HIGH);
Point p = ts.getPoint();
digitalWrite(13, LOW);
pinMode(XM, OUTPUT);
pinMode(YP, OUTPUT);
//pinMode(YM, OUTPUT);
// we have some minimum pressure we consider 'valid'
// pressure of 0 means no pressing!
if (p.z > MINPRESSURE && p.z < MAXPRESSURE) {
if (p.y < (TS_MINY-5)) {
Serial.println("erase");
// press the bottom of the screen to erase
tft.fillRect(0, BOXSIZE, tft.width(), tft.height()-BOXSIZE, BLACK);
}
// turn from 0->1023 to tft.width
p.x = map(p.x, TS_MINX, TS_MAXX, tft.width(), 0);
p.y = map(p.y, TS_MINY, TS_MAXY, tft.height(), 0);
if (320-p.y <BOXSIZE){
oldcolor = currentcolor;
if (p.x < BOXSIZE) {
currentcolor = RED;
tft.drawRect(0, 0, BOXSIZE, BOXSIZE, WHITE);
}
else if (p.x < BOXSIZE*2) {
currentcolor = YELLOW;
tft.drawRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, WHITE);
}
else if (p.x < BOXSIZE*3) {
currentcolor = GREEN;
tft.drawRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, WHITE);
}
else if (p.x < BOXSIZE*4) {
currentcolor = CYAN;
tft.drawRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, WHITE);
}
else if (p.x < BOXSIZE*5) {
currentcolor = BLUE;
tft.drawRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, WHITE);
}
else if (p.x < BOXSIZE*6) {
currentcolor = MAGENTA;
tft.drawRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, WHITE);
}
if (oldcolor != currentcolor) {
if (oldcolor == RED) tft.fillRect(0, 0, BOXSIZE, BOXSIZE, RED);
if (oldcolor == YELLOW) tft.fillRect(BOXSIZE, 0, BOXSIZE, BOXSIZE, YELLOW);
if (oldcolor == GREEN) tft.fillRect(BOXSIZE*2, 0, BOXSIZE, BOXSIZE, GREEN);
if (oldcolor == CYAN) tft.fillRect(BOXSIZE*3, 0, BOXSIZE, BOXSIZE, CYAN);
if (oldcolor == BLUE) tft.fillRect(BOXSIZE*4, 0, BOXSIZE, BOXSIZE, BLUE);
if (oldcolor == MAGENTA) tft.fillRect(BOXSIZE*5, 0, BOXSIZE, BOXSIZE, MAGENTA);
}
}
if (((p.y-PENRADIUS) >0) && ((p.y+PENRADIUS) < tft.height())) {// BOXSIZE
tft.fillCircle(p.x, 320-p.y, PENRADIUS, currentcolor);
}
}
}
-
Pinos do lcd desligados, ou interferência.
-
Obrigado amigo,
como achas que me pudias verificar isso?
pela imagem dos pinos chegas lá? ;)
cumprimentos
-
Ao carregar no reset, a imagem fica direita,(enquanto estou a carregar).
penso que seja algum problema com o botao do reset nao?
cumprimentos
-
eu diria que é do comprimento dos fios, da maneira que eles estão são umas autenticas antenas ;D
se tiveres, tenta usar fios mais pequenos
-
eu diria que é do comprimento dos fios, da maneira que eles estão são umas autenticas antenas ;D
se tiveres, tenta usar fios mais pequenos
boas,
esse video foi retirado na net.
eu estou a usar uma shield directa no UNO.
esta tudo ligado directamente.
abraços