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
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);
}