Kuman 3.5" TFT Startet und läuft sehr Langsam (Projekt: Zusatzinstrument Auto)

Hallo Zusammen,

Achtung: Viel Text und viel Code, ich bin leider nicht gut im “Kurzfassen”. :roll_eyes:

Als blutiger Anfänger im Micro Kontroller Bereich und Maschinenbaukenntnissen im Programmieren hoffe ich nach vergeblichem Googlen auf eure Hilfe/Erfahrungen.

Vorwort:

Ich habe vor in meinem Auto eine Öldruck- und -temperatur-Anzeige nachzurüsten.
Realisieren möchte ich das ganze mit:

Anschluss des Bildschirms lässt sich hoffentlich aus dem Code entnehmen, ansonsten mache ich auch gerne noch ein Bild mit Beschriftung zur Erklärung.

Die Messwerte der Geber werden durch je einen Spannungsteiler mit jeweils 220 Ohm am Analogpin ausgelesen und durch die Berechnungscodes vom lieben Nutzer Jurs (Vielen vielen Dank dafür, falls Du mitließt!!) von einem Messwert am Analogeingang in den jeweiligen Wert verrechnet.
Die Ausgabe der Werte erfolgt durch das TFT Display in Form von zwei Bargraphen und dem jeweiligen Wert.
Zusätzlich soll der jeweilige Maximalwert seit Fahrtbegin unter dem Momentanwert angezeigt werden(Siehe Bild / Momentanwert ist in dem Bild noch nicht eingefügt, ein aktuelleres hab ich grade leider nicht zur Hand, kann ich aber bei Bedarf nachschicken).

Als kleinen “Gag” soll am Anfang ein Startbildschirm auftauchen in dem “Golf 4 V6” formatiert dargestellt wird.

Das alles funktioniert im “Trockenlauf” bisher auch (also ich bekomme die richtigen Werte durch die Formeln und der Display sieht so aus, wie ich es mir wünsche). mit Trockenlauf ist gemeint, dass es noch nicht verbaut ist, da ich möchte, dass vorher alles so funktioniert, wie ich es mir vorstelle.

Nun zu meinem Problem:

Ich habe die Anzeige (also nur den Bargraphen bisher) durch eine for-Schleife ohne Delay zum Test von leer auf voll - von 0 auf 120 °C und von 0 auf 10 Bar - und umgekehrt laufen lassen(for -Schleife in der void Loop()).
Dabei ist ein durchlauf Bsp. 0-10 Bar meiner Meinung nach und für meine Anforderung zu langsam(geschätzt 5 Sekunden oder mehr, muss ich morgen mal genau ermitteln, hab ich eben leider vergessen).
Zum Verständnis:
Beim Auto steht der Druck im Leerlauf bei 1,5 bis 2 Bar soweit ich weiss, kann aber beim Gasgeben auch gerne mal bis 7 hoch gehen und das schnell.

Den Code für die ich sag mal Optik besteht, wie unten zu sehen, größtenteils aus gefüllten Rechtecken. Die Rechtecke für die Bardiagramme verändern sich natürlich durch Variablen je nach Wert. Die Elemente auf dem Bildschirm, die sich nicht verändern, werden in der void Setup() nur einmal initialisiert und nicht bei jedem Loop erneut.

Zudem Langsamen “laufen” kommt dazu dass der Bildschirm relativ lange braucht um sich “hochzufahren”(was mich für den Anfang aber nicht so stört). Also sind es ca. 5-10 Sekunden bis der Startbildschirm kommt bzw. die Anzeigen, wenn ich den Startbildschirm weg lasse. Ein unschönes Störbild(Schnee) kommt bevor der Bildschirm vom Startbildschirm verändert wird.

Ich hoffe mir kann dabei jemand helfen den Bildschirm sowohl in seiner Funktion als auch dem Starten was flotter zu machen, falls das möglich ist (und ggf. den Störbildfehler zu beheben).
Mit meinem Anfängerwissen gehe ich jetzt mal davon aus, dass die for-Schleife eigentlich viel schneller die 244 Pixel rauf und runter klettern sollte, als sie es gerade macht.
Für Verbessungsvorschläge und Kritik(sowohl zu meinem Wissen als auch dem Code/Projekt) bin ich nicht nur offen, sondern sehr Dankbar, ich lerne ja noch und gerne :).

PS: Ich habe mal was gelesen von Seriellem ausgeben und 8-Bit Ausgabe, dabei soll die 8-Bit schneller sein, ich konnte aber bisher leider keine für mich verständliche Erklärung finden was dies genau bedeutet.

Die Funktionen WerteD und WerteT sind noch in Bearbeitung, falls jemand den Code testen mag, bitte den Teil auskommentieren.

Bitte nicht erschrecken, es sind 280 Zeilen Programmiertext, ich kann auch von keinem verlangen sich das im Detail anzuschauen, aber vielleicht fallen Manchen schon im Drüberscrollen grobe Fehler auf die schon viel ausmachen

Gruß und vielen Dank im Voraus!

MK4V6 - Micha

Der Komplette Code liegt im Anhang bereit, will euch ja hier nicht mit so einem Riesen Code zuschmeißen.

#include <Adafruit_GFX.h>               // Core graphics library
#include <Adafruit_TFTLCD.h>            // Hardware-specific library
#include <FreeSans24pt7b.h>             // Font für "Golf 4"
#include <FreeSansBoldOblique24pt7b.h>  // Font für "V6"

#define LCD_CS A3                       // Chip Select goes to Analog 3
#define LCD_CD A2                       // Command/Data goes to Analog 2
#define LCD_WR A1                       // LCD Write goes to Analog 1
#define LCD_RD A0                       // LCD Read goes to Analog 0
#define LCD_RESET A4                    // Can alternately just connect to Arduino's reset pin

                                        // DigitalPin LCD_D1 - LCD_D9 sind an Digital 1-9 des Arduino angeschlossen

#define BLACK   0x0000                  // Vordefinierte Farben
#define BLUE    0x001F
#define RED     0xF800
#define GREEN   0x07E0
#define CYAN    0x07FF
#define MAGENTA 0xF81F
#define YELLOW  0xFFE0
#define WHITE   0xFFFF

Adafruit_TFTLCD tft(LCD_CS, LCD_CD, LCD_WR, LCD_RD, LCD_RESET);

void setup(void) 
{
  Serial.begin(9600);
  tft.reset();

  uint16_t identifier = tft.readID();
  identifier=0x9341;
  tft.begin(identifier);
  
  tft.setRotation(3);
  StartDisp();
  BargraphBG(230);
  }
}

#define ABSZERO 273.15          // Absolute Nulltemperatur in Kelvin
#define MAXANALOGREAD 1023.0    // Definition für Analogeingang
#define ANALOGPIN_T A6          // Analogpin Spannungsteiler Temperatur
#define ANALOGPIN_D A7          // Analogpin Spannungsteiler Druck

TempDruckMonitor.ino (10.2 KB)

Hallo, warum kauft ihr erst, und fragt dann?

Das Kuman 3.5 und das Adafruit_GFX Library Adafruit_TFTLCD Library Zwei Font Librarys aus der Adafruit_GFX

und Bargraph- ist für Dein Projekt zu langsam.

Kaufe Dir ein Nextion 3.5". Das erledigt Dir Deine Grafik in "Echtzeit" Da hast Du keinen Ärger mit. Die sind SauSchnell, glaube mir. Gruß und Spaß Andreas