Autor Tema: Manejo de font en carteles LED  (Leído 1137 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado elgarbe

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 2178
Manejo de font en carteles LED
« en: 18 de Diciembre de 2014, 09:24:50 »
Buenas, estoy avanzando con el cartel 16x256px y estoy en la etapa de pasaje de Texto a mostrar -> memoria RAM para llenar el cartel.
Estoy usando este programa para crear el código de la fuente. El mismo me devuelve 2 array, uno con los bytes de cada fila de cada caracter y otro con el ancho y el offset del caracter dentro del array de fuente:

Código: [Seleccionar]
//
//  Font data for Arial 11pt
//

// Character bitmaps for Arial 11pt
const uint_8 arial_11ptBitmaps[] =
{
// @0 '!' (2 pixels wide)
0b00000000, //   
0b11000000, // ##
0b11000000, // ##
0b11000000, // ##
0b11000000, // ##
0b11000000, // ##
0b11000000, // ##
0b11000000, // ##
0b11000000, // ##
0b00000000, //   
0b11000000, // ##
0b11000000, // ##
0b00000000, //   
0b00000000, //   
0b00000000, //   
0b00000000, //   

// @16 '"' (6 pixels wide)
0b00000000, //       
0b11001100, // ##  ##
0b11001100, // ##  ##
0b11001100, // ##  ##
0b11001100, // ##  ##
0b00000000, //       
0b00000000, //       
0b00000000, //       
0b00000000, //       
0b00000000, //       
0b00000000, //       
0b00000000, //       
0b00000000, //       
0b00000000, //       
0b00000000, //       
0b00000000, //   
....
....

// Character descriptors for Arial 11pt
// { [Char width in bits], [Offset into arial_11ptCharBitmaps in bytes] }
const FONT_CHAR_INFO arial_11ptDescriptors[] =
{
{2, 0}, // !
{6, 16}, // "
{7, 32}, // #
....
....

Yo he usado este programa en este otro proyecto, el tema es que en ese caso los caracteres tenían 8 o 16 bits de ancho y ocupaban el byte o el half word completo. En el cartel que estoy diseñando, el caracter debe tener 12 o 13px de ancho. Entonces lo que hice fue elegir un tamaño de fuente (Arial 11 bold) en el que la W mida 13px de ancho y ajuste la opcion Tighest en el Ancho. Con esto consigo que cada caracter mida 8 o 16 bits y esté alineado a la izquierda.
Bueno, ahora tengo que hacer el algoritmo que tome el array de char que representa el texto a mostrar y pasando por el array de la fuente me llene el Array del cartel de 16x256 bits.
Ya tengo una idea de como hacerlo, de echo acá ya lo habia hecho. El tema es si hay alguna forma standar de hacer esto.

La idea, por supuesto, es tener un buffer en ram, con los 256 bits de cada fila preparados para que el SPI, via DMA los valla tomando y sacando...

Saludos!
-
Leonardo Garberoglio