Arduino-TFT-Display und Schriftbibliothek

9 Schritt:Schritt 1: Verdrahtung it up Schritt 2: Laden der Bibliotheken (aktualisiert 3/2/15) Schritt 3: Beispielprogramme Schritt 4: Bibliotheksfunktionen und Schriften Schritt 5: Viel Spaß! Schritt 6: Anfragen ... Schritt 7: Anzeigen von Bildern auf einer SD-Karte gespeichert, Schritt 8: Neue schnelle Bibliothek für die ILI9341 basierte TFT-Display mit lauflängencodierten Schriftarten Schritt 9: TFT_ILI9341 Bibliothek aktualisiert 31/7/15

Arduino-TFT-Display und Schriftbibliothek

Ich bin ganz ein Fan des Arduino, da es so viel Software bereits im Internet verfügbar ist, macht dies Abschluss neuer Projekte zu erleichtern!
Kürzlich kaufte ich ein paar billige 1.8 "TFT-Displays für ein Projekt, zunächst konnte ich nicht bekommen sie arbeiten was frustrierend war. Schließlich fand ich, dass die, die ich gekauft hatte, verwendet das Samsung S6D02A1 Treiber-Chip und ich hatte versucht, die falsche Bibliothek verwenden .
Nach einer kurzen Suche im Internet stieß ich auf die Adafruit_QDTech Bibliothek, die wirklich gut funktioniert. Diese Bibliothek wird in Verbindung mit dem Adafruit_GFX Bibliothek verwendet. Nach dem Versuch ein paar Beispiele, die ich war ein wenig enttäuscht, dass nur skaliert blocky Schriftarten zur Verfügung standen - so habe ich die Original-Bibliotheken modifiziert, um einige neue Schriftarten und Funktionen hinzuzufügen.
Aktualisieren 2015.02.02:
Ich habe jetzt soeben einen Treiberbibliothek unten für die 2,2 "TFT QVGA 240x320 Pixel-Display mit dem ILI9341 Treiber. Dies hat Beispielen enthalten.
Aktualisieren 2015.03.02:
Ich habe jetzt für den 1,8 "TFT-Display auf der Basis des ST7735-Treiber zusammen mit Beispielen soeben einen Treiberbibliothek.
Aktualisieren 14/6/2015:
Ich habe eine neue Bibliothek für die 2,2 "TFT QVGA 240x320 Pixel-Display mit dem ILI9341 Treiber hinzu. Diese Bibliothek wird als TFT_ILI9341 und ist eine eigenständige Bibliothek, die nicht die Unterstützung der anderen GFX-Bibliothek braucht. Die Kompatibilität mit dem Adafruit GFX Bibliothek wurde gepflegt Siehe Schritt 8 dieses Instructable.Step. 1: Verdrahtung it up




Ich habe die Arduino UNO und verknüpft es mit dem 1.8 "S6D02A1 basierte Display wie folgt:
UNO + 5V zum Anzeigen Pin 6 (VCC) und Pin 7 (BL) UNO 0V (GND) an Pin 8 (GND) UNO digitalen Stift 7 angezeigt durch einen 1K2 Widerstand an Pin 1 (RST) UNO digitalen Stift 8 über einen 1K2 Anzeigen Widerstand an Pin 3 Anzeigen (D / C) UNO digitalen Stift 9 durch einen 1K2 Widerstand an Pin 2 (CS) UNO digitalen Stift 11 angezeigt durch einen 1K2 Widerstand an Pin 4 (DIN) UNO digitalen Stift 13 angezeigt durch einen 1K2 Widerstand angezeigt Pin 5 (CLK)
Die 1K2 Widerstände erforderlich, um die Anzeige durch die 5 V-Logikpegel von der UNO Beschädigung zu schützen, sind diese begrenzen den Stromfluss. Idealerweise haben wir einen Pegelschieber benutzen konnten, aber die Widerstände funktionieren.
Aktualisieren 2015.02.02
Sie können auch jetzt mit dem 2,2 "QVGA-TFT-SPI-Display auf der Basis des Fahrer ILI9341 Zur Nutzung dieses Display laden die Adatfruit_IL9341_AS und Adafruit_GFX_AS Bibliotheken Schließen Sie das Display an die UNO wie folgt..:
UNO + 5V an Pin 1 (VCC) und Pin 8 (LED) UNO 0V (GND) an Pin 2 (GND) UNO digitalen Pin 7 über einen 1K2 Widerstand Anzeigen zum Anzeigen Pin 4 (RESET) angezeigt werden, fügen Sie einen 1K8 Widerstand von der Anzeige Pin 4 GND UNO digitalen Stift 8 über einen 1K2 Widerstand an Pin 5 (DC / RS) angezeigt werden, fügen Sie einen 1K8 Widerstand von Anzeigestift 5 mit GND UNO digitalen Stift 9 durch einen 1K2 Widerstand an Pin 3 (CS) anzuzeigen, fügen Sie ein 1K8 Widerstand von der Anzeige Pin 3 GND UNO digitalen Stift 11 durch einen 1K2 Widerstand an Pin 6 (SDI / MOSI) angezeigt werden, fügen Sie einen 1K8 Widerstand von Anzeigestift 6 mit GND UNO digitalen Stift 13 durch einen 1K2 Widerstand an Pin 7 angezeigt (SCK ), fügen Sie einen 1K8 Widerstand von der Anzeige Pin 7 GND
Es ist wichtig, die 1K8 Widerstände mit diesem 2.2 GND umfassen "-Anzeige, da es sonst nicht funktioniert. Die 1K2 und 1K8 Widerstände sind ein" Spannungsteiler "als Logikpegelschieber wirkt, so daß der Logikpegel am Display reduziert von 5 V auf rund 3V. Pin 9 des Displays muss nicht bis angeschlossen werden.
Aktualisieren 2015.03.02
Das 1.8 "128x160 Pixel-Display auf der Basis des ST7735-Treiber wird jetzt ebenfalls unterstützt Um diese Anzeige zu verwenden, laden Sie die Adafruit_ST7735_AS und Adafruit_GFX_AS Bibliotheken Schließen Sie das UNO an die Anzeige wie folgt..:
UNO + 5V an Pin 1 (VCC) und Pin 8 (LED) UNO 0V (GND) an Pin 2 (GND) UNO digitalen Stift 7 angezeigt durch einen 1K2 Widerstand an Pin anzuzeigen 4 (RESET) UNO digitalen Stift 8 über einen 1K2 Anzeigen Widerstand an Pin 5 (AO) UNO digitalen Stift 9 angezeigt durch einen 1K2 Widerstand an Pin 3 (CS) UNO digitalen Stift 11 angezeigt durch einen 1K2 Widerstand an Pin 6 (SDI) UNO digitalen Stift 13 angezeigt durch einen 1K2 Widerstand an Pin 7 Anzeigen (SCK) Schritt 2: Laden der Bibliotheken (aktualisiert 3/2/15)


Ich habe die Adafruit Bibliotheken verändert und hinzugefügt die Schriftarten. Die Schriften werden im FLASH gespeichert werden, so verwenden Sie eine Programmraum jedoch eine angemessene Menge an Speicherplatz noch zur Verfügung steht, wenn Sie ausgehen, dann verwenden Sie ein Arduino Mega Board.
Ich bin eigentlich ein Hardware-Designer, so dass die Software-Updates könnten wahrscheinlich verbessert werden, aber sie arbeiten!
Die Zip-Datei enthält die beiden Bibliotheken müssen. Diese haben neue Namen (_AS angehängt) haben, so dass sie mit irgendwelchen Bibliotheken Sie bereits koexistieren. Es gibt 3 Beispielprogramme in der Adafruit_QDTech_AS Bibliothek enthalten.
Ich aktualisiert die Bibliotheken in der Version 5 auf 2015.02.02, jetzt einzelne Zeichensätze können deaktiviert werden, um FLASH-Speicher zu speichern, wenn sie nicht alle benötigt. Um zu verhindern, bestimmte Schriftart-Dateien geladen bearbeiten Sie einfach die Datei "Load_fonts.h" innerhalb des "Adafruit_GFX_AS" Bibliotheksordner. Nur kommentieren Sie die Zeichensätze nicht durch Hinzufügen von // an den Anfang der jeweiligen Zeile benötigt. Auch in Antwort auf eine Frage von einem Leser unten, ich machte die proportionale Schriftarten skalierbar genau wie das Original einfach Adafruit, das macht die Schriften mehr blockartig, aber die Bereitstellung der Skalierungsfaktor nicht mehr als 2 die Schriften immer noch angemessen aussehen. Im Beispiel TFT_Show_Font_ILI9341 verwende ich die Befehle:
tft.setTextSize (1); // Für normal große Schriftarten
tft.setTextSize (2); // Für doppelter Größe Schriftarten
Andere kleinere Verbesserungen vorgenommen wurden, so dass die Schrift Hintergrund wird wie im ursprünglichen Adafruit font gezogen werden. Die Schriftzeichengeschwindigkeit wurde ebenfalls verbessert. Kleinere Verbesserungen haben zu den Schriften gemacht, Schrift 4 hat in der Höhe reduziert wurde leicht überflüssige "Whitespace" und einen Punkt zu entfernen "." hat sich auf die in der großen Schriftart 6 Zeichen hinzugefügt.
Kleinere Verbesserungen zu den Schriften wurden unternommen und neue weise Skizzen wurden hinzugefügt, um alle Schrift characters.Step 3 zeigen: Beispielprogramme

Arduino-TFT-Display und Schriftbibliothek

Arduino-TFT-Display und Schriftbibliothek

Die Beispielprogramme sind:
TFT_Rainbow - einige Beispiele für Zeichnen Sie die Schriften auf dem Display TFT_Clock - eine analoge Uhr mit den Standard Adafruit Grafikroutinen sowie eine zentrierte Textzeile in Font 4 TFT_Clock_Digital gezogen - eine digitale Uhr mit Hilfe der 7-Segmentanzeige Schriftart und andere Schriftzeichen Beispiele. TFT_Show_Font - zeichnet die verschiedenen Schriftarten und Zeichen auf der screenStep 4: Bibliotheksfunktionen und Schriften


Hier sind die Bibliotheksfunktionen, die aufgerufen werden können:
int drawUnicode (unsigned int Unicode, int x, int y, int size); int drawNumber (lang long_num, int POX, int POY, int size); int drawChar (char c, int x, int y, int size); int drawString (char * string, int POX, int POY, int size); int drawCentreString (char * string, int dX int POY, int size); int drawRightString (char * string, int dX int POY, int size); int drawFloat (float floatNumber, int Dezimal, Pox int, int POY, int size);
Zusammenfassend sind die Parameter X und Y die Koordinaten für die Zeichnung.
Jede Funktion gibt die X-Position delta zum Ende der gedruckten Zeichen.
"Größe" ist die Schriftgröße:
Nur Schriftnummern 2,4,6,7 gelten Font 6 enthält nur Zeichen [Leerzeichen] 0 1 2 3 4 5 6 7 8 9 -. : Apm Font 7 ist ein 7-Segment-Schrift und enthält nur Zeichen [Leerzeichen] 0 1 2 3 4 5 6 7 8 9:.
Die Schriften sind Proportional, ein verbessertes Aussehen zu geben.
Die Routine für Gleitkommazahlen verwendet einen Parameter "Dezimal", die die Anzahl der Nachkommastellen, um zu zeigen, unterstützt dies die Formatierung und Anzeige von Sensormesswerte definiert, wird die Zahl aufgerundet, so zum Beispiel, wenn Dezimal = 3, dann 3,14159 als 3,142 anzuzeigen und 3.14 als 3.140 Anzeigen
drawCentreString die Schnur um die x-Position zu zentrieren. bequem für ordentlich Display Formatierung
drawRightString wird die Zeichenfolge rechtsbündig in die x-Position, die für Etiketten, die von Sensormesswerte danach gedruckt gefolgt sind zu ziehen.
Aktualisieren 2015.02.02:
Hinzugefügt neue Bibliothek "Adafruit_ILI9341_AS" so ein 2,2 "TFT 240x320 Pixel-Display kann auch verwendet werden.
Alle Schriften können nun skaliert werden:
tft.setTextSize (1); // Für normal große Schriftarten
tft.setTextSize (2); // Für doppelter Größe Schriftarten
Auch:
drawUnicode (unsigned int Unicode, int x, int y, int size)
ist nicht mehr in den aktuellen Bibliotheken, nutzen Sie bitte:
drawChar (char c, int x, int y, int size)
instead.Step 5: Viel Spaß!

Arduino-TFT-Display und Schriftbibliothek

Ich hoffe, dass Sie dies Instructable nützlich finden!
PS Ich bin bin nicht mit Adafruit verbunden ist, aber prüfen, ihre großartige Produkte und suchen Sie den Support über die Verwendung der Standard-Grafik-Bibliothek-Funktionen (diese bleiben innerhalb der angepasste Bibliotheken) .Schritt 6: Anfragen ...


Hier haben wir einige Antworten auf Anfragen:
1. Ein Ersatz Font32.c-Datei mit der Grave-Akzent als ein Grad-Symbol gezogen.
2. Eine Skizze, die eine Funktion, um Text zur nächsten Zeile oder zurück an die Spitze wickeln hat.
Eine schnellere Zeichnungs ILI9341 Bibliothek, um zu versuchen mit allen ATmega328 basiert Arduino kann, um meine Instructable here.Step 7 gefundenen angebracht werden: Anzeigen von Bildern auf einer SD-Karte gespeichert,

Arduino-TFT-Display und Schriftbibliothek

Ich habe jetzt ein neues Instructable zum Zeichnen von Bitmaps auf einer SD-Karte auf dem Display gespeicherten Bilddateien:
http: //www.instructables.com/id/Arduino-TFT-displa ...
Dies ist mit der ILI9341 Treiber basierte TFT boards.Step 8 kompatibel: Neue schnelle Bibliothek für die ILI9341 basierte TFT-Display mit lauflängencodierten Schriftarten


Diese neue Bibliothek ist eine Standalone-Bibliothek, die die TFT-Treiber sowie die Grafikfunktionen und Schriften, die in der GFX-Bibliothek wurden enthält. Diese Bibliothek hat signifikante Performance-Verbesserungen, wenn sie mit einem UNO verwendet (oder ATmega328 basiert Arduino) und MEGA.
Beispiele werden mit der Bibliothek, einschließlich Grafiken Testprogramme enthalten. Das Beispiel Skizze TFT_Rainbow_one zeigt verschiedene Möglichkeiten der Verwendung der Schrift Support-Funktionen. Diese Bibliothek unterstützt jetzt die "print" Bibliothek, so dass die Formatierungsfunktionen der "print" Bibliothek verwendet werden, um beispielsweise an den TFT in Hexadezimal zu drucken, zum Beispiel:
tft.println (57.005, HEX);
Die größeren Schriften werden jetzt lauflängencodierten (RLE), so dass sie weniger Platz einnehmen FLASH, befreit dies Raum für den Rest der Skizze. Ein Nebenprodukt der RLE Ansatz ist, dass die Schriftzeichen wird auch beschleunigt, so ist es eine Win-Win-Situation.
Eine neue 72 Punkt großen Schrift 8 wurde hinzugefügt, [Leerzeichen] 1234567890 enthält :. Charaktere.
Um die F_AS_T Performance-Option die ILI9341 basierte Display muss an eine UNO wie folgt angeschlossen sein:
UNO + 5V an Pin 1 (VCC) und Pin 8 (LED) UNO 0V (GND) an Pin 2 (GND) UNO digitalen Pin 7 über einen 1K2 Widerstand Anzeigen zum Anzeigen Pin 4 (RESET) angezeigt werden, fügen Sie einen 1K8 Widerstand von der Anzeige Pin 4 GND UNO digitalen Stift 9 durch einen 1K2 Widerstand an Pin 5 (DC / RS) angezeigt werden, fügen Sie einen 1K8 Widerstand von Anzeigestift 5 mit GND UNO digitalen Stift 10 durch einen 1K2 Widerstand an Pin 3 (CS) anzuzeigen, fügen Sie ein 1K8 Widerstand von der Anzeige Pin 3 GND UNO digitalen Stift 11 durch einen 1K2 Widerstand an Pin 6 (SDI / MOSI) angezeigt werden, fügen Sie einen 1K8 Widerstand von Anzeigestift 6 mit GND UNO digitalen Stift 13 durch einen 1K2 Widerstand an Pin 7 angezeigt (SCK ), fügen Sie einen 1K8 Widerstand von der Anzeige Pin 7 GND
Bei Verwendung eines UNO an Pin 10 und DC-Leitung an Pin 9 muss der CS-Leitung angeschlossen werden, ist dies, weil der optimierten Code benutzt direkten Port-Zugriff.
Bei Verwendung der UNO kommentieren Sie die MEGA_TFT_ILI9341 #define in der Bibliothek Run_faster.h Datei.
Diese Bibliothek unterstützt nur Hardware-SPI, so Stifte 11 und 13 auf der UNO zu verwenden, wie oben aufgeführt werden.
Um die F_AS_T Performance-Option die ILI9341 basierte Display muss an eine MEGA wie folgt angeschlossen sein:
MEGA + 5V an Pin 1 (VCC) und Pin 8 (LED) UNO 0V (GND) zum Anzeigen Anzeigen Pin 2 (GND) MEGA digitalen Stift 44 durch einen 1K2 Widerstand zum Anzeigen Pin 4 (RESET), fügen Sie einen 1K8 Widerstand von der Anzeige Pin 4 GND MEGA digitalen Stift 48 durch einen 1K2 Widerstand an Pin 5 (DC / RS) angezeigt werden, fügen Sie einen 1K8 Widerstand von Anzeigestift 5 mit GND MEGA digitalen Stift 47 durch einen 1K2 Widerstand zum Anzeigen Pin 3 (CS), fügen Sie ein 1K8 Widerstand von der Anzeige Pin 3 GND MEGA digitalen Stift 51 durch einen 1K2 Widerstand zum Anzeigen Pin 6 (SDI / MOSI), fügen Sie einen 1K8 Widerstand von Anzeigestift 6 mit GND MEGA digitalen Stift 52 durch einen 1K2 Widerstand an Pin 7 angezeigt (SCK ), fügen Sie einen 1K8 Widerstand von der Anzeige Pin 7 GND
Bei der Verwendung eines MEGA die CS-Leitung muss an Stift 47 und DC-Leitung angeschlossen werden an Pin 48, ist dies, weil der optimierte Code verwendet direkten Port-Zugriff.
Bei Verwendung der MEGA sorgen MEGA_TFT_ILI9341 #define in der Bibliothek Run_faster.h Datei nicht auskommentiert.
Diese Bibliothek unterstützt nur Hardware-SPI, so Stifte 51 und 52 auf der MEGA verwendet, wie oben aufgeführt werden.
In der Bibliothek Schriftart 0 (GLCD Schrift), 2, 4, 6 und 8 sind aktiviert. Bearbeiten Sie die Load_fonts.h Datei innerhalb des Bibliotheksordner zu deaktivieren Schriftarten aktivieren / um Platz zu sparen.
Denken Sie daran: Deaktivieren von Schriftarten spart FLASH Raum, und deaktivieren Sie bedeutet, dass sie nicht angezeigt werden!
TFT_ILI9341 Bibliothek auf 1. Juli 2015 aktualisiert auf Version 12, ist diese neueste Version hier angebracht zu Schritt 8:
    Kleinere Fehler beim Rendern Buchstaben "T" in der Schrift 4 ohne feste Hintergrund RLE-Schriften werden jetzt ohne Überlappung gerendert (verbessert die Rendergeschwindigkeit und stoppt Flicker benachbarter Zeichen)

Schritt 9: TFT_ILI9341 Bibliothek aktualisiert 31/7/15


TFT_ILI9341 Bibliothek wurde auf Version 14 Beta aktualisiert wurde, ist diese neueste Version unten angehängt.
1. Text algnment, das Datum für das Zeichnen Strings und Zahlen können mit einer neuen Funktion geändert werden: tft.setTextDatum (Nullpunkt); Beispiel ansehen Skizze enthalten "TFT_String_Align"
2. Leistungsverbesserungen, insbesondere Strichzeichnung ist jetzt viel schneller (Dank Spellbuilder)
3. Es gibt eine neue Datei "User_Setup.h" in der Bibliothek, in der alle Einstellungen gesteuert werden können, z. B. Stifte für die TFT-Schnittstelle verwendet und die Schriften geladen. Siehe die Kommentare in der Header-Datei. Die Stifte werden in diesem Header definiert, um die kundenspezifische Bibliothek die Stift Referenzen müssen von Legacy-Skizzen entfernt werden berufen, so heißt es: TFT_ILI9341 tft = TFT_ILI9341 (); // Rufe benutzerdefinierte Bibliothek
4. Die FastPin.h Header aus dem FastLED Bibliothek übernommen, ermöglicht dies irgendwelche Steuerstifte für CS, DC und RST, während noch immer die beste Stift Knebel Leistung verwendet werden (dank Marstom)
Diese v14b ist eine Beta-Version, da es ein kleiner Fehler in der drawFloat () Funktion, die ich brauche, um zu beheben!
Diese Bibliothek ist für meine eigenen Hobbyeinsatz entwickelt. Wenn Sie ein Problem mit ihm zu tun, dann bitte melden Sie Fehler hier. TTFN