Printing specdial character on LCD[SOLVED]

Hi,

If you want to print the degrees symbol (°) on lcd this seems to work:

lcd.print((char)223);

since 223 is the aschii code for the above symbol in the LCDs character set. What if, like me, you want to use a char buffer to store each LCD line and then have it printed on lcd?

buffer[20];
strcpy(buffer,(char)223);
lcd.print(buffer);

The above doesn't work and produces a different character!

Any ideas how to do it ?

The above doesnt work

You can't copy a character with strcpy (both arguments must be arrays, the second one a c-string as well).

Your example would probably do the below. Not tested.

buffer[0] = (char)233;

Then i need to know the exact position in the buffer array that the character is to be printed. The buffr array is constructed with a series of strcat comands...

Yep.

char temperatureSymbol[2] = {(char)233, '\0'};

This you can use with strcpy, strcat etc.

Or you can use sprintf().

Note: in my previous reply, I assumed that buffer was initialised with zeroes (null erminators).

You can embed the character inside a string using a backslash followed by either a hex or octal number:

  lcd.print("\xDF"); //hex value for 223
  lcd.print("\337"); //octal value for 223

That worked! -Thank you!

I would imagine the same applies for a custom defined LCD character...

With custom characters, you can define up to 8, numbered 0 through 7. Avoid using 0 if possible, because 0 is the same as the terminating NULL and cannot be part of a string.

Yes i know.
Thanks for your help!