Übersicht der Funktionen nach Dokument UTFT.pdf, Details sind im Original noch besser beschrieben. Achtung! Immer neueste Variante laden: http://henningkarlsen.com/electronics/library.php?id=52 Kompatibele Grafik-Controler und Boards 1
µc Boards Vorbereitungen Die o.g. Controller haben eine ganze Palette von Anwendungsmöglichkeiten. Einige davon sind durch die Beschaltung von HW-Steuerpins fest eingestellt, andere können durch Bits in Registern gesteuert werde. - Boards mit dem gleichen Controller können festgelegte unterschiedliche Eigenschaften haben! Z.B. werden Schnittstellenformate damit fest eingestellt : Der Controller kann 8b, 16b, Seriell (SPI), die Hardware ist allerdings auf 8b fest 2
verdrahtet! Die Änderungen sind häufig unmöglich, da die entsprechende Pins durch die Anzeige verdeckt werden. - Die Spannungsversorgung sind ein weiteres Poblem. Original haben die LCDController meist 3,3V Versorgungsspannung. Die Datenpegel entsprechen dieser Spannung. Es gibt Board mit der gleichen Anzeige und dem gleichen Controller, die einen Spannungsregler 5V zu 3,3V enthalten und andere, die mit 3,3V versorgt werden müssen. Beide Leitungen heißen auf der Anschlussleiste VC33! Hier kann ein Fehlanschluss versehentlich Controller und Anzeige zerstören! - Die Datenpegel entsprechen nicht immer der Versorgungsspannung. Es gibt Boards mit 5V Versorgung aber mit 3,3V Datenpegeln. Es gibt auch Boards mit 5V Versorgungsspannung und 5V Datenpegeln (Pegelwandler). - Der Umgang der Hersteller mit unterschiedlichen Pegeln ist problematisch : Bei 3,3V Versorgungsspannung darf der Eingangspegel eine Datenleitung nur unwesentlich höher sein als 3,3V, da sonst die sehr gering belastbare Schutzdiode am Eingang des Schaltkreises zerstört wird: o Manche Hersteller leugnen diesen Zusammenhang und geben die ArduinoAusgänge (ca. 5V /30mA belastbar) direkt auf die Dateneingänge des Controllers. o Andere Hersteller bauen 1k Widerstände in Reihe zu den Eingängen ein, um die Dioden zu schützen. o Wieder andere Hersteller bauen für alle Datenleitungen Pegelwandler ein. - Die UTFT-Library muss wissen mit welchem Prozessor sie arbeitet, dies geschieht durch ein DEFINE (zu finden zu Beginn des UTFT.ccp, neueste Version berücksichtigen!): o AVR_ATmega1280 o o AVR_ATmega2560 AVR_ATmega328P o o AVR_ATmega32U4 AVR_ATmega168 ) O.ä. Einer dieser Ausdrücke muß im Kopf des Anwenderprogramms definiert werden, z.b.: #define AVR_ATmega328P 3
- Die UTFT-Library muss mit INCLUDE verfügbar gemacht werden: #include <UTFT.h> Es wird offensichtlich immer die GESAMTE Library mit eingebunden. Bei Speicherüberlauf finden sich Hinweise, nichtgebrauchte Teile der Library auszukommentieren (NICHT C-KONFORM!). In diesem Fall sollte man eine veränderte Version der Library in das Programm-Verzeichnis kopieren und bei INCLUDE die spitzen Klammern weglassen. Funktionen UTFT(Model,RS,WR,CS,RST); Hauptklasse zur Bildung von Display-Objekten mit Parallel-Schnittstellen UTFT(Model,SDA,SDI,CS,RST[,RS]); Hauptklasse zur Bildung von Display-Objekten mit Serieller Schnittstellen InitLCD([orientation]); Initialisierungdes Schrims, Einstellung der Bildschirm-Orientierung PORTRAIT oder LANDSCAPE, Hintergrundfarbe ist schwarz. 4
clrscr(); Bildschirm löschen, Hintergrundfarbe ist schwarz. getdisplayx(); Ermittelt die Breite des Bildschirms in Pixeln. getdisplayy(); Ermittelt die Höhe des Displays in Pixeln fillscr(r,g,b); Bildschirm mit einer Farbe füllen, r: Rot 0-255, g: grün 0-255, b: blau 0-255 setcolor(r,g,b); Setzen der aktiven Zeichenfarbe für alle Zeichen- und Druckkommandos. Farbtabelle siehe Anhang setcontrast(); Stellt den Kontrast in Schritten von 0-64 ein. getcolour(); Ermittelt die aktuell eingestellte Farbe. setbackcolor(r,g,b); Setzen der Hintergrundfarbe für alle Zeichen- und Druckkommandos. Es können auch die vorfefinierten Konstanten für Farbabstufungen verwendet werden (s. Anhang) Zeichenkommandos drawpixel(x,y); Zeichenen eines Punktes an der Stelle x,y drawline(x1,y1,x2,y2)); Zeichnen einer Linie von x1,y1 nach x2,y2 5
drawrect(x1,y1,x2,y2)); Zeichnen eines Rechtecks untere Ecke x1,y1 zur oberen Ecke x2,y2 drawroundrect(x1,y1,x2,y2)); Zeichnen eines abgerundeten Rechtecks untere Ecke x1,y1 zur oberen Ecke x2,y2 fillrect(x1,y1,x2,y2)); Zeichnen eines gefüllten Rechtecks untere Ecke x1,y1 zur oberen Ecke x2,y2 fillroundrect(x1,y1,x2,y2)); Zeichnen eines gefüllten abgerundeten Rechtecks untere Ecke x1,y1 zur oberen Ecke x2,y2 drawcircle(x,y,radius); Zeichnen eines Kreises an der Stelle x,y mit dem Radius radius. fillcircle(x,y,radius); Zeichnen eines gefüllten Kreises an der Stelle x,y mit dem Radius radius. Ausgabekommandos Vektor-Fonts print(string,x,y[,deg]); Schreibe einen Zeichen-String beginnend bei x,y mit dem Steigungswinkel deg. printnumi(num,x,y,length [,filler]); Schreibe eine Integer-Zahl num beginnend an der Stelle x,y. Mit length kann die minimale Anzahl Stellen angegeben werden. Das erste zeichen nach dem Komma kann mit dem Zeichen filler angegeben werden. X,y können auch miot den Konstanten LEFT, RIGHT, CENTER angegeben werden (Positionierung auf dem Bildschirm). printnumf(num,dec,x,y [,divider[,length[],filler]]); Schreibe eine Float-Zahl num beginnend an der Stelle x,y. Mit ldec kann die Anzahl der NAchkommastellen angegeben werden. Mit divider kann das Zeichen mit der 6
Kommabedeutung angegeben werden. Mit length werden minimale Nachkommastellen angegeben. Mit filler kann das Vorkommazeichen angegeben werden. setfont(fontname); Auswahl der Zeichensatzes für die nachfolgenden print-aufrufe. Weitere Fonts im Anhang. getfont(); Aktuell eingestellten Zeichensatz lesen. getfontxsize(); Breite des eingestellten Zeichensatzes in Pixels einlesen. getfontysize(); Höhe des eingestellten Zeichensatzes in Pixels einlesen. 7
Zeichenkommando Bitmaps drawbitmap(x,y,sx,sy,data [,scale]); Zeichnen einer Bitmap auf den Schirm. X,y bezeicnet die linke obere Ecke des Bilds. Sx, sy bezeichnen Breite und Höhe des Bilds. In data ist der Name (die Anfangsadresse) des DatenArrays mit den Bilddaten. Mit scale lässt sich ein Vergrößerungsfaktor einstellen, jedes Pixel wird mit diesem Faktor multipliziert. drawbitmap(x,y,sx,sy, data, deg,rox, roy); Verdrehtes Zeichnen einer Bitmap auf den Schirm. X,y bezeicnet die linke obere Ecke des Bilds. Sx, sy bezeichnen Breite und Höhe des Bilds. In data ist der Name (die Anfangsadresse) des Daten-Arrays mit den Bilddaten. Mit deg kann man den Roptationsgrad vorgeben. Mit rox, roy kann der Mittelpunkt der Rotaion vorgegeben werden. Ein Tool zur Erzeugung der Arrays für die Bitmaps wird unter Tools mitgeliefert (siehe Anhang). lcdoff(); PCF8833 only lcdon(); PCF8833 only 8
Anhang A. Weitere Zeichensätze Fonts können selbst erstellt werden: How-To: UTFT Fonts 101 http://www.henningkarlsen.com/electronics/h_utft_fonts_101.php Es gibt auch noch weitere bereits erstellt Fonts: http://www.henningkarlsen.com/electronics/r_fonts.php Download über anklicken des entsprechenden Symbols rechts oben in den Kasten. 9
10
11
12
13
14
15
Zeichensätze können eingeschränkt sein (Subset Fonts.). Empfehlung der UFT-Reference: Die Zeichensätze sollten in das Arbeitsverzeichnis kopiert werden. Übrigens werden die Zeichensätze im Programm-FLASH-Speicher untergebracht. B. Mischtabelle für beliebige Farben http://cloford.com/resources/colours/500col.htm Ausschnitt: Literals für VGA-Farben Hinter den Literals verbergen sich die Wertekombinationen r,g,b für den VGA-Farbset. 16
C. Bitmap-Tool zur Erzeugung von Bitmap-Arrays aus Bildern Für die Erzeugung von Bitmaps aus fertigen Bildern liefert UTFT im Tool-Verzeichnis einen Image-Konverter mit. Der kann ein Array der Pixel erzeugen und damit Daten für die drawbitmap-funktionen liefern. 17