Buscando simplificar mi skech y el origen de caracteres especiales para LCD

hola estoy haciendo un proyecto donde necesito, el carácter de grados y del termómetro y la mayoría de paginas me envían a un generador de caracteres y que me da una respuesta como esta:.

#include <LiquidCrystal.h>

LiquidCrystal lcd(12, 11, 5, 4, 3, 2);

byte smiley[8] = {
  B00000,
  B10001,
  B00000,
  B00000,
  B10001,
  B01110,
  B00000,
};

void setup() {
  lcd.createChar(0, smiley);
  lcd.begin(16, 2);  
  lcd.write(byte(0));
}

void loop() {}

(el codigo anterior solo es ejemplo).

pero me encontré estas dos líneas de este lugar carácter de temperatura en el dislay que esta simplificado de donde obtuvo esos números hay una tabla o algo asi?

lcd.print("\337");

lcd.print((char)223);

gracias y disculpen si me salte algunas reglas..

y deveritas que estuve buscando antes de postear aqui ya que hay gente que se molesta por que no sigue las reglas pero es sin querer queriendo

Las líneas lcd.print("\337"); y lcd.print((char)223); en tu código están mostrando caracteres especiales en una pantalla LCD, específicamente el símbolo de grados (°) y el termómetro, supongo.

La razón por la que puedes usar \337 o (char)223 se debe al mapa de caracteres del controlador de la pantalla LCD, que en muchos casos es el controlador HD44780 o uno compatible. Este controlador tiene un mapa de caracteres que asigna números a símbolos específicos. En este caso, el número 223 (o 0xDF en hexadecimal, o 0337 en octal) está asignado al carácter del termómetro o de grados en la tabla de caracteres del controlador de la LCD.

No tienes que crear un carácter personalizado para esos símbolos si ya existen en la tabla de caracteres de tu pantalla LCD.

En resumen, la razón de esos números (\337 y 223) es que son los códigos asignados a los caracteres que deseas mostrar, según la tabla de caracteres de tu controlador de pantalla LCD.

Espero que esto aclare tus dudas. Si tienes más preguntas, no dudes en hacerlas. ¡Buena suerte con tu proyecto!

Moderador
Edita tu título por uno mas adecuado.
Ve a tu privado donde te doy mas información sobre el error cometido.

Si.
Por ej. ésta es compatible con mi display 12x02

Saludos

hola muchas gracias por sus respuestas, aunque ya m han aclarado muchos puntos antes de contestarles me puse a buscar sobre el controlador hd44780, pero lo que me sale son esas tablas que a los lados tienen ceros y unos y en medio estan los caracteres pero no les entiendo a las tablas, como es que generan ese numero 337 y 223.. o son otras tablas, o me harian favor de enseñarme a interpretar y a leer las tablas si es que son las correctas.. espero me haya dado a entender..
y les agradezco de corazon el tiempo de responderme

Moderador:
Edita tu título por uno mas adecuado, 2da advertencia.
Por favor, lee las Normas del foro
Usa uno que no tenga justamente lo que se considera un título inútil.
Ver en las normas punto 5.

Que sean unos y ceros o un numero decimal o hexadecimal etc, no tiene importancia, simplemente es el numero de orden en un sistema de numeración que ocupa el carácter imprimible dentro de la tabla a usar, ya se encargara la librería el compilador o el chip, valla "vuesa merced" a saber quien y como lo traduce e imprime, en principio no importa.
Existen casi infinitas tablas, depende del fabricante, pero todas ellas se basan en el standard ASCII, (American Standard Code for Information Interchange ), léete ESTO para mas información,
Bien, tu has encontrado la tabla de tu controlador, simplemente dile el numero de orden que ocupa en la tabla el carácter que quieres imprimir y ya se encargara el de mandar la señales adecuadas para imprimir dicho carácter.
Seguramente en tu tabla el numero binario 00110000 corresponde al cero, lo mismo que en la tabla que aporta @MaximoEsfuerzo , Eso es puro ASCII, solo te cambiaran algunos carecteres especiales raros.

Sabes que aunque los humanos normalmente indiquemos los números en decimal, hexadecimal, octal o incluso en binario, el micro solo entiende binario, o sea 0 y 1. Lo mismo el controlador del LCD.
El código de cada caracter ocupa 1 byte, o sea 8 bits.
Si "partes" el byte en 2 obtienes 2 nibbles, entonces un nibble contiene los 4 bits superiores del byte y el otro los 4 bits inferiores.
En la tabla tienes, en la fila superior (Higher 4bit), los bits que forman el nibble superior de cada byte que representa el código del caracter.
El la columna de la izquierda (Lower 4bit) los bits del nibble inferior.
Luego, para saber el código de cualquier caracter
necesitas tomar nota del valor indicado en la fila superior de la columna donde se encuentra representado el caracter y del valor en la columna de la izquierda de la fila donde está el caracter.
Entonces, para el caracter '°' tienes que el nibble superior de su código es (ver en fila sup.)

1101

y el nibble inferior (ver en columna izq.)

1111

Ahora "armas" el byte uniendo los nibbles y obtienes

1101 1111 => 11011111

Este es el valor en binario.
Cambiando la base entonces tienes que representa

11011111 en binario (base 2)
223 en decimal (base 10)
337 en octal (base 8)
DF en hexadecimal (base 16)

Veamos otro, el caracter '5'

0011 0101 => 00110101

00110101 binario
53 decimal
65 octal
35 hexadecimal

La conversión entre bases la puedes hacer con cualquier calculadora "científica" o con algún conversor online.

hola

muchas gracias por la información, ya me quedo claro y esto que me mostraron me va rebien para mi proyecto.. ahora es momento de ponerlos en practica..

gracias nuevamente a cada uno de ustedes que se tomaron el tiempo para responderme y aclararme las dudas.. hasta pronto

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.