Soft Companion Cube

meneame.net TRACK TOP
Publicado el 31st Octubre, 2009 por KaRMaN. Archivado en Sin categoria.
Leido 4,893 veces. Comments Off

¡Me lo ha regalado mi novia! Se trata de un pequeño cubo de compañia, de el juego ‘Portal’. Está creado con una plantilla de cubo de 6 caras en punto de cruz, cosido por los cantos para crear un cubo, relleno de algodón. Es un cubo de compñia blandito!

Companion Cube

Companion Cube

Una pasada, eso es lo que es. Gracias nena!!

Arduino Avago LedDisplay Bug, Fixed

meneame.net TRACK TOP
Publicado el 7th Octubre, 2009 por KaRMaN. Archivado en Arduino, Programación.
Leido 3,518 veces. Comments Off

Comentaba en un post anterior mis desventuras con una pantallita de leds en la que tenía que usar un hack para poder visualizar lo que queria.

La librería LedDisplay tiene un contador de posición del ‘cursor’ en la pantalla que al crear el objeto se fija a cero. Una pantalla de 8 caracteres tendría posiciones de la cero a la siete mientras que una de 4 caracteres tendría posiciones de la cero a la tres; al crear el objeto de pantalla se fija el cursor en la posición cero y según vamos escribiendo en la pantalla el cursor va incrementando. Usando el método objeto.home() volvemos a la posición cero, pero a mi no me funcionaba, me mostraba la pantalla en blanco, por lo que tras unas cuantas pruebas descubrí que tenía que usar como cero la posición 4 con objeto.setCursor(4); en otras palabras, no conseguía visualizar nada si no empezaba a escribir desde la posicion 4 hasta la 7 definiendo el display de longitud 8.

El trabajo interno de la librería consiste en traducir los carácteres en cinco columnas de información de un byte cada una (recordemos que cada posicion de la pantalla es una matriz de leds de cinco columnas por siete filas) de forma que si tenemos una pantalla de ocho caracteres tendríamos que enviar cinco por ocho bytes, es decir, cuarenta.

Basandose en este razonamiento el desarrollador de la librería la programó con un array de longitud cuarenta en donde la posición del cursor se calcula multiplicandola por cinco, así si queremos escribir un carácter en la posición 4 de la pantalla, la multiplicamos por 5 y obtenemos como índice del array 20, posición a partir de la que empezamos a escribir.

Tras pensarlo detenidamente y estudiar el uso de registros de desplazamiento para crear conversores serie-paralelo se me ocurrió que la pantalla actuaba tal cual como un registro de desplazamiento y que al enviarle 40 bytes (para pantalla de 8) en lugar de 20 bytes realizaba un desbordamiento que en teoría saldría por la patilla  ’data out’ de la pantalla (empleada para el montaje en cascada de varias pantallas).

La solución vino con limitar la cantidad de bytes enviados a través del bus de datos en función de la longitud de la pantalla. El parche para la librería es este:

--- LedDisplay_orig/LedDisplay.cpp	2009-04-17 22:12:49.000000000 +0200
+++ LedDisplay/LedDisplay.cpp	2009-10-06 18:05:14.000000000 +0200
@@ -250,12 +250,14 @@

 // this method sends 320 bits to the dot register:
 void LedDisplay::loadDotRegister() {
+  // define max data to send, patch for 4 length displays by KaR]V[aN
+  int maxData = displayLength * 5;
   // select the dot register:
   digitalWrite(registerSelect, LOW);
   // enable writing to the display:
   digitalWrite(chipEnable, LOW);
   // shift the data out:
-  for (int i = 0; i < 40; i++) {
+  for (int i = 0; i < maxData; i++) {
     shiftOut(dataPin, clockPin, MSBFIRST, dotRegister[i]);
   }

Happy Hacking

Jugando un poco mas con el HCMS-290x

meneame.net TRACK TOP
Publicado el 3rd Octubre, 2009 por KaRMaN. Archivado en Arduino, Desvarios.
Leido 4,201 veces. 3 comentarios archivados.

He destripado un poco la librería de Arduino LedDisplay que comentaba en el pasado post para manejar la pantallita y he descubierto como dibujar en la pantalla lo que yo quiera modificando un poco el driver para añadir una función llamada writeRaw, que escribe la secuencia que yo quiera.

Aunque no está listo para una release, dejo aqui algunas imágenes de interés:

White Board Display Drawn

White Board Display Drawn

Pequeño ejemplo

Pequeño ejemplo

IconsHack

IconsHack

HCMS-290x con Arduino

meneame.net TRACK TOP
Publicado el 1st Octubre, 2009 por KaRMaN. Archivado en Arduino, Programación.
Leido 6,343 veces. Comments Off

Ayer estaba un poco aburrido y me acordé que de uno de mis desguaces (una placa de router modular Nortel) extraje una pequeña pantalla, y me propuse  hacerla funcionar. Está compuesta por 4 carácteres y cada uno de ellos es una matriz de leds de 7 de alto por 5 de ancho, lo que hacen 35 leds por carácter y 245 leds en total. Coste de la pantalla, casi 24€, o $28, dependiendo del sitio en donde se mire.

La pantalla está controlada por un pequeño micro controlador por lo que no hay que estrujarse mucho los sesos a la hora de manejar la pantallita; basta con mandarle por un pequeño bus serie los datos que queremos que represente.

Existe ya una librería para Arduino llamada LedDisplay que controla este tipo de pantallas, pero desgraciadamente no funciona bien con el modelo de pantalla de 4 dígitos (al menos el mio, hay pantallas de 4, de 8 y de 8×2), por lo que he tenido que hacer un poco de trampas a la hora de programarla evitando funciones ya implementadas que no funcionaban.

Por lo visto si configuro la libreria LedDisplay para una pantalla de longitud 4 como la mía el texto no se mostraba. Haciendo pruebas (no se si es cosa de la pantalla o de la librería) descubrí que solo muestra caracteres desde la posición 4 a la 7, configurandola con una longitud de 8 carácteres.

De ahí el hack que se puede apreciar en el código fuente. Para cada impresión de pantalla hay que reiniciar la posición y mover el cursor a la posición 4. Esto desgraciadamente hace inservibles funciones de la librería como scroll(). Otra curiosidad, clear() tampoco funciona.

HCMS-290x driven by Arduino

HCMS-290x driven by Arduino

En este video se puede ver el funcionamiento de la pantalla con un texto sencillo:



El código fuente se puede descargar desde aqui.

Video Proyector BENQ PB2140

meneame.net TRACK TOP
Publicado el 11th Septiembre, 2009 por KaRMaN. Archivado en Sin categoria.
Leido 9,602 veces. 5 comentarios archivados.

Ya iba siendo hora de que me hiciese con un pequeño cine casero. Lo encontré en un Cash Converters una tarde paseando, por 60€. ¿La trampa? Apenas emitía luz, había que cambiarle la bombilla.

Video Proyector BENQ PB2140

Video Proyector BENQ PB2140

Cuando desmonté la bombilla comprendí porque no daba apenas luz. De algún modo la bombilla se calentó tanto que se acabó abombado en la zona de los electrodos, donde se produciría el arco eléctrico, haciendo que el volumen de espacio interior aumentase considerablemente, lo que significaría un descenso de la presión del mercurio; consumiendo la misma corriente la cantidad de luz era considerablemente menor. Mi teoría es que o bien se dejaron olvidado el proyector encendido durante mucho mucho rato o bien de alguna forma obstruyeron las vias de ventilación del mismo, por lo que el calor se acumuló y el cuarzo de la bombilla cedió a la presión abombándose hacia fuera ya que el contador de horas de la bombilla marcaba ~1300 horas de funcionamiento mientras que debería de aguantar entre 2000 y 3000 horas.

La bombilla en cuestión es una Philips UHP (Ultra high Pressure) 150/200W que consta de un foco reflector  de cristal que contiene la bombilla propiamente dicha. La bombilla resulta ser un tubo de cuarzo con dos bornes, sin filamento (bombilla de arco voltaico o descarga) y una especie de muelle enroscado alrededor (excitador inicial). El contenido de la bombilla es gas de mercurio a alta presión, unas 200 atmósferas, y los electrodos son de tungsteno. Para hacerse una idea de la eficiencia de este tipo de bombilla inventada por philips, son capaces de dar mas luz a 100W que una bombilla de hilo incandescente a 250W.

Bad Philips UHP 150/200

Se puede apreciar el abombamiento en la base de la bombilla.

En cuanto a la reparación, está clara; sustitución de la bombilla. Y con razón vendían el proyector a 60€, las bombillas pueden costar muchísimo dinero, mas de 200€ y algunas mas de 300€, dependiendo del proyector y de donde se compren.

Por mi parte, busqué bombillas en ebay pero sorprendentemente casi nadie tenía para ese proyector específico. Investigando un poco descubrí una lista de otros proyectores que usaban exactamente la misma lámpara; oficialmente he comprado una bombilla para un proyector Viewsonic por casi $150 (unos 103€, bendito dolar ^.^) que encaja y funciona perfectamente en mi proyector.

Conclusión, proyector nuevo que valía como $900 (con 1600 Lumenes ANSI y resolución SVGA 800×600 4:3) que en total ha costado 160€.