Wie schreibt man das Symbol für Grad im UNO

Hallo Gemeinde...

Wie im Beispiel möchte ich die Temp. Anzeige auf dem LCD Display 1602D1 mit
dem Symbol für Grad "°" also zB 22 °C darstellen.
ABER...
auf dem Display wird immer davor eine "liegende 8" Zeichen für Unendlich dargestellt.
In der Zeichentabelle des LCD`s ist das Symbol enthalten (lower 1111 / uper 1011)

...liegt das eventuell an der 4-Bit Ansteuerung,so wie ich sie verwende, auf dem UNO..?


// include the library code:
#include <LiquidCrystal.h>

// initialize the library with the numbers of the interface pins
LiquidCrystal lcd(12,11, 2,3,4,5);

void setup() {

lcd.begin(16, 2);
// Print a message to the LCD.
lcd.setCursor(0, 0);
lcd.print("Temp = 24 °C");//hier wird am Bildschirm das richtige Symbol für Grad also "°" angezeigt
}
void loop() {}

Die HD44780 LCDs haben nur einen begrenzen Speicher für Schriftzeichen. Je nachdem, mit welchen Zeichensatz der programmiert ist, kann es sein, dass es das Zeichen dort nicht gibt.

Es gibt aber 8 Speicherbereiche für weitere Zeichen, die du selbst erstellen kannst. -> Google "lcd generate char", "lcd custom char", ....

Baue den Schnippsel mal bei dir ein, der lässt dir alle Zeichen nach einander aufleuchten.

void loop()
{
static byte i = 0;
lcd.home();
lcd_puti(i);
lcd.setCursor(0,15);
lcd.write(i);
delay(2);
i++;
}

void lcd_puti(byte val)
{
if(val < 10) lcd.write(' ');
if(val < 100) lcd.write(' ');
lcd.print(val);
}

Das Zeichen gibt es natürlich. Man muss nur ins Datenblatt schauen:

Und die haben praktisch alle den japanischen Zeichensatz. Also Seite 17. Da sieht man das Grad Zeichen unten rechts. 11011111 = DF

Also:

lcd.print("Temp = 24 \xDF" "C")

Den String so zu splitten ist nötig, weil der Compiler sonst versucht das C mit zum Hex-Wert zu Parsen. Und das geht nicht.

Die Controller der Display haben einen Zeichensatz der nur teilweise dem Ashii entspricht. Auch gibt es den Controller mit mehreren Zechensätzen. Die Lösung ist eine der aufgezeigten. Entweder xDF oder ein Zeichen selbst definieren. http://torfnase.lima-city.de/downloads/lm35lcdthermostat.pde

Grüße Uwe

sschultewolter:
Die HD44780 LCDs haben nur einen begrenzen Speicher für Schriftzeichen. Je nachdem, mit welchen Zeichensatz der programmiert ist, kann es sein, dass es das Zeichen dort nicht gibt.

Es gibt aber 8 Speicherbereiche für weitere Zeichen, die du selbst erstellen kannst. -> Google "lcd generate char", "lcd custom char", ....

Baue den Schnippsel mal bei dir ein, der lässt dir alle Zeichen nach einander aufleuchten.

void loop()

{
static byte i = 0;
lcd.home();
lcd_puti(i);
lcd.setCursor(0,15);
lcd.write(i);
delay(2);
i++;
}

void lcd_puti(byte val)
{
if(val < 10) lcd.write(' ');
if(val < 100) lcd.write(' ');
lcd.print(val);
}

OK, der Schnipsel war eine gute Idee >>>>DANKE<<<<<
nun weis ich das es die 178...(ASCII 178?) ist

lcd.write(178);...ergibt mein Gradsymbol.

DANKE !!!

Serenifly:
Das Zeichen gibt es natürlich. Man muss nur ins Datenblatt schauen:
https://www.sparkfun.com/datasheets/LCD/HD44780.pdf

Und die haben praktisch alle den japanischen Zeichensatz. Also Seite 17. Da sieht man das Grad Zeichen unten rechts. 11011111 = DF

Also:

lcd.print("Temp = 24 \xDF" "C")

Den String so zu splitten ist nötig, weil der Compiler sonst versucht das C mit zum Hex-Wert zu Parsen. Und das geht nicht.

....Prima DANKE
ASCII 178 in HEX B2 gibt genau das richtige Zeichen !!!!

SUPER danke für den Tip mit dem splitt nun weis ich wie es geht

Das ist wie gesagt nicht ASCII. Der Zeichensatz stimmt nur im linken Teil mit der ASCII Tabelle überein.

Wenn es bei dir B2 ist, scheinst du aber einen ganz anderen Zeichensatz zu haben...

Wenn das angezeigte als '°' zu deuten ist, reicht es doch :wink: Nehme ansonsten auch gern mal ' für °

sschultewolter:
Wenn das angezeigte als '°' zu deuten ist, reicht es doch :wink: Nehme ansonsten auch gern mal ' für °

...gnau nun hab ich drei varianten...danke :slight_smile:

Serenifly:
Das ist wie gesagt nicht ASCII. Der Zeichensatz stimmt nur im linken Teil mit der ASCII Tabelle überein.

Wenn es bei dir B2 ist, scheinst du aber einen ganz anderen Zeichensatz zu haben...

.....jep, hab viele wilde zeichen

aber mein Hauptproblem gelöst ...Danke :slight_smile: