Δεν είναι μόνο το background, ΟΛΑ τα χρώματα είναι inverted*, αυτό σημαίνει ότι οι ρυθμίσεις είναι λάθος, σε άλλες βιβλιοθήκες έχει μια συνάρτηση mydisplay.invert() που το διορθώνει, αυτή δεν έχει απ' όσο είδα.
*πχ αν στείλεις κόκκινο (FF0000) αυτή δείχνει γαλάζιο (00FFFF)
μπλε (0000FF) το δείχνει κίτρινο (FFFF00)
μαυρο (000000) το δείχνει άσπρο (FFFFFF)
Οπότε έχεις 3 λύσεις
1. Να αλλάξεις όλα τα χρώματα χειροκίνητα
2. Να φτιάξεις την συνάρτηση invert
3. Να πειράξεις τις setColor
Εγώ το 3ο θα έκανα.
Πάνε Documents\Arduino\libraries\UTFT\UTFT.cpp
Βρες τις setColor (σειρά 684 αρχίζουν) και κάνε τις παρακάτω αλλαγές (πριν - μετά)
ή άλλαξε το αρχείο με αυτό που υπάρχει στο συνημμένο.
Κώδικας:
void UTFT::setColor(byte r, byte g, byte b)
{
fch=((r&248)|g>>5);
fcl=((g&28)<<3|b>>3);
}
void UTFT::setColor(word color)
{
fch=byte(color>>8);
fcl=byte(color & 0xFF);
}
και κάνε invert τα χρώματα, αντί να τα αλλάζεις όλα τα αλλάζεις στην συνάρτηση και δεν σε νοιάζει από που την καλούν
Κώδικας:
void UTFT::setColor(byte r, byte g, byte b)
{
r=~r;
g=~g;
b=~b;
fch=((r&248)|g>>5);
fcl=((g&28)<<3|b>>3);
}
void UTFT::setColor(word color)
{
color=~color;
fch=byte(color>>8);
fcl=byte(color & 0xFF);
}
Πρακτικά αυτό που κάνεις είναι: στέλνει ο κώδικας μαύρο, το κάνεις invert στην setColor (άσπρο) και μετά η οθόνη (λόγο αστοχίας ρυθμίσεων) θα εμφανίσει το άσπρο σε invert, άρα μαύρο, όποτε θα βλέπεις ότι στέλνεις.
**πνίγεστε σε μια κουταλιά νερό...
Το δύσκολο με τις οθόνες είναι όταν δεν δουλεύει γιατί δεν έχει ενδιάμεσες καταστάσεις, μπορεί 1 bit να είναι λάθος ή όλος ο κώδικας.