Go Down

Topic: [Suche Hilfe]Buttons für TFT mit kapazitivem Touch (SSD1963 ivm FT5206)  (Read 751 times) previous topic - next topic

Lowbird

Hallo Gemeinde!

Ich bin auf der Suche nach einer Hilfestellung.

Zu aller erst eine kleine Vorstellung des Projektes:

Dashboard (2.Steuerstand) für ein 10m Stahlboot. Auf diesem Dashboard sollen die Informationen über Motorparameter (Drehzahl, Temperatur), Diverse Temp-Sensoren, Geschwindigkeit über GPS und evtl Kompassrose über HMC5883L angezeigt werden. Weiterhin sollen über Buttons diverse Aktoren (8-Fach Relaiskarte) gesteuert werden.

Verwendete Hardware:

-Atmega 2560
-7" TFT SSD1693 mit FT5206 kapazitivem Touchcontroller (Display)
-8-fach Relaiskarte (Relais)
-HCM5883L
-Ublox Neo 6m
-DS1820
-DHT 11 bzw 22



Nun zu meinem Problem:
Ich habe das Display mit kapazitivem Touch gekauft, da für mich die Vorteile gegenüber dem resistiven Touch überzeugt haben. Was ich allerdings zu diesem Zeitpunkt nicht wusste ist, dass der kapazitive Touch über I2C angesteuert wird. :-(

Der Sketch im Anhang zeigt, dass die libarys vom Utouch verwendet werden, der wohl offensichtlich nur für resistive Touchcontroller funktioniert.
Der Hersteller hat für das Display mit kapazitivem Touch lediglich ein Sample beigefügt, was zum Testen des Screens genutzt wird. Also dort wo man den TFT berührt wird ein farbiger Punkt gezeichnet. Mir fehlt allerdings das Verständnis dieses für meine Zwecke umzusetzen.

Und jetzt zu meiner Frage:
Ist es möglich, die UButtons ivm dem FT5206 zu nutzen oder muss ich mir a) ein anderes Display mit resistiven Touch besorgen, oder b) auf UButtons verzichten und die gewünschte Funktion im Sketch anders verwirklichen.

Es würde mir schon sehr helfen wenn jemand ein Beispiel für einen funktionierenden Button für die o.g. Kombination hätte, ich würde dann versuchen das in meinen Sketch zu adaptieren.

Sollten noch weitere Informationen von Nöten sein, bitte fragt mich.

Ich danke euch schon mal im Voraus für eure Mühen.

LG Chris

SkobyMobil

Hallo,
"lediglich ein Sample beigefügt, was zum Testen des Screens genutzt wird. Also dort wo man den TFT berührt wird ein farbiger Punkt gezeichnet"

Damit hast Du alles was Du brauchst- aber...

"Mir fehlt allerdings das Verständnis dieses für meine Zwecke umzusetzen.

Und das ist der Punkt"

Bei Deinem Projekt werden Dir noch ganz andere "Sachen" fehlen.

Für Dein Projekt bietet sich ein HMI-Display gerade zu an.
Damit einen Button setzen, der sich mit dem Arduino versteht, dauert nur Minuten- fehlerfrei!

Du machst Dir keine Vorstellung davon, wie schwierig es sein kann, mit einem 0815-TFT, ohne-
ButtonLib, die selbigen zu setzen. Ganz zu schweigen von dem Anderem, was Du noch darstellen möchtest.

Die Power des 2560 wird dazu bei weitem reichen- wenn das TFT sehr sauber bedient wird.
Und das schaffst Du nicht, auch nicht mit Hilfe des Forum!

Und, wenn Du es tatsächlich mit dem TFT machen möchtest, dann mußt Du VORHER genau festlegen
was dargestellt und angezeigt werden soll.
Hinterher wird Dich jede Änderung in die SteinZeit zurück bomben.
Dein TFT ist nach Dir die größte Schwachstelle im Projekt.
Gruß und Spaß
Andreas
die zweite Maus bekommt den Speck...

dony

Hallo Gemeinde!

Ich bin auf der Suche nach einer Hilfestellung.

Zu aller erst eine kleine Vorstellung des Projektes:

Dashboard (2.Steuerstand) für ein 10m Stahlboot. Auf diesem Dashboard sollen die Informationen über Motorparameter (Drehzahl, Temperatur), Diverse Temp-Sensoren, Geschwindigkeit über GPS und evtl Kompassrose über HMC5883L angezeigt werden. Weiterhin sollen über Buttons diverse Aktoren (8-Fach Relaiskarte) gesteuert werden.
Meiner Meinung nach solltest du das Projekt in mehrere kleinere zerlegen zB. so: Funktioniert das Einlesen aller Sensoren schon fehlerfrei und gleichzeitig? Dann: Funktionieren die Aktionen wenn man auf die Taster drückt? Dann: Funktioniert das ganze OHNE TFT (Anzeige auf Seriellen Monitor)?
Wenn du dir diese Fragen alle mit 'ja' beantworten kannst, kannst du mit dem TFT beginnen. imho

lg dony
Newsticker:
Die Änderung meines Abschied Grußes ist Teil meiner Corporate Identity/Design Anpassung.

gregorss

Zu aller erst eine kleine Vorstellung des Projektes:
...
Du schreibst zwar einiges über Dein Vorhaben aber nichts dazu, wie fit Du mit dem ganzen Arduino-Kram bist.

Unabhängig davon schließe ich mich im Großen und Ganzen dony an: Du hast Dir reichlich viel vorgenommen. Beschäftige Dich am besten mit einer Sache nach der anderen. Wenn Du die Dinge einzeln im Griff hast, kannst Du anfangen, sie zu kombinieren.

Gruß

Gregor
DU MUSST DEIN ÄNDERN LEBEN!

DrDiettrich

Besonders schwierig ist es nicht, einen Punkt einem Button o.ä. auf dem Bildschirm zuzuordnen. Aber ohne Vorlage ist ein Anfänger damit aufgeschmissen :-(

Lowbird

Vielen Dank für die zahlreichen Antworten.

Sagen wir mal so, dass Projekt ist insoweit schon soweit fortgeschritten, dass alles bereits funktioniert hat. Alle Sensoren und Aktoren.
Allerdings nicht mit dem selben Touch Controller. Dieser Sketch läuft bereits auf dem exakt selben System, nur mit einen resistiven Touch Controller anstatt einem kapazitivem.

Der Sketch befindet sich auch im ersten Post im Anhang.

Dort sind u.a. die Buttons ja auch bereits gezeichnet und mit Funktionen hinterlegt.

Ihr fragt wie fit ich mit den arduino bin. Nunja, ich würde mich nicht als Profi bezeichnen, allerdings auch nicht mehr als blutigen Anfänger. Daher bat ich ja auch nur um ein kleines Beispiel, was ich dann in meinen Sketch dementsprechend implementieren würde. Sozusagen Hilfe zur Selbsthilfe

Vorausgesetzt jemand nutzt diesen Controllertyp und hat einen funktionierenden Button. Wobei meine Recherchen gezeigt haben, dass der verwendete Controller gar nicht so selten genutzt wird. Ich habe bis Dato keine passende Button libary gefunden, daher die Frage ob jemand es mit den UButton zum laufen bekommen hat. Das wäre die (für mich) einfachste Variante gewesen, da die Struktur und Programmabläufe darauf bereits aufgebaut sind. 

Entschuldigt wenn ich mich nicht klar ausgedrückt habe, ich möchte nicht das jemand meine Arbeit erledigt, es geht mir lediglich um einen Denkanstoß. Der Weg ist das Ziel.

Wenn ihr mir sagt es ist nicht machbar, dann fliegt das Display in den Müll und ich bestelle es dann nochmal mit resistiven Touch, da funktioniert die ganze Sache ja bereits seit über einem Jahr.

Vielen Dank und ein schönes Wochenende

LG Chris


Tommy56

Sagen wir mal so, dass Projekt ist insoweit schon soweit fortgeschritten, dass alles bereits funktioniert hat. Alle Sensoren und Aktoren.
Allerdings nicht mit dem selben Touch Controller. Dieser Sketch läuft bereits auf dem exakt selben System, nur mit einen resistiven Touch Controller anstatt einem kapazitivem.
Da bekommt der alte Satz: "Never touch a running system" ja gleich eine neue Bedeutung ;)

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

gregorss

... es geht mir lediglich um einen Denkanstoß. Der Weg ist das Ziel.
"Never touch a running system"  ist ein ziemlich guter Rat. Ich überlege inzwischen ziemlich lange, ob ich ein laufendes System wirklich ändern möchte. Am besten ist oft, das Bestehende zu lassen, wie es ist, und zusätzliche Funktionen mit zusätzlichen Arduinos zu realisieren. Der Weg ist der Weg und das Ziel ist das Ziel.

HTH

Gregor
DU MUSST DEIN ÄNDERN LEBEN!

Lowbird

Hey Tommy und Gregor,

ich "touche im Normalfall nie ein running System". Es sollte ja ursprünglich eine exakte Kopie von System Nummer Eins sein, allerdings war mir nicht bewusst, dass das kapazitive Controller über I2C gesteuert / angesprochen wird. Daher die Frage ob es dennoch machbar ist, oder ich das Ding im Mülleimer versenken kann.

LG Chris

DrDiettrich

Natürlich ist das machbar. Aber wenn Du schon nicht verstanden hast, wie die alte Version funktioniert, dann kannst Du auch nicht wissen, wie es mit der neuen Version zum Funktionieren gebracht werden kann.

Möchtest Du beim dem Projekt etwas lernen, oder nur mit Copy&Paste zaubern?

Lowbird

Hallo DrDiettrich,

evtl hilfst du mir ja ein wenig auf die Sprünge. Ich habe es ja in der ersten Version zum laufen bekommen, da ich die UButton nutzen konnte. Diese unterstützen den resisitiven Controller aber offensichtlich nicht den Neuen.

Daher denke ich schon zumindest rudimentär zu wissen wie die alte Version funktioniert, da habe ich es ja geschafft.

Und ja, sollte mir jemand auf die Sprünge helfen und ein Beispiel bringen, so werde ich dadurch lernen und es implementieren.

Ich denke ich habe in jedem Post klar gemacht, dass ich nicht erwarte das mir jemand den Sketch schreibt, sondern hatte mir eine kleine Hilfestellung erwartet.

Bitte nicht falsch verstehen, die meisten suggerieren mir durch ihre Antworten es ist machbar, aber haben nicht mal ansatzweise einen Hinweis darauf gegeben wie der zielführende Weg dahin führt. Leider habe ich da offensichtlich bei meiner Fragestellung einen Fehler begangen, dann anders kann ich mir das nicht erklären.

Ich möchte lediglich wissen, hat jemand einen TFT mit einen FT5206 Touchcontroller in Benutzung, welcher eine funktionstüchtige Button libary hat / Buttons drauf laufen hat. Und wenn jemand dieses mit JA beantworten kann, so würde ich mich freuen, wenn er mir helfen könnte.

Danke und einen schönen Restsonntag

DrDiettrich

Momentan fehlt mir jede Idee, was mit der neuen Bibliothek nicht geht, und wie das mit der alten funktioniert hat. Du solltest da ein paar Details nachliefern.

Tommy56

Da ist doch das Beispiel, das bei Touch den roten Punkt zeichnet.
Also bekommt der Arduino vom Touchdisplay die Koordinaten, wo Du drauf gedrückt hast.

Denken wir doch mal darüber nach.

Was ist ein Touchbutton?

Das ist erst mal ein Rechteck (oderKreis/irgendwas), was auf dem Display gezeichnet wird. Das musst Du zeichnen - für jeden Button. Bleiben wir erst mal beim Rechteck. Das ist z.B. definiert durch obere lenke Ecke x,y und Breite, Höhe.

Wenn dann einer drauftippt, bekommst Du die Koordinaten und gehst Deine gezeichneten Buttons der Reihe nach durch und prüfst, ob der Touchpunkt innerhalb der Umgrenzungen des Buttons ist (z.B. wie schon erwähnt obere linke Ecke x,y und Breite, Höhe). Wenn ja, dann machst Du irgendwas, wenn nicht gehst Du zum nächsten Button. Wenn es auf keinen Button macht, wird halt nichts getan.

Das ist in groben Zügen das, was die Buttonlib macht. Das kannst Du problemlos selbst machen - wenn Du willst.
Da ich Dein Touchdisplay nicht habe, kann ich Dir kein Beispiel geben. Wenn Du aber den Ablauf für 1 Button nachvollziehst, wirst Du es verstehen und kannst es ausbauen.

Das ist etwas ausführlicher das, was Dir SkobyMobil in #1 gesagt hat.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Lowbird

Hallo Dr.Diettrich und Tommy,

Dr.Diettrich, das ist es ja genau, es gibt keine neue Bibliothek, sondern nur die UButton. Und die ist laut der Description nicht "von Werk aus" mit dem FT5206 kompatibel. Für den FT5206 habe ich keine eigene gefunden.
Daher meine Frage, ob es grundsätzlich möglich wäre dennoch mit der UButton zu arbeiten.

Womit ich direkt zu Tommy komme....

JA, GENAU! Das ist auch mein Gedanke gewesen... Was eigentlich ist ein Button, nichts anderes als ein gezeichnetes Rechteck oder Kreis, welches mit einer Funktion hinterlegt ist. Das habe ich mit meiner Frage b) aus dem ersten Post gemeint

"oder b) auf UButtons verzichten und die gewünschte Funktion im Sketch anders verwirklichen."

So habe ich es ja bereits im Sketch, welcher im ersten Post angehängt ist, bereits getan. Es sind auch die Funktionen hinterlegt, Egal ober Inverterbutton, oder die Buttons, die die Aktoreen über die Relaiskarte schalten sollen.

Was mir fehlt, was die lib für mich nicht nachvollziehbar macht macht, ist die Abfrage der Koordinaten mit dem Ereignis (x;y treffen auf Button) zu kombinieren.

Aber wenn du sagst das diese Abfrage auch ohne Buttonlib funktioniert, dann werde ich das versuchen umzusetzen.

Danke sehr.

Tommy56

Das ist doch einfache Geometrie:

Button: oben links xb, xb, breite, höhe

Lib sagt: User aht auf x,y getucht:

Code: [Select]

if (x>= xb && x <= xb+breite && y >= yb && yb <= yb+höhe) {
  // Treffer
}

Ausgehend von x,y = 0,0 oben links, sonst umrechnen.

Für das zeichnen gibt es z.B. drawRext/drawfillrect je nach Lib.

Gruß Tommy
"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)

Go Up