Touchdisplay mit Aktionen verknüpfen?

Gast #4856005
Lesenswert?

Guten Abend

Ich habe mit meinem Arduino UNO einen Schaltkreis gemacht, bei dem ich 
über zwei Taster zwei LED's ansteuern kann. Es ist simpel, doch ich 
möchte verstehen wie es geht.

Jetzt möchte ich einen Touchdisplay so programmieren, dass jetzt die 
Taster nur noch virtuell auf dem disply erscheinen. Die Funktionen 
sollen aber beibehalten werden. Also dass ich die Taster über den Touch 
steuern kann.


Kennt ihr eine gute Internetseite, Tutorials, Bücher die mir 
weiterhelfen können?

Danke für eure Antworten!

Auf Youtube habe ich nicht so passendes gefunden.


Freundliche Grüsse

Markus
#4856598
Lesenswert?

Markus schrieb:
> dass jetzt die
> Taster nur noch virtuell auf dem disply erscheinen. Die Funktionen
> sollen aber beibehalten werden
1
+------------------> x
2
|  
3
|  +-------------+
4
|  |             |
5
|  |             |
6
|  | +---+ +---+ |
7
|  | | 1 | | 2 | |
8
|  | +---+ +---+ |
9
|  +-------------+
10
|
11
V
12
y

* du kennst den x-y-Bereich, den je ein Taster einschließt
* du bekommst x- und y-Werte vom Display
* du erkennst, ob für gewisse Zeit in einer der Bereiche berührt wurde
mfg mf
#4856644
Lesenswert?

minifloat hat bereits alles Notwendige gesagt; hier nur nochmal etwas 
ausführlicher:

Zunächst einmal kommt es darauf an, auf welche Weise die grafische 
Benutzeroberfläche (GUI) programmiert werden kann/muss. Das hängt von 
der Library/API ab, die Du dafür verwenden kannst/musst:

FALLS die zur Verfügung stehende Library/API zum Zugriff auf den 
Touchscreen ein primitives Widget Toolkit anbietet, kann man die 
Benutzeroberfläche vglw. komfortabel so programmieren, wie man auch die 
Benutzeroberflächen von normalen PC-Programmen oder Android-Apps 
programmiert: man legt z.B. fest "Ich möchte ein Label mit dem Text 
"blabla" an dieser Koordinate haben, und einen Button der Grösse x/y an 
jener Koordinate." Wenn das Display an einer Stelle berührt wird, wo ein 
Button sein soll, dann bekommt das eigene Programm direkt eine 
Information geliefert a la "Button gedrückt".

Die es hier jedoch um einen Mikrocontroller geht, ist die 
Wahrscheinlichkeit leider sehr hoch, dass die API für den Zugriff auf 
den Touchscreen gar kein derartiges high-level GUI Widget Toolkit 
anbietet, sondern nur low-level-Routinen für das Display um Linien, 
Text, Rechtecke etc. auf das Display zu malen, und weitere 
low-level-Routinen für den Touch-Controller, die Dir bei Berühren des 
Displays eine X/Y-Koordinate nennen.

In diesem Fall musst Du es low-level so machen, wie minifloat es bereits 
knapp skizziert hat:
Angenommen z.B., Du willst einen "Button 1", der button1_width=100 Pixel 
breit und button1_height=50 Pixel hoch ist, und dessen linke obere Ecke 
sich an der X/Y-Koordinate button1_left=10/button1_top=20 Pixel befinden 
soll.
Um den "Button 1" auf dem Display darzustellen, würdest Du dann erst 
einmal ein Rechteck an dieser Koordinate und der gewünschten Breite/Höhe 
zeichnen. Danach vermutlich noch einen Text als Beschriftung des 
Buttons. Wenn nun das Display berührt wird, erhältst Du eine Information 
a la "Display an X/Y-Koordinate touch_x=17/touch_y=39 berührt".
Anhand dieser Informationen kann man nun überprüfen, ob diese Koordinate 
in den rechteckigen Bereich fällt, der Deinen Button repräsentiert:
1
if ((touch_x >= button1_left) && (touch_x < (button1_left + button1_width)) && (touch_y >= button1_top) && (touch_y < (button1_top + button1_height))) {
2
  // Button 1 wurde gedrückt
3
}



Falls Dir diese Art der GUI-Programmierung zu kompliziert ist, dann 
könnte es EVENTUELL einfacher und sinnvoller sein, statt eines 
gewöhnlichen Touch-Displays ein sogenanntes "NEXTION"-Display zu 
verwenden. Bei dieser Art von Display kannst Du die grafische 
Benutzeroberfläche mit allen Buttons etc. ganz simpel und komfortabel 
mit einem PC-Programm designen; zum Anschliessen des Displays an den 
Mikrocontroller wird in diesem Fall dann auch keine endlosen Anzahl von 
Pins benötigt; die gesamte Kommunikation zwischen Mikrocontroller und 
Display geschieht in diesem Fall via serieller Schnittstelle und 
benötigt daher nur 2 Leitungen.
In Anbetracht des Umstandes, dass Du vermutlich noch eher ein Einsteiger 
bist, könnte Dir diese Vorgehensweise deutlich leichter fallen. Wenn Du 
nach "Arduino NEXTION" googlest, wirst Du auch diverse Tutorials etc. 
finden.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren