Forum: Mikrocontroller und Digitale Elektronik Touchdisplay mit Aktionen verknüpfen?


von Markus (Gast)


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

von Achim M. (minifloat)


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

von Joachim S. (oyo)


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.

von Peter D. (peda)


Lesenswert?

Markus schrieb:
> Jetzt möchte ich einen Touchdisplay so programmieren

Welches denn?

Z.B. die EA eDIPTFT enthalten schon Touch-Macros.

von Pandur S. (jetztnicht)


Lesenswert?

> Auf Youtube habe ich nicht so passendes gefunden.

Autsch... Ich haette jetzt eher das Manual des Devices als Ausgangspunkt 
genommen. Aber die Weiten des Internets abzusuchen ist moeglicherweise 
auch ein Weg. Hier grad nicht.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

Markus schrieb:
> 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.

hm ... du hast was gemacht und möchtest nun verstehen wie es geht (was 
du gemacht hast)?

das klingt seltsam.

von Olaf B. (Firma: OBUP) (obrecht)


Lesenswert?

Hi Markus,

wenn Du sehen möchtest wie so etwas als High-Level API 
aussieht/funktioniert: https://ugfx.io/

Gibt auch ein Studio - V. 0.2 in Entwicklung: 
https://community.ugfx.io/blogs/blog/2-%C2%B5gfx-studio-develoment/

mfg

Olaf


P.S.: für nicht kommerzielle Anwendungen kostenlos

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.