Go Down

Topic: "Grad"-Zeichen darstellen (Read 1 time) previous topic - next topic

maeckes

Hi!

Ich habe dieses Display:
http://web4robot.com/files/GLCD-FLEXEL.pdf

und möchte darauf das Grad-Zeichen "°" darstellen, welches ja leider nicht zur Standard ASCII-Tabelle gehört, sondern zu der Erweiterten.

Gibts ne Möglichkeit, dass Zeichen trotzdem darzustellen? Und wenn ja, wie!?

Danke Euch!

Gruß
Morris

uwefed

Wenn ein Zeichen nicht existiert mußt Du es selbst definieren. Ein GLCD wird nur mit Pixel angesteuert. Der Zeichensatz ist diesem Fall im Kontroller gespeichert, der die I2C Schnittstelle bereitstellt. Du kannst aber einzelne Pixel setzen. Setze einfach die Pixel die zusammen ein ° ergeben.

Grüße Uwe

maverick1509

Hallo Morris,
ich hab das auch gemacht. Definiere das Zeichen:

byte Celsius[8] = {B11100,B10100,B11100,B0000,B00000,B00000,B00000,B00000}; lcd.createChar(0, Celsius);

Mit lcd.write((uint8_t)0); wird dann das Zeichen auf dem LCD-Display ausgegeben.

gruß

maeckes

Das geht scheinbar bei mir leider nicht:
Quote
error: 'class GLCDI2C' has no member named 'createChar'



uwefed

maverick1509 das ist ein Grafik LCD mit einem extra programmierten µController für das I2C interface und nicht ein LCD- Modul mit dem HD44780 Controller.

Dein Vorschlag funktioniert leider nicht.

Grüße Uwe

maeckes

Also nur möglich, wenn man es "malt"?

skorpi08

Nö.
So geht das auch: \337

Einfach so einfügen und schon haste ein "°"
Nicht Mensch, nicht Tier: Programmierer halt...

maeckes


skorpi08

"Celsius: \337C" 
"Abk\365hlung"
"Erh\357hen"

reicht das als beispiel?
Nicht Mensch, nicht Tier: Programmierer halt...

maeckes

#9
Jun 08, 2013, 10:29 pm Last Edit: Jun 08, 2013, 10:32 pm by maeckes Reason: 1
Leider nein  :smiley-fat:

Also bei
Code: [Select]
  lcd.print(337);
Wird "337" auf dem Display ausgegeben

bei
Code: [Select]
  lcd.print("337");
ebenfalls

und bei
Code: [Select]
  lcd.print("337C");
wird "337C" ausgegeben

bei
Code: [Select]
  lcd.print(337C);
gibt es den

Quote
error: invalid suffix "C" on integer constant



Bei
Code: [Select]
  lcd.print(\337);
Gibt es
Quote
error: stray '\' in program


Bei
Code: [Select]
   lcd.print("\337");
Wird nichts ausgegeben

skorpi08

Nicht Mensch, nicht Tier: Programmierer halt...

maeckes

Scheint bei mir nicht zu klappen.

Habe das Beispiel hier getestet
http://forum.arduino.cc/index.php?topic=143903.msg1141232#msg1141232

Code: [Select]
lcd.print("R\365cklauf");

Es wird dann einfach "Rcklauf" ausgegeben.

skorpi08


maverick1509 das ist ein Grafik LCD mit einem extra programmierten µController für das I2C interface und nicht ein LCD- Modul mit dem HD44780 Controller.

Dein Vorschlag funktioniert leider nicht.

Grüße Uwe


ok, hab ich erst jetzt gelesen. Wird wohl daran liegen.
Nicht Mensch, nicht Tier: Programmierer halt...

uwefed

#13
Jun 09, 2013, 01:00 am Last Edit: Jun 09, 2013, 01:05 am by uwefed Reason: 1
In der Beschreibung http://web4robot.com/files/GLCD-FLEXEL.pdf die maeckes vom Display genannt hat steht:

Quote
The module is controlled using ASCII characters. The character decimal 254 (0xFE) is acommand prefix. Any data sent to the GLCD-FLEXEL that is not prefixed by the command prefix (0xFE) will be displayed as chars on the LCD.
NOTE:
To display the char on LCD, just send its ASCII number, 0x20 to 0x7F displays the standard set of characters. 0xFE is reserved for function command.


Also die Zeichen von 32 bis 127 stellt das Display sicher dar. Die zitierte Textstelle läßt aber Intepretationsspielraum was mit den Zeichen von 128 bis 253 passiert.

die Textstelle
Quote
The SMALL, MEDIUM and LARGE fonts include ASCII characters from 0x20 (“Space”) to 0x7E (“~”). The BIG DIGIT font includes ASCII characters from 0x20 (“Space”) to 0x3E (“>”).


beseitigt alle Zweifel, daß der erweiterten ASHII-Zeichensatz (Code 128 bis 255) vieleicht doch unterstützt wird.

Du mußt das °-Zeichen also pixelweise malen oder einen kleinen Kreis mit LCD.circle() zeichnen.

Grüße Uwe

Leon8380

Hallo maeckes,
Ich stand gestern Abend vor dem gleichen Problem. Hab dann im Netz folgendes gefunden:

lcd.write(0xDF)

Und schon funktionierts. ;-) hoffe ich konnte dir weiterhelfen.

Gruß, Leon

Go Up