Forum: Mikrocontroller und Digitale Elektronik Anfänger braucht hilfe beim Auswerten eines Touchscreen


von Stefan Z. (Firma: keine) (stefan69)


Lesenswert?

Hallo allerseits,

ich kann mich beim besten Willen nicht als Programmierer nennen, ich 
habe ledeglich mit Bascom Programme geschrieben für LED dimmen, 
Dosieranlage und einen Aqua-PC.

Jetzt habe ich mir das Board D083 von Display3000 gekauft. Ist mit einem 
ATMega 2560 und einem Touchscreen (320x230 Pixel). Das mitgeliefert 
Demoprog habe ich auf meine Bedürfnisse zurecht geschreiben aber mit dem 
Touch komme ich überhaupt nicht klar.

Das Touch wird angesprochen und die x und y Pos. werden in Touch_ypos 
und Touch_xpos geschrieben, sind als Word inizialisiert. Bis hier ist 
alles klar. Wenn ich aber jetzt einen Bereich abfragen will komme ich 
nicht weiter.
Mit:

if Touch_xpos = 0 to 100 then
   if Touch_ypos = 0 to 50 then
   gosub incr pwm_wert_blue
   else next
   end if
end if

gehts nicht.

Das Problem ist, das Bascom mit Wert TO Wert nicht`s anfangen kann, mit 
einem einzelnem Pixel geht`s, ist aber extrem schwer zu treffen. Ausser 
dem will ich ja einen Bereich im Display abfragen und nich nur ein 
Pixel.

Über Hilfe würde ich mich sehr freuen, zudem ich schon fast die ganze 
Nacht damit verbracht habe.

im voraus vielen Dank,

Gruss Stefan

von Holger W. (holgerw)


Lesenswert?

ich kenn mich mit Bascom nicht aus aber irgendwie so:
if ((Touch_xpos > 0) and (Touch_xpos < 100))
 if ((Touch_ypos > 0) and (Touch_ypos < 50))

Holger

von Stefan Z. (Firma: keine) (stefan69)


Lesenswert?

Hi,

daran habe ich auch gedacht, aber wenn ich weiter rechts einen Abfrage 
machen möchte überlagert das doch die erste Abfrage weiter links, oder 
irre ich mich.

Gruss Stefan

von Krapao (Gast)


Lesenswert?

Das sieht nach einem misslungenen Versuch aus eine geschachtelte FOR 
NEXT Konstruktion aus einem Beispiel in ein eigenes Beispiel mit IF ELSE 
Konstruktion umzumodeln. Da fehlen die Grundkenntnisse der BASCOM 
Programmiersprache, die man sich aber in paar Abenden beibringen kann.

von Stefan Z. (Firma: keine) (stefan69)


Lesenswert?

Hy,

da hast du sicherlich recht und bis her bin ich mit meinen Projekten 
gewachsen. Regional habe ich nach Kursen gesucht, gibt`s hier nicht. 
Auch gibt es hier keinen der mit Bascom arbeitet, und da ich mit Bascom 
angefangen habe möchte ich ungerne neu oder andere lernen. Die einzigen 
die hier sind arbeiten alle mit C oder in Binar.
Problem ist halt, wie will man(n) es erlernen wenn es keiner wirklich 
verständlich evtl. mit Beispielen erklärt. Für mich ist Verstehen die 
Basis des lernen`s.

Soll jetzt aber kein Angriff sein, bitte nicht falsch verstehen.

Gruss Stefan

von ich (Gast)


Lesenswert?

Holger W. schrieb:
> Autor:
>
>         Holger W.
>         (holgerw)
>
>       ich kenn mich mit Bascom nicht aus aber irgendwie so:
> if ((Touch_xpos > 0) and (Touch_xpos < 100))
>  if ((Touch_ypos > 0) and (Touch_ypos < 50))
>
> Holger


Die Antwort von Holger W. beschreibt doch genau das, was du willst.
Das Umformen, dass bascom dieses akzeptiert schaffst du mit der 
Bascom-Hilfe (ich meine da speziell die Klammern und die Notwendigkeite 
eines THEN)

Deinen Einwand, dass sich etwas überlagert, wenn du einen Bereich weiter 
rechts erkennen willst verstehe ich nicht.
Nur mal die x-Koordinaten genommen, kannst du doch mit einer Auswertung 
abfragen, ob der festgestellte X-Wert zwischen 0 und 100 liegt und 
andernfalls ob er nicht zwischen 150 und 200 liegt.

Da überlagert sich nichts, es sei denn deine Bereiche überlagern sich 
schon von vornherein.


Gruß ich

von Matthias S. (mat-sche)


Lesenswert?

hi,

schau mal unter www.roboternetz.de.
dort gibt es programme zum auslesen eines touchscreens, welches ich auch 
erfolgreich nutze.
Und hier ne AN: 
http://www.mcselec.com/index.php?option=com_content&task=view&id=189&Itemid=57
Gruß MAT

von Karl H. (kbuchegg)


Lesenswert?

Stefan Zuber schrieb:
> Hy,
>
> da hast du sicherlich recht und bis her bin ich mit meinen Projekten
> gewachsen. Regional habe ich nach Kursen gesucht, gibt`s hier nicht.

Na ja.

Um zu sehen, dass hier
1
if Touch_xpos = 0 to 100 then
2
   if Touch_ypos = 0 to 50 then
3
   gosub incr pwm_wert_blue
4
   else next
5
   end if
6
end if
das "next" völlig in der Luft hängt und zu keinem "for" gehört, braucht 
es nicht wirklich einen Kurs. Das in einem "if" kein "to" kommen kann 
ist banales Grundlagenwissen. Wenn man in einem if auf einen Bereich 
prüfen will, dann prüft man immer ob man größer als die untere Grenze 
ist UND kleiner als die obere Grenze ist. Machst du doch auch nicht 
anders. Der Preis für ein Bier (4 Euro) liegt im Bereich von 1 Euro bis 
10 Euro, weil 4 größer als 1 UND 4 kleiner als 10 ist. Du weißt ja auch 
nicht irgendwie magisch, dass 4 im Bereich 1 bis 10 liegt, sondern 
vergleichst kurz im Kopf mit den Grenzen.

Schreibs halt mal ordentlich hin, dann sieht man auch was. Pro Zeile 
EINE Anweisung und sauebere Einrückung wirken oft Wunder wenn es um 
Übersicht geht
1
  if Touch_xpos = 0 to 100 then
2
    if Touch_ypos = 0 to 50 then
3
      gosub incr pwm_wert_blue
4
    else
5
      next
6
    end if
7
  end if

zu welchem for gehört das Next? Antwort: Es gibt gar keines.

von Holger W. (holgerw)


Lesenswert?

Das Internet ist aber voll damit.
Nicht schön, aber fang doch mal so an
if Touch_xpos > 0
 if Touch_xpos < 100
  if Touch_ypos > 0
   if Touch_ypos < 50
     ... dann mach was

von Stefan Z. (Firma: keine) (stefan69)


Lesenswert?

@ Karl Heinz Buchegger

du hast recht, so habe ich es nicht gesehen. Werde mit dem Programmieren 
nochmal von vorne anfangen. Aber jetzt gehe ich erst mal ins Bett, 29 
Stunden ohne packt wohl mein Hirn nicht ohne weiteres.

@ Matthias
Danke, werde ich mir einverleiben.

@ ich und Holger

ihr habt recht, das war die Lösung entsprechend aufgebaut funzt das 
prima.

@ all

Vielen Danke an alle, Problem gelöst, wenn`s auch eigentlich einfach 
war, naja, Wald vor lauter Bäume nicht gesehen. Und gelernt habe ich 
auch noch, nämlich das ich noch SEHR VIEL zu lernen habe. Vieleicht gibt 
es Online-Kurse und Bücher sollte ich auch mal kaufen und nicht immer 
nur google quälen.
Also, ncohmal vielen Dank,

Schönes WE und Grüße,

Stefan

von Krapao (Gast)


Lesenswert?

Face-to-Face Kurs wäre natürlich schon, weil dann direkt auf Fragen 
eingegangen werden kann. Aber auch Selbstlernen z.B. aus Büchern ist 
möglich. Roboternetz hat da eine kommentierte Liste: 
http://www.rn-wissen.de/index.php/Buchvorstellungen

von Stefan Z. (Firma: keine) (stefan69)


Lesenswert?

Danke für den Tipp Krapao,

werde ich berücksichtigen,

unter
http://www.electronic-projects.de/index.php?option=com_content&view=article&id=49&Itemid=74

kann ich ja schonmal anfangen.

Gruss Stefan

von Karl H. (kbuchegg)


Lesenswert?

Stefan Zuber schrieb:

> es Online-Kurse und Bücher sollte ich auch mal kaufen und nicht immer
> nur google quälen.

Dazu möcht ich noch was sagen.

Google ist super, wenn man ein Detailproblem (wie zb Syntax) hat.

Aber um generelle Strategien zu lernen, kannst du Google vergessen.

Was aber vielen tatsächlich hilft:
Wenn sie die Programme anderer studieren! Sowohl im Guten als auch im 
Schlechten.

Aber man muss die Programme auch wirklich studieren und nicht einfach 
nur auf den µC brennen, sich zurücklehnen und sagen: Jawohl 
funktioniert.

Studieren heisst jede Zeile, jede Anweisung durchgehen und überlegen: 
Warum macht er das, was steckt da dahinter, welches ist die Idee die 
sich hier manifestiert.
Wenn man dann auf Sprachkonstrukte stösst, die man nicht kennt, dann 
kann man Goggle bemühen, auch wenn man mit der in BASCOM eingebauten 
Hilfe oft besser bedient ist. Dort stösst man dann eventuell wieder auf 
neue Sprachkonstrukte, die es zu ergründen gilt.
Studieren heisst auch, die vorgefundenen Programme mal etwas abzuwandeln 
um zu überprüfen ob man das gelesene auch wirklich verstanden hat oder 
ob man sich in einer Idee verrannt hat.

Programmieren lernen ist wie Schachspielen. Es ist eine Sache, zu lernen 
wie die Figuren ziehen. Aber Spielstrategie, typische Konstellationen, 
typische Verhaltensweisen lernt man, indem man andere Partien studiert 
und vor allen Dingen: indem man selber spielt. Du kannst unzählige 
Schachbücher lesen und unzählige Kurse besuchen, solange du nicht selber 
spielst (und auch verlierst), wirst du nie besser.

von Krapao (Gast)


Lesenswert?

> http://www.electronic-projects.de/index.php?option...

Finde ich nicht gut. Dein Problem mit der Bedingung beim if wäre mit 
dieser Seite nicht gelöst.

IMHO hat BASCOM vom Haus, d.h. vom Hersteller her, das Problem, dass die 
Sprache nicht umfassend beschrieben ist. Die Beschreibung ist ein Mix 
aus grober Beschreibung und ein paar Beispielen. Das ist schade, weil so 
viel Potential verschleudert wird.

Obige Seite dreht den Spieß nochmal in der Wunde. Sie stellt einen 
Beispielauschnitt (!) voran und "erklärt" daran die Sprachsyntax.

von Rolf H. (flash01)


Lesenswert?

Ja, so wie Karl Heinz Buchegger es darstellt, denke ich auch!
Darum schlage ich mich auch tagelang mit der Tasten-Entprellung
herum, obwohl ich im Momment dafür noch keine Anwendung habe.
Aber das kann noch kommen.
Habe auch ca. 1 Jahr mit Bascom rumgedattelt, wollte aber weiter
in die Tiefe eines AVR und das erreicht man einfach toll mit Assembler.

Grüße

Rolf

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.