TODOPIC
Misceláneas - Interés General => Uso y aplicaciones de los PIC / Curiosidades electrónicas => Mensaje iniciado por: jfmateos2 en 17 de Enero de 2008, 13:43:05
-
Tengo una pequeña matriz de LEDs compuesta por 7 filas y 6 columnas y deseo mostrar en ella mensajes de texto.
He pensado utilizar una fuente mayúscula con 5 píxeles de altura y, siempre que sea posible, sólo 3 píxeles de anchura. Algunas letras de ejemplo:
A
OOO
O O
OOO
O O
O O
M
O O
OO OO
O O O
O O
O O
¿Conoce alguien algún sitio donde encontrar la definición binaria/hexadecimal de una fuente de este estilo? ¿o algún sitio para inspirarme viendo fuentes similares?
Gracias
-
A falta de algo mejor, me inspiraré en esta minifuente de un panel LCD.
(http://img242.imageshack.us/img242/5265/minifuentefm2.th.jpg) (http://img242.imageshack.us/my.php?image=minifuentefm2.jpg)
-
No te pegues la currada del siglo dibujando letras. En cuanto llegue a casa te paso un programita que genera las definiciones de todas las letras que quieras mientras estén en Windows. Sólo tienes que elegir la fuente de un desplegable y decirle el tamaño de salida.
-
Gracias Nocturno, llevaba ya un par de letras cuando he leído tu mensaje. Me has ahorrado un buen rato de cálculo binario.
Hoy seguro que estoy deseando yo más que nadie que llegues a casa.
-
Yo también me apunto al programita! :-/
Norberto
-
una vez, con la misma intención, y sin exito en encontrar un programa (pero para matrices 8x8), yo las hice :mrgreen:, en excel, y ya solo es copiar y copiar la formula, no salio tan bien, pero sirve
desafortunadamente, estas letras las hice para una matriz 8x8, pero seguramente puedas hacer unas nuevas letras de esas dimensiones, con mi archivito en excel, jeje
haber si te sirve, Juanfe, un saludo
-
Un método muy ingenioso Cryn, muchas gracias :-/. Voy a aprovecharlo para crear otros caracteres que no son letras ni números, sino pequeños iconos animados. Gracias de nuevo.
-
:mrgreen: que bueno que te sirva Juanfe, mientras Manolo llega a su casa, puedes estar haciendo algo, jeje :D
un saludo
-
Yo también quiero ese programita.. :mrgreen:
-
Hola Cryn, he modificado la hoja de cálculo para que cambie de color al poner el "0" o el "1"
Un saludo
-
:shock: orale, muchas gracias, yo lo hacia manualmente :mrgreen:
gracias, creo que buscare un tutorial para excel, pues a veces ayuda bastante :mrgreen:
y como lo hiciste?? :roll:
-
Mira en el menú de formato la opción de "formato condicional"
Un saludo
-
ohh si ahi esta! :mrgreen: muchas gracias :-/
-
Para evitar ése tipo de trabajos (muy engorrosos y quitan mucho tiempo) de estar convirtiendo fuentes en binario, en la práctica lo generalmente ideal es que tu circuitería de matriz de leds no "conozca" los datos que está desplegando a nivel de caracteres, sino que sólo se limite a hacer un volcado directo de datos binarios desde tu "cerebro" central o controlador. De esta forma puedes usar cualquier programa de animación en la PC y lo que se está visualizando en el monitor es lo que se visualiza en la matriz de leds. Aquí te dejo un ejemplo de como lo hago en mis pantallas
(http://www.geocities.com/jcarlosmor/temporal/Imagen23.JPG)
(http://www.geocities.com/jcarlosmor/temporal/Imagen18.JPG)
-
:shock: no entendi, como se logra eso :(
-
Hola JCC, me parece muy buena tu idea. Sin embargo, el mío es un proyecto muy humilde, en el que sólo hay un PIC (no hay ningún cerebro central aparte del propio PIC).
Entre que Nocturno llega a casa, me he creado una páginita Web para generar caracteres de matrices:
http://www.villatic.org/carpetaJuanfe/generadorCaracteres.html
Calcula los valores en decimal y por columnas. He situado el origen en la fila inferior, pero en un comentario del código indico cómo trasladarlo a la fila superior.
Aquí les dejo el código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head>
<title>Generador de caracteres para matrices</title>
<meta name="author" content="jfmateos2"/>
<meta name="description" content="Generador de caracteres de matrices inspirado en todopic.com.ar"/>
<meta http-equiv="Reply-to" CONTENT="jfmateos@lycos.es">
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
<style type="text/css">
div {width: 20px;
height: 20px;
background-color: black;
font-size: 0px;
}
</style>
<script type="text/javascript">
tablero=new Array();
function actualizar(filaRecibida,columnaRecibida){
tablero[columnaRecibida][filaRecibida]=!tablero[columnaRecibida][filaRecibida];
var vector=document.getElementById("vector");
vector.value="{";
for (i=0;i<anchura;i++){
totalColumna=0;
for(j=0;j<altura;j++){
totalColumna+=Math.pow(2,j)*tablero[i][altura-j-1];
//Sustituir la línea anterior por la siguiente si se desea
//situar el origen en la fila superior en lugar de la inferior
//totalColumna+=Math.pow(2,j)*tablero[i][j];
}
vector.value=vector.value+totalColumna;
if (i<anchura-1){
vector.value=vector.value+",";
}else{
vector.value=vector.value+"}";
}
}
}
function crearIcono(){
anchura=parseInt(document.getElementById("ancho").value);
altura=parseInt(document.getElementById("alto").value);
var oIcono=document.createDocumentFragment();
var fila=0;
var columna=0;
for(j=0;j<anchura;j++){
tablero[j]=new Array();
for(i=0;i<altura;i++){
tablero[j][i]=0;
}
}
do{
var objeto=document.createElement("tr");
oIcono.appendChild(objeto);
fila++;
do{
var objeto=document.createElement("td");
oIcono.lastChild.appendChild(objeto);
var objeto=document.createElement("div");
objeto.fila=fila-1;
objeto.columna=columna;
objeto.onclick=function() {
if(this.style.backgroundColor=="red"){
this.style.backgroundColor="black";
}else{
this.style.backgroundColor="red";
}
actualizar(this.fila,this.columna);
}
oIcono.lastChild.lastChild.appendChild(objeto);
columna++;
}while(columna<anchura);
var columna=0;
}while(fila<altura);
var oTabla=document.getElementById("tabla");
oTabla.appendChild(oIcono);
}
</script>
</head>
<body>
<h1>Crear caracteres para matrices</h1>
Indique las dimensiones del carácter que desea crear:<br/>
Ancho: <input id="ancho" type="text" size="2" maxlength="2" value="6"/><br/>
Alto: <input id="alto" type="text" size="2" maxlength="2" value="7"/><br/>
<button onclick="crearIcono();this.disabled='true';">CREAR</button>
<table border="1px" cellpadding="0" cellspacing="0">
<tbody id="tabla"></tbody>
</table>
Vectores columna: <input id="vector" value="" type="text" disabled="disabled"/>
</body>
</html>
-
muy buena creacion Juanfe, era lo que buscaba :mrgreen:
gracias por el aporte :-/
-
Bueno, disculpad el retraso, pero hoy he tenido un día especialmente complicado.
Esta es la herramienta que os anticipaba:
http://www.8052.com/users/bahrio/fontgen.phtml
A disfrutarla.
-
Muchas gracias Nocturno. Es una aplicación muy interesentante :-).
No hay nada que disculpar, aún teniendo un día complicado sacas tiempo para atender a los compañeros del foro. Sólo a mí, me has sacado de dos atolladeros hoy, y sé que no soy el único que se ha beneficiado de tu experiencia.
Hoy te mereces un 10.
-
De nada, me alegro que os sea útil.
Yo lo usé para hacer esto:
Fuentes TrueType para gLCD (http://www.micropic.es/index.php?option=com_content&task=view&id=19&Itemid=39)
(http://www.micropic.es/images/imagenes/Arial12n.jpg)
(http://www.micropic.es/images/imagenes/TimesNew10b.jpg)
-
No hay nada que disculpar, aún teniendo un día complicado sacas tiempo para atender a los compañeros del foro. Sólo a mí, me has sacado de dos atolladeros hoy, y sé que no soy el único que se ha beneficiado de tu experiencia.
Hoy te mereces un 10.
Dí que sí, que hoy desde el coche volviendo de un viaje a Madrid, me ha solucionado en segundos un problema que me estaba haciendo perder los nervios en el trabajo.
Plas, plas, plas (aplauso)
-
He pensado utilizar una fuente mayúscula con 5 píxeles de altura y, siempre que sea posible, sólo 3 píxeles de anchura.
Hola jfmateos2:
Veo que muchos te han ayudado respecto a tu pedido, pero pensando en lo que solicitabas originalmente, tengo exactamente eso: una fuente de 5 pixeles de alto x 3 de ancho y para todo el abecedario igual, mayúsculas, minúsculas, números y algunos caracteres especiales ¡¡¡¡¡ Incluso la letra Ñ!!!!!! . Ni te cuento como me quedaron los ojos en aquella oportunidad. :D :D :D
Lo diseñé especialmente para un juego en un celular y se entienden claramente todas las letras, espero te sirva:
(http://img401.imageshack.us/img401/8351/tipografiavf5.gif) (http://imageshack.us)
Salud 8)
-
Jeje, qué arte, más chico imposible. :lol:
-
SavageChicken, te debo unas cervecitas, o lo que se tercie :-/.
Voy a usar tu fuente, aunque posiblemente amplíe la anchura de algunas letras, como la M y la W, a 5 píxeles. Está muy chula; me han gustado especialmente las minúsculas.
Cuando la tenga terminada, colocaré aquí el código.
A uno le hace sentir bien este ambiente de camaradería. ¡Viva la gente de todopic!
-
Bueno, pues ya está aquí el código de la fuente de savagechicken. De momento no he incluido las minúsculas, he cambiado la longitud de algunos caracteres y he añadido otros (como el símbolo del euro).
Me ha llevado mucho menos tiempo de lo que esperaba gracias a mi :-) versión mejorada del generador de caracteres (http://www.villatic.org/carpetaJuanfe/generadorCaracteres.html).
//Numeros
int caracter0[3]={15,17,30};//0
int caracter1[3]={9,31,1};//1
int caracter2[3]={19,21,9};//2
int caracter3[3]={17,21,26};//3
int caracter4[3]={6,10,31};//4
int caracter5[3]={29,21,18};//5
int caracter6[3]={15,21,22};//6
int caracter7[3]={16,23,24};//7
int caracter8[3]={11,21,26};//8
int caracter9[3]={28,20,31};//9
//Letras mayúsculas
int caracter10[3]={15,20,15};//A
int caracter11[3]={31,21,10};//B
int caracter12[3]={14,17,10};//C
int caracter13[3]={31,17,14};//D
int caracter14[3]={31,21,17};//E
int caracter15[3]={31,20,16};//F
int caracter16[3]={14,17,23};//G
int caracter17[3]={31,4,31};//H
int caracter18[3]={17,31,17};//I
int caracter19[3]={2,17,31};//J
int caracter20[3]={31,12,19};//K
int caracter21[3]={31,1,1};//L
int caracter22[5]={31,8,4,8,31};//M
int caracter23[5]={31,8,4,2,31};//N
int caracter24[5]={31,72,68,66,31};//Ñ
int caracter25[3]={14,17,14};//O
int caracter26[3]={31,20,8};//P
int caracter27[4]={31,17,19,31};//Q
int caracter28[3]={31,20,11};//R
int caracter29[3]={9,21,18};//S
int caracter30[3]={16,31,16};//T
int caracter31[3]={31,1,31};//U
int caracter32[3]={30,3,30};//V
int caracter33[5]={31,2,4,2,31};//W
int caracter34[3]={27,4,27};//X
int caracter35[3]={24,7,24};//Y
int caracter36[3]={19,21,25};//Z
//Signos de puntuacion
int caracter37[2]={3,3};//.
int caracter38[2]={1,6};//,
int caracter39[1]={10};//:
int caracter40[2]={1,10};//;
int caracter41[1]={95};//¡
int caracter42[3]={125};//!
int caracter43[3]={14,81,2};//¿
int caracter44[3]={32,69,56};//?
int caracter45[2]={16,96};//´
int caracter46[2]={62,65};//(
int caracter47[2]={65,62};//)
//Caracteres especiales
int caracter48[5]={2,21,23,17,14};//@
int caracter49[3]={50,107,38};//$
int caracter50[5]={20,62,85,65,34};//€
//Signos matemáticos
int caracter51[3]={4,14,4};//+
int caracter52[3]={4,4,4};//-
int caracter53[3]={10,4,10};//*
int caracter54[3]={3,4,24};///
int caracter55[3]={19,4,25};//%
int caracter56[3]={4,10,17};//<
int caracter57[3]={17,10,4};//>
int caracter58[3]={10,10,10};//=
-
No hay nada que agradecer jfmateos, es agradable ver que el trabajo realizado sirve para otras personas también.-
Como verás nunca mejor aprovechados los tres pixeles de ancho :D :D :D
Preferí hacerlo así también con letras difíciles como la M la N la Q y la W solo para no complicarme con el código, basta desplazarse la misma cantidad de pixeles a la derecha para leer cualquier letra.
Otra de las motivaciones fue que al probar como se leían, noté que se entendían claramente y que a pesar de tener tan pocos pixeles, se podía distinguir entre la M y la N por ejemplo.
P/D: Gracias por la buena onda Manolo, tu programita también es un gran aporte.
Salud 8)
-
magnifico trabajo, seguramente esta qeudando muy bien :mrgreen:
-
:shock: no entendi, como se logra eso :(
Ocupas una circuitería diseñada especialmente para sólo manejar los leds, independientemente de lo que quieras visualizar con ellos (recuerdas aquellas tres frecuencias independientes de refresco, actualización, etc.). De esta forma lo que quieras visualizar son sólo unos y ceros, así sea una letra o una imagen, no dependes de un circuito que tenga que saber cómo visualizar las cosas sino sólo recibirlas y hacer el volcado. Puedes hacer dicho volcado de datos partiendo desde un archivo gráfico o de animación, o directamente desde la señal VGA, aunque aquí ocupas diseñar un buffer para convertir (y procesar si es necesario) una porción de la señal VGA en un stream de datos correspondientes a las coordenadas de color en el diagrama de cromaticidad expuesto aquí
http://www.todopic.com.ar/foros/index.php?topic=19609.0
si el display es monocromático sólo pones ceros en los colores que no se usan.
-
ahora si mas o menos le voy entendiendo :mrgreen:
gracias por la aclaración
-
hola nocturo
podrias mandarme el programita o subelo a un servidor
porfis
la pagina ya no sirve
lo necesito urgente
porfissssssssss
-
http://fontgen.sourceforge.net/
-
PORFAAAAAAAA
resuban el programilla
la pagina ya no funciona
me manda un error
porfaaaaaaaaaa