Arduino Forum

International => Deutsch => Topic started by: Tiesl on Aug 23, 2011, 12:38 pm

Title: Watterott MI0283QT-2 - Probleme mit ASCII-code
Post by: Tiesl on Aug 23, 2011, 12:38 pm
Hallo,

ich besitze das tolle Touch-Display von Watterott. Es ist gigantisch zu erleben, wie sehr ein Projekt dadurch aufgewertet wird (Resultat der Iphone-Gesellschaft ;) ).
Leider habe ich Probleme mit der Darstellung von Ascii-Zeichen, die im HEX-Format vorliegen.

Angenommen eine Variable "acsiizeichen" sei als byte deklariert. Dieser wird der Wert 0x41 zugeordnet.
Der Code:

Code: [Select]
lcd.drawText(45, 135, (asciizeichen, BYTE), 1, COLOR_BLACK, COLOR_WHITE);
   Serial.print(asciizeichen, BYTE);
 

liefert dann als Ergebnis den Buchstaben "A" im Serial Monitor, das Display zeigt aber "0" an. Die Ausgabe als Buchstabe fuktioniert also über die serielle Schnittstelle, auch ein 16x2-Display, welches ich zur Probe mal angeschlossen habe, gibt 0x41 als "A" aus. Nur das MI0283QT-2 scheint Probleme zu bereiten.

Ich nehme an, dass die Library des Displays Ursache für das sonst tolle Display ist. Ich nutze die Libraries, welche ich bei watterott.com unter der Version "mSD-Shield v0.10" finden konnte.

Kennt jemand von Euch eine Lösung für das Problem?

Danke,
Tiesl
Title: Re: Watterott MI0283QT-2 - Probleme mit ASCII-code
Post by: andreasw on Aug 23, 2011, 05:44 pm
Hi,

Für einzelne Zeichen muss man die Funktion drawChar() oder drawInteger() (wenn man den Wert ausgeben möchte) benutzen.

Gruß
Andreas
Title: Re: Watterott MI0283QT-2 - Probleme mit ASCII-code
Post by: Tiesl on Aug 23, 2011, 09:22 pm
Hallo Andreas,

so einfach soll das sein? Das wäre ja super. Dabei habe ich so lange hin und her probiert.
Ich werde das morgen gleich mal ausprobieren.

Tausend Dank!

Tiesl
Title: Re: Watterott MI0283QT-2 - Probleme mit ASCII-code
Post by: Tiesl on Aug 24, 2011, 02:26 pm
lcd.drawChar() funktioniert perfekt!
Der Befehl "lcd.drawInteger()" wird hingegen nicht akzeptiert.

Nun ist ein neues Problem aufgetreten: float-Werte können nicht auf dem Display ausgegeben werden.
Eine Variable "resultat" sei als Integer deklariert. Ich weise resultat den wert 2.5 zu (float resultat = 2.5).
Serial.print(resultat,2) gibt den Wert 2.50 im Serial Monitor aus.
lcd.drawChar(160, 80, (resultat, 2), 1, COLOR_BLACK, COLOR_WHITE) führt zu einem verrückten Zeichen auf dem Touch-Display.

Andreas, kennst du eine Lösung für dieses neue Problem?

Danke!
Tiesl
Title: Re: Watterott MI0283QT-2 - Probleme mit ASCII-code
Post by: andreasw on Aug 24, 2011, 04:11 pm
drawInteger() gibt es erst ab Lib v0.11 und Float wird z.Z. nicht unterstützt. Floatvariablen kann man nur über z.B. sprintf() in eine Zeichenkette umwandeln und dann mit drawText() ausgeben.

Gruß
Andreas
Title: Re: Watterott MI0283QT-2 - Probleme mit ASCII-code
Post by: Tiesl on Aug 24, 2011, 05:28 pm
Danke für die schnelle Antwort.

Jetzt muss ich mich erstmal reinfuchsen, wie die sprintf()-Geschichte funktioniert. Das Ganze erscheint mir gar nicht mal so einfach.
Mal sehen, ob ich damit zurecht komme. Hoffentlich frisst die Stdio.h nicht zuviel Speicher.

Viele Grüße
Tiesl
Title: Re: Watterott MI0283QT-2 - Probleme mit ASCII-code
Post by: Tiesl on Aug 25, 2011, 12:40 pm
Falls noch jemand Probleme mit der Darstellung von Fließkommazahlen auf dem MI0283QT-2 bekommen sollte:

es geht ganz einfach mit

Code: [Select]

char s[3];
lcd.drawText(160, 80, dtostrf(resultat,2,1,s), 1, COLOR_BLACK, COLOR_WHITE);


am Beispiel float resultat = 2.5.
Andreas, vielen Dank für den tollen Support!

Tiesl