TFT Display im Querformat betreiben

Moin liebe Community,

ich versuche schon seit mehreren Tagen mein TFT Touch Shield im Querformat zu betreiben.

Ich bin totaler Neuling in dem Arduino-Bereich und benötige den Arduino für ein Projekt im Studium. Für das Projekt möchte ich Druck und Temperatur mit einem Sensor messen können. Dies klappt soweit auch, wie im angehängten Bild zusehen. Leider klappt es aber nur im Hochformat, ich kann das Display jedoch nur quer montieren, wie kann ich das Bild des TFT Displays im Querformat anzeigen lassen?

Folgende Hardware benutze ich dafür:

  • Arduino Uno
  • 2.8" TFT Touch Shield V2.1 von Seeed Studio
  • Screw Shield von Seeed Studio
  • Druck- und Temperatursensor “STS ATM/T”

Folgende Anleitung wurde verwendet:

Ich benutze die Library “TFT_Touch_Shield_V2” bzw. “TFTv2.h” aus der Anleitung.

Ist das überhaupt mit der Library möglich oder brauche ich die UTFT oder die Adafruit_ILI9341?
Mit den beiden habe ich es schon versucht, jedoch bekomme ich damit das Display nicht ans laufen, das Display bleibt weiß.

Vielen Dank im Voraus!

Den folgenden Code habe ich verwendet:

#include <stdint.h>
#include <TFTv2.h>
#include <SPI.h>
int Pout = A4;
int Tout = A5;
int Druck;
int Temp;
int Temp2;

void setup()
{
    TFT_BL_ON;                                 
    Tft.TFTinit();                                  
    Tft.drawString("Druck",20,10,3,WHITE);
    Tft.drawString("bar",100,50,3,WHITE);
    Tft.drawString("Temperatur",20,130,3,WHITE);
    Tft.drawString("K",135,170,3,WHITE);
    Tft.drawString("Temperatur",20,255,3,WHITE);
    Tft.drawString("C",129,295,3,WHITE);
    Tft.setPixel(120,296,WHITE);              // ° von °C zeichnen
    Tft.setPixel(121,296,WHITE);
    Tft.setPixel(122,296,WHITE);
    Tft.setPixel(123,296,WHITE);
    Tft.setPixel(124,296,WHITE);
    Tft.setPixel(125,296,WHITE);
    Tft.setPixel(126,296,WHITE);
    Tft.setPixel(121,295,WHITE);
    Tft.setPixel(122,295,WHITE);
    Tft.setPixel(123,295,WHITE);
    Tft.setPixel(124,295,WHITE);
    Tft.setPixel(125,295,WHITE);
    Tft.setPixel(119,297,WHITE);
    Tft.setPixel(119,298,WHITE);
    Tft.setPixel(119,299,WHITE);
    Tft.setPixel(119,300,WHITE);
    Tft.setPixel(119,301,WHITE);
    Tft.setPixel(120,296,WHITE);
    Tft.setPixel(120,297,WHITE);
    Tft.setPixel(120,298,WHITE);
    Tft.setPixel(120,299,WHITE);
    Tft.setPixel(120,300,WHITE);
    Tft.setPixel(120,301,WHITE);
    Tft.setPixel(120,302,WHITE);
    Tft.setPixel(121,302,WHITE);
    Tft.setPixel(122,302,WHITE);
    Tft.setPixel(123,302,WHITE);
    Tft.setPixel(124,302,WHITE);
    Tft.setPixel(125,302,WHITE);
    Tft.setPixel(126,302,WHITE);
    Tft.setPixel(121,303,WHITE);
    Tft.setPixel(122,303,WHITE);
    Tft.setPixel(123,303,WHITE);
    Tft.setPixel(124,303,WHITE);
    Tft.setPixel(125,303,WHITE);
    Tft.setPixel(126,301,WHITE);
    Tft.setPixel(126,300,WHITE);
    Tft.setPixel(126,299,WHITE);
    Tft.setPixel(126,298,WHITE);
    Tft.setPixel(126,297,WHITE);
    Tft.setPixel(126,296,WHITE);
    Tft.setPixel(127,301,WHITE);
    Tft.setPixel(127,300,WHITE);
    Tft.setPixel(127,299,WHITE);
    Tft.setPixel(127,298,WHITE);
    Tft.setPixel(127,297,WHITE);
    
    Serial.begin(9600);
    
}

void loop()
{

float  mVDruck = analogRead(Pout);
float  mVTemp = analogRead(Tout);
float  mVTemp2 = analogRead(Tout);
float VDruck = mVDruck/1000;
float VTemp = mVTemp/1000;
float VTemp2 = mVTemp2/1000;
float Druck = 2.4987*VDruck+0.996;
float Temp = 293.09*VTemp + 288.4;
float Temp2 = 293.09*VTemp2 + 15.25;
  
Tft.drawFloat(Druck, 2, 20, 50, 3, WHITE);
Tft.drawFloat(Temp, 2, 20, 170, 3, WHITE);
Tft.drawFloat(Temp2, 2, 20, 295, 3, WHITE); // draw a float number: 1.2345 Location: (0, 250), size: 4, decimal: 4, color: RED
  Serial.print(Temp);
  Serial.print(" ,");
  Serial.print(Temp2);
  Serial.print(" ,");

  Serial.print(Druck, 2);
  Serial.print(", ");
  Serial.print(millis()/1000);
  delay(1500);
  Tft.drawFloat(Druck, 2, 20, 50, 3, BLACK);
  Tft.drawFloat(Temp, 2, 20, 170, 3, BLACK);
  Tft.drawFloat(Temp2, 2, 20, 295, 3, BLACK);
}

Projektneu.ino (3.37 KB)

Setze Deinen Code bitte direkt ins Forum. Benutze dazu Codetags (</>-Button oben links im Forumseditor oder [code] davor und [/code] dahinter ohne *).
Das kannst Du auch noch nachträglich ändern.

Gruß Tommy

Wenn sich die Bibliothek nicht direkt auf Querformat umstellen läßt, brauchst Du eine andere Bibliothek. Wenn das Problem aber im Display-Controller liegt, an den das Display im Hochformat angeschlossen ist, dann hilft IMO nur noch ein anderes (horizontales) Display.

mks_fn:
Ist das überhaupt mit der Library möglich ...

Soweit ich das sehen kann, gibt es in der Bibliothek keine Option dafür, also nein.

Ich habe ein Display mit ILI9341, da läßt sich die Anzeigerichtung mit der Adafruit-Bibliothek einstellen.

Vielen Dank für eure Antworten!

Ich habe die UTFT Bibliothek jetzt am laufen, das ändern zwischen Hoch- und Querformat und die Textausgabe funktionieren erstmal grob.

#include <UTFT.h>

extern uint8_t BigFont[];


UTFT myGLCD(ILI9341_S5P,11,13,5,0,6); 

void setup() {
  // put your setup code here, to run once:
 
 
 myGLCD.InitLCD();
 myGLCD.setFont(BigFont);

}

void loop() {
  // put your main code here, to run repeatedly:
myGLCD.clrScr();
myGLCD.drawPixel(10,10);
myGLCD.print("Druck", 0, 10);
myGLCD.print("Temperatur", 0, 30);
myGLCD.print("Temperatur", 0, 60);

}

Ist es mit dieser Bibliothek überhaupt möglich Analogwerte einzulesen und mein obiges Porgramm auf die Bib zu ändern oder benötige ich die Adafruit-Bibliothek?

Das ist eine Warnung, die kannst Du an dieser Stelle ignorieren.

Gruß Tommy

mks_fn:
Ist es mit dieser Bibliothek überhaupt möglich Analogwerte einzulesen

Das hat doch nichts mit der Display Bibliothek zu tun