UTFT Libary: Farbe falsch

Hallo,

ich habe mir ein paar Itead Studio 1.8" Displays bestellt und nun erhalten.

Ich habe das Display soweit schon eingerichtet und ausgetestet, aber eines ist mir schleierhaft. Ich bin dabei, einen kleinen Simulator für den Tastendruck meiner PS2 Kontrollers zu erstellen auf dem Display. Ich habe nun soweit das erste Steuerkreuz fertig, aber dann viel mir auf, dass die vordefinierte Farbe "VGA_RED" nicht dem entspricht, was ich mir vorstell. Oder bin ich so Farbenblind, dass ich Rot nur noch Blau sehe :drooling_face:

In dem Libaryverzeichnis /UTFT/UTFT.h

#define VGA_RED			0xF800

0xF800 => 255,0,0

Der derzeitige Sketch dazu

#include <UTFT.h>
UTFT glcd(ITDB18SP, A4, A5, A3, A1, A2);						// MODEL, SDA(orange), SCL(gruen), CS(grau), RST(violett), RS(weiss)
extern uint8_t SmallFont[];										// 8 x 12px

boolean stateStart, stateSelect;								// 0x01
boolean statePadUp, statePadRight, statePadDown, statePadLeft;	// 0x02
boolean stateTriangle, stateCircle, stateCross, stateSquare;	// 0x03
boolean stateL1, stateL2, stateL3;								// 0x04
boolean stateR1, stateR2, stateR3;								// 0x05
byte stateLX;													// 0x06
byte stateLY;													// 0x07
byte stateRX;													// 0x08
byte stateRY;													// 0x09


void setup()
{
	glcd.InitLCD();
	glcd.setFont(SmallFont);
	glcd.clrScr();
}


void padButtons(void)
{
	// Pad oben
	if (statePadUp == true)
	{
		glcd.setColor(VGA_RED);
		triangle(20, 40, 0);
	}
	else
	{
		glcd.setColor(VGA_GREEN);
		triangle(20, 40, 0);
	}

	// Pad rechts
	if (statePadRight == true)
	{
		glcd.setColor(VGA_RED);
		triangle(35, 55, 90);
	}
	else
	{
		glcd.setColor(VGA_GREEN);
		triangle(35, 55, 90);
	}

	// Pad unten
	if (statePadDown == true)
	{
		glcd.setColor(VGA_RED);
		triangle(20, 70, 180);
	}
	else
	{
		glcd.setColor(VGA_GREEN);
		triangle(20, 70, 180);
	}

	// Pad links
	if (statePadLeft == true)
	{
		glcd.setColor(VGA_RED);
		triangle(5, 55, 270);
	}
	else
	{
		glcd.setColor(VGA_GREEN);
		triangle(5, 55, 270);
	}
}


void triangle(byte x, byte y, int angle)
{ // Dreieck 10 x 10px
	switch (angle)
	{
	case 0:
		glcd.drawLine(x + 5, y + 0, x + 10, y + 10);
		glcd.drawLine(x + 5, y + 0, x + 0, y + 10);
		glcd.drawLine(x + 0, y + 10, x + 10, y + 10);
		break;
	case 90:
		glcd.drawLine(x + 0, y + 0, x + 0, y + 10);
		glcd.drawLine(x + 0, y + 0, x + 10, y + 5);
		glcd.drawLine(x + 0, y + 10, x + 10, y + 5);
		break;
	case 180:
		glcd.drawLine(x + 0, y + 0, x + 10, y + 0);
		glcd.drawLine(x + 0, y + 0, x + 5, y + 10);
		glcd.drawLine(x + 10, y + 0, x + 5, y + 10);
		break;
	case 270:
		glcd.drawLine(x + 0, y + 5, x + 10, y + 0);
		glcd.drawLine(x + 0, y + 5, x + 10, y + 10);
		glcd.drawLine(x + 10, y + 0, x + 10, y + 10);
		break;
	}
}


void loop()
{
	// Zufaelliger Status
	statePadUp = random(0, 2);
	statePadRight = random(0, 2);
	statePadDown = random(0, 2);
	statePadLeft = random(0, 2);
	
	padButtons();

	delay(500);
}

Hab noch ein bisschen weitergetestet. Es liegt daran, dass RGB nach BGR vertauscht wurde. Habe in den cpp bzw h Dateien aber noch keinen Anhaltspunkt gefunden. Mir ist aufgefallen, dass meine UTFT Lib nicht mehr die aktuellste war (Ende Dezember).
Neue Lib brachte aber auch keinen Fortschritt.

Das Problem ist bekannt.
Ich glaub, malerlein hatte das auch schon.
Schau dir mal die doku von Adafruit, betreffs diese TFT`s an, da steht, dass es verschiedene Ausführungen des Displays gibt.
Die entsprechende Bibliothek hat das auch drin, mit den vertauschten Farben.

Ah, okay. Wusste ich nicht.

Habe mich heute mittag mit Henning Karlson auseinandergesetzt. Seine Itead 1.8" Module funktionieren, so wie sie sollen. Da muss Itead in den neueren Version ein paar Änderungen vorgenommen haben. Ich habe auch einmal den Support von Itead zu dem Problem angeschrieben, da die auch die UTFT Lib immer noch als kompatibel anpreisen.

Adafruit Libary wollte ich ungern nutzen. Mir gefiel bereits die NeoPixel Lib nicht im vergleich zur FastSPI_LED. Das doofe ist, ich habe bereits einiges an Zeichnungen auf dem Display angefertigt.

Könnten, wenn die Lib nicht einigermaßen kompatibel ist, für die Katz sein. Alternative muss ich mir eigene defines anlegen, bzw. die vorhandenen defines abändern.

Du brauchst nur zwei Farben tauschen.
Laut Adafruit liegt es wohl an den Displays selber, die in drei verschiedenen Versionen hergestellt werden.
Ist die UTFT so viel besser als die von Adafruit?
Ich benutze nur die bisher und find sie eigentlich nicht schlecht..

Also auf der ersten Blick krieg ich schon wieder die Krätze. Mangelnde Dokumentation. Das Pinout ist komplett unterschiedlich und wird nirgends dokumentiert.
Ada

#define sclk 4
#define mosi 5
#define cs   6
#define dc   7
#define rst  8

Itead

#define SDA 13
#define SCL 11
#define CS   10
#define RS   8
#define RST  0

Ein Testlauf klappt auch nicht, habe den graphictest versucht auszuführen. Beide Libs installiert

In file included from C:\Program Files (x86)\Arduino\hardware\arduino\cores\arduino/Arduino.h:213,
                 from C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_GFX.h:5,
                 from graphicstest.ino:34:
C:\Program Files (x86)\Arduino\hardware\arduino\variants\standard/pins_arduino.h:45: error: expected unqualified-id before numeric constant
C:\Program Files (x86)\Arduino\hardware\arduino\variants\standard/pins_arduino.h:46: error: expected unqualified-id before numeric constant
In file included from graphicstest.ino:35:
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.h:111: error: expected ',' or '...' before numeric constant
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.h:113: error: expected ',' or '...' before numeric constant
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.h:113: error: 'Adafruit_ST7735::Adafruit_ST7735(uint8_t)' cannot be overloaded
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.h:112: error: with 'Adafruit_ST7735::Adafruit_ST7735(uint8_t)'
graphicstest:44: error: no matching function for call to 'Adafruit_ST7735::Adafruit_ST7735(int, int, int, int, int)'
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.h:112: note: candidates are: Adafruit_ST7735::Adafruit_ST7735(uint8_t)
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.h:107: note:                 Adafruit_ST7735::Adafruit_ST7735(const Adafruit_ST7735&)

Ich glaub hier läuft gerade als falsch. Ich werde gleich mal netbook rausholen und versuchen zu programmieren, bekomme die uft auch nicht mehr am laufen!

Hm- hast du das Ada-TFT oder das preiswertere vom Chinamann?
Da war irgendwas ein bisschen anders belegt...ich muss gleich erstmal ne Runde arbeiten, kann dir heute nachmittag aber mal nen funktionierenden Sketch geben, fürs chinesische..möglich, dass ich da nen paar Pinbelegungen geändert hatte.
Bei mir laufen beide Varianten, die mit der Soft-Spi und auch die angeblich schnellere, wobei ich allerdings am MEGA nicht viel Unterschied gemerkt hab.

Hallo,

ich habe das Display direkt aus dem Itead Studio bestellt.
http://imall.iteadstudio.com/display/tft-lcm/im120419001.html

Hm, ich hab die vom Chinamann, die zusätzlich den SD-Slot dran haben, habs aber mal eben an den UNO gesteckt.
Leider bekomme ich den Sketch nicht hier als Code rein (zu viele Zeichen...), hab ihn dir angehängt, damit läuft es (eben getestet).
Verkabelung (ich schreibe mal dahinter, wie die an meinem Display beschriftet sind, das ist etwas anders als bei Adafruit)

VCC an 5V
GND an Masse
SCL an digital 4
SDA an digital 5
RS/DC an digital 7
RES an digital 8
CS an digital 6

Im Wesentlichen wie dort: http://learn.adafruit.com/1-8-tft-display/connecting-the-display beschrieben, auch der Testsketch stammt von der folgenden Seite.
Da gibts auch die beiden Bibliotheken.
Die Anschlüsse sind beim chinesischen halt etwas anders angeordnet und beschriftet, weiter nix.
Solltest du wieder Probleme mit den Farben haben, dann schau mal in den Sketch, da steht was bei dazu, offenbar kann mans an der "Verpackung" (ich nehm an, die meinen die Schutzfolie) erkennen.
Die "high-speed-SPI-Verkabelung" hab ich jetzt allerdings nicht getestet, am MEGA merkt man da kaum nen Unterschied, finde ich.
Ich hoffe mal, das hilft dir weiter..

graphicstest.zip (3.1 KB)

Ich antworte mir mal selber, hab eben noch fix die Hardware-SPI-Schnittstelle getestet, auch das geht, mit folgender Verkabelung:

VCC und GND wie oben (eh klar)
SCL an digital 13
SDA an digital 11
RS/Dc an digital 9
RES an digital 8
CS an digital 10
am UNO.
Läuft tatsächlich doppelt so schnell-gut zu wissen.
Programmbeispiel ist das Beispiel graphicstest_highspeed- ohne irgendwelche Änderungen bei mir.

Bekomme das Problem hier mit doppelter Definition?

Adafruit_ST7735\Adafruit_ST7735.cpp.o: In function `Adafruit_ST7735::writecommand(unsigned char)':
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_ST7735/Adafruit_ST7735.cpp:78: multiple definition of `Adafruit_ST7735::writecommand(unsigned char)'
Adafruit_GFX\Adafruit_ST7735.cpp.o:C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.cpp:78: first defined here
Adafruit_ST7735\Adafruit_ST7735.cpp.o: In function `Adafruit_ST7735::writedata(unsigned char)':
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_ST7735/Adafruit_ST7735.cpp:89: multiple definition of `Adafruit_ST7735::writedata(unsigned char)'
Adafruit_GFX\Adafruit_ST7735.cpp.o:C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.cpp:89: first defined here
Adafruit_ST7735\Adafruit_ST7735.cpp.o: In function `Adafruit_ST7735::setAddrWindow(unsigned char, unsigned char, unsigned char, unsigned char)':
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_ST7735/Adafruit_ST7735.cpp:409: multiple definition of `Adafruit_ST7735::setAddrWindow(unsigned char, unsigned char, unsigned char, unsigned char)'
Adafruit_GFX\Adafruit_ST7735.cpp.o:C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.cpp:409: first defined here
Adafruit_ST7735\Adafruit_ST7735.cpp.o: In function `Adafruit_ST7735::pushColor(unsigned int)':
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_ST7735/Adafruit_ST7735.cpp:427: multiple definition of `Adafruit_ST7735::pushColor(unsigned int)'
Adafruit_GFX\Adafruit_ST7735.cpp.o:C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.cpp:427: first defined here
Adafruit_ST7735\Adafruit_ST7735.cpp.o: In function `Adafruit_ST7735::drawPixel(int, int, unsigned int)':
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_ST7735/Adafruit_ST7735.cpp:448: multiple definition of `Adafruit_ST7735::drawPixel(int, int, unsigned int)'
Adafruit_GFX\Adafruit_ST7735.cpp.o:C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.cpp:448: first defined here
Adafruit_ST7735\Adafruit_ST7735.cpp.o: In function `Adafruit_ST7735::drawFastVLine(int, int, int, unsigned int)':
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_ST7735/Adafruit_ST7735.cpp:476: multiple definition of `Adafruit_ST7735::drawFastVLine(int, int, int, unsigned int)'
Adafruit_GFX\Adafruit_ST7735.cpp.o:C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.cpp:476: first defined here
Adafruit_ST7735\Adafruit_ST7735.cpp.o: In function `Adafruit_ST7735::drawFastHLine(int, int, int, unsigned int)':
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_ST7735/Adafruit_ST7735.cpp:506: multiple definition of `Adafruit_ST7735::drawFastHLine(int, int, int, unsigned int)'
Adafruit_GFX\Adafruit_ST7735.cpp.o:C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.cpp:506: first defined here
Adafruit_ST7735\Adafruit_ST7735.cpp.o: In function `Adafruit_ST7735::fillScreen(unsigned int)':
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_ST7735/Adafruit_ST7735.cpp:536: multiple definition of `Adafruit_ST7735::fillScreen(unsigned int)'
Adafruit_GFX\Adafruit_ST7735.cpp.o:C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.cpp:536: first defined here
Adafruit_ST7735\Adafruit_ST7735.cpp.o: In function `Adafruit_ST7735::fillRect(int, int, int, int, unsigned int)':
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_ST7735/Adafruit_ST7735.cpp:544: multiple definition of `Adafruit_ST7735::fillRect(int, int, int, int, unsigned int)'
Adafruit_GFX\Adafruit_ST7735.cpp.o:C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.cpp:544: first defined here
Adafruit_ST7735\Adafruit_ST7735.cpp.o: In function `Adafruit_ST7735::Color565(unsigned char, unsigned char, unsigned char)':
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_ST7735/Adafruit_ST7735.cpp:579: multiple definition of `Adafruit_ST7735::Color565(unsigned char, unsigned char, unsigned char)'
Adafruit_GFX\Adafruit_ST7735.cpp.o:C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.cpp:579: first defined here
Adafruit_ST7735\Adafruit_ST7735.cpp.o: In function `Adafruit_ST7735::setRotation(unsigned char)':
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_ST7735/Adafruit_ST7735.cpp:592: multiple definition of `Adafruit_ST7735::setRotation(unsigned char)'
Adafruit_GFX\Adafruit_ST7735.cpp.o:C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.cpp:592: first defined here
Adafruit_ST7735\Adafruit_ST7735.cpp.o: In function `Adafruit_ST7735::invertDisplay(unsigned char)':
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_ST7735/Adafruit_ST7735.cpp:638: multiple definition of `Adafruit_ST7735::invertDisplay(unsigned char)'
Adafruit_GFX\Adafruit_ST7735.cpp.o:C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.cpp:638: first defined here
Adafruit_ST7735\Adafruit_ST7735.cpp.o: In function `Adafruit_ST7735::commandList(unsigned char const*)':
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_ST7735/Adafruit_ST7735.cpp:282: multiple definition of `Adafruit_ST7735::commandList(unsigned char const*)'
Adafruit_GFX\Adafruit_ST7735.cpp.o:C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.cpp:282: first defined here
Adafruit_ST7735\Adafruit_ST7735.cpp.o: In function `Adafruit_ST7735::commonInit(unsigned char const*)':
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_ST7735/Adafruit_ST7735.cpp:307: multiple definition of `Adafruit_ST7735::commonInit(unsigned char const*)'
Adafruit_GFX\Adafruit_ST7735.cpp.o:C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.cpp:307: first defined here
Adafruit_ST7735\Adafruit_ST7735.cpp.o: In function `Adafruit_ST7735::initR(unsigned char)':
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_ST7735/Adafruit_ST7735.cpp:386: multiple definition of `Adafruit_ST7735::initR(unsigned char)'
Adafruit_GFX\Adafruit_ST7735.cpp.o:C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.cpp:386: first defined here
Adafruit_ST7735\Adafruit_ST7735.cpp.o: In function `Adafruit_ST7735::initB()':
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_ST7735/Adafruit_ST7735.cpp:381: multiple definition of `Adafruit_ST7735::initB()'
Adafruit_GFX\Adafruit_ST7735.cpp.o:C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.cpp:381: first defined here
Adafruit_ST7735\Adafruit_ST7735.cpp.o: In function `Adafruit_ST7735':
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_ST7735/Adafruit_ST7735.cpp:45: multiple definition of `Adafruit_ST7735::Adafruit_ST7735(unsigned char, unsigned char, unsigned char)'
Adafruit_GFX\Adafruit_ST7735.cpp.o:C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.cpp:45: first defined here
Adafruit_ST7735\Adafruit_ST7735.cpp.o: In function `Adafruit_ST7735':
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_ST7735/Adafruit_ST7735.cpp:45: multiple definition of `Adafruit_ST7735::Adafruit_ST7735(unsigned char, unsigned char, unsigned char)'
Adafruit_GFX\Adafruit_ST7735.cpp.o:C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.cpp:45: first defined here
Adafruit_ST7735\Adafruit_ST7735.cpp.o: In function `Adafruit_ST7735':
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_ST7735/Adafruit_ST7735.cpp:32: multiple definition of `Adafruit_ST7735::Adafruit_ST7735(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)'
Adafruit_GFX\Adafruit_ST7735.cpp.o:C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.cpp:32: first defined here
Adafruit_ST7735\Adafruit_ST7735.cpp.o: In function `Adafruit_ST7735':
C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_ST7735/Adafruit_ST7735.cpp:32: multiple definition of `Adafruit_ST7735::Adafruit_ST7735(unsigned char, unsigned char, unsigned char, unsigned char, unsigned char)'
Adafruit_GFX\Adafruit_ST7735.cpp.o:C:\Users\Stefan\Documents\Arduino\libraries\Adafruit_GFX/Adafruit_ST7735.cpp:32: first defined here

Nach dem zwischenzeitig keines der Display mehr einen Ton von sich gab, kann ich nun zumindest sagen, dass keines ("mehr") defekt ist. Inzwischen geht ein Beispielssketch wieder mit UTFT Libary.

Jedoch etwas komisches, folgender Sketch lässt die Led nur blinken, wenn die vorletzte Zeile auskommentiert wird.

#include <UTFT.h>
#define LED 13
unsigned long lastMillis = 0;
bool state = 0;

UTFT myGLCD(ITDB18SP,11,13,10,8,9); // SDA, SCL, CS, RST, RS

void setup() {
  myGLCD.InitLCD();
  pinMode(LED, OUTPUT);
}

void loop() {
  if(millis() - lastMillis >= 500) {
    state = !state;
    lastMillis = millis();
  }
  digitalWrite(LED, state);

  myGLCD.fillScr(random(0,256), random(0,256), random(0,256));
}

LED und das SCL Bit deines UTFT sind beide 13 ...

Seltsam. Mit Arduino 1.05 bekomme ich beide Beispiele fehlerfrei compiliert.

Rabenauge:
Seltsam. Mit Arduino 1.05 bekomme ich beide Beispiele fehlerfrei compiliert.

Hab die 1.0.5-r2 drauf.

Das was Michael schrieb, ist mir nun auch klar. Dachte, dass wenn ich nicht die SPI Pins nehme, das Display die Ports auch nicht braucht.

Ich hatte das gleiche Problem, bin dann auf die Adafruit Lib ausgewichen und bin jetzt vollstes zufrieden.

Hab mir eigene defines für die Farben angelegt, so geht es nun. Adafruit würde einiges an Schreibaufwand bedeuten, wenn es denn problemlos laufen würde.

Habe jetzt bereits ein paar Tage die Strukturen der Menüs, Buttons, Trends eingearbeitet.