Go Down

Topic: Watterott MI0283QT-2 - Probleme mit ASCII-code (Read 1 time) previous topic - next topic

Tiesl

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

andreasw

Hi,

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

Gruß
Andreas

Tiesl

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

Tiesl

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

andreasw

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

Tiesl

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

Tiesl

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

Go Up