MAGIC WAND CON NXT-G
"Magic Wand" (Varita mágica) es un artefacto diseñado por Phillippe Hurbain y comercializado por Mindsensors.
La página de Mindsensors anuncia que no es posible programarlo con NXT-G pero, con paciencia, lo he podido conseguir. No es un proyecto de diez minutos ya que hay que soldar los LEDs. Pero se puede escribir, diseñar letras, logos, etc y funciona perfectamente. Podrás escribir "sobre el aire" cualquier tipo de letra o icono, incluso tipos distintos de letras: arial, times, etc.
En el video anterior lo he programado letra a letra, pero supongo que se pueden escribir palabras, eso sí, muy breves.
El proyecto usa 8 LEDs y está programado con NXT-G. Puedes consultar dudas en toda la parte digital de esta página para complementar lo que se explica aquí, aunque lo más probable es que necesites recurrir a secciones anteriores.
El proceso de programación es tedioso porque tienes que obtener los códigos de cada letra, pero cuando sepas cómo se hace, puedes escribir tanto texto como quieras. Usaremos el icono "Data Logger" para guardar los códigos de la secuencia de letras. Por ejemplo, la "O" seguida de un "espacio" es 129-126-126-129-255.
Así, poco a poco, se va escribiendo el texto que quieras.
Bueno, en realidad este es el diseño ligeramente modificado "a mi aire", ya que las instrucciones originales, si las hay, no las he encontrado. Afortunadamente por la red hay muchos ejemplos. Ahí van unas fotos. Al final del todo hay alguna más.
El inicio de la escritura de cada letra (o palabra, icono, etc), se realiza cuando el brazo en su desplazamiento, activa el pulsador.
La parte electrónica no tiene mucho misterio. Es literalmente la misma construcción que la de la sección de 8 Leds. Acude allí para info adicional.
La única precaución es montarlos correlativos de arriba a abajo según los pines del circuito integrado. Es decir, el LED de más arriba se corresponde con el pin 1 y el último de abajo con el pin 8.
Me ha resultado muy cómodo usar cable de "bus" (de los de los ordenadores) para evitar demasiado cable suelto.
En mi caso he usado una "barrita de Leds", pero puedes usar 8 LEDs normales e "incrustarlos" en los agujeros de las vigas de LEGO. La barrita tiene 10 LEDs, así que 2 no funcionan. Están soldados sobre una pequeña placa para poder sujetarlos bien, pinzados con pines LEGO de esos más cortos.
Hay que hay que soldar 1 cable por cada LED más uno adicional que corresponde con el cable verde de 4,3 V del integrado. En total por tanto habrá 9 cables. Es decir, una de las patas de cada led, la que se conecta al polo positivo es común, por lo que debes soldarlas entre sí.
Recuerda que los LEDs tienen polaridad, y por tanto solo funcionan si los conectas en el sentido correcto. Y respecto a la parte eléctrica poco más.
Lo más sencillo para explicarme creo que es empezar escribiendo una letra para ver el proceso. Recuerda que para encender un led, se usa el icono "Write" con la dirección 64. Estos números no cambian. El resto de números que iremos citando aquí se corresponden con el "WValue". No olvides desactivar el registro y usar el puerto 1.
Ya sabes que si no dispones de este icono, puedes obtener información para su descarga en el Software necesario. También tienes un tutorial para Instalar bloques.
El programa empieza con 3 parpadeos de los 8 leds, para comprobar que todos están bien conectados. Es fácil que algún cable se suelte con el movimiento del brazo. El ciclo está configurado en "Count = 3".
Vamos ahora con el diseño de la letra "L". Para eso, abre una hoja de cálculo y pintas con cuadros verdes una "L". Fijate que la cuadrícula tiene 4 columnas y 8 filas. Puedes poner otras cuadrículas de 8x8, pero la programación cambia. Eso te permitiría más detalle en cada letra.
De momento nos quedamos con la cuadrícula de 4x8. Cada fila se corresponderá luego con un LED. En su interior pones un 0 si está en verde y un 1 si no está pintada.
Los Leds se encenderán según ese patrón que acabas de pintar. Para saber a qué número se corresponde, lees de abajo a arriba. La primera columna no tiene problema, es un cero la leas como la leas. O sea, con el 0 se encienden todos los LEDs.
La segunda es 00111111. Abre la calculadora del PC, seleccionas "Ver/Científca" o "Ver/Programador" según versiones y seleccionas "Binario". Escribes ese número y lo conviertes en decimal. Obtienes 63, el valor de la segunda columna. Si no te aclaras, pincha en origen de estos números.
Unos ejemplos más. Por concretar, la segunda columna de la "R", escrita de abajo a arriba en binario es: 11110110 y que al convertirlo en decimal es 246.
Pues esta es la forma de diseñar las letras (o cualquier otra cosa). Así, cuando escribas 0-63-63-63-255 escribirás una "L" seguida de un espacio en blanco (el 255). A continuación hay que indicar el tiempo. La escritura se inicia cuando se aprieta el pulsador del puerto 2. El motor está a 85 de potencia. A más no se enciende el LED, no se porqué.
En lugar de escribir 3 veces el "Write" con un 63 con sus 3 correspondientes esperas de 0,006 s, he escrito uno solo con 18 ms. Al final, el icono del interruptor deja el programa es espera hasta que vuelve a pulsar el interruptor a la izquierda del todo. En ese momento se activa la secuencia para escribir una nueva letra.
Si quieres escribir más letras, repites la secuencia. Constará de 5 iconos "Write" y 5 iconos "Wait" de 0,006 segundos, contando el 255 final obligatorio. El último icono debe ser el de espera del pulsador. Y todo dentro de un bucle infinito.
Como podrás imaginar, con pocas letras el programa puede convertirse en un monstruo en poco tiempo. Para evitarlo y poder escribir todo lo que queramos, vamos a usar el Data Logger.
Habitualmente el Data Logger (DT) almacena ristras de números procedentes de los sensores o cualquier otro elemento externo. Pero se puede usar a la inversa, es decir, creo un archivo MyFile.txt con la cantidad de números que quiera y luego lo almaceno en el NXT para que este lea los números y los convierta en letras.
Simplemente creas un archivo con ese nombre y escribes 0-63-63-63-255. Cada rayita representa un "ENTER". NOTA. La estructura del archivo .txt debe ser estricta: un número y un Enter. Por tanto el archivo acaba con un Enter. Cualquier otra opción, 2 enter al final del archivo por ejemplo, hará que no se lea bien y de error.
Una vez creado, en lugar del "Upload" del tutorial, usaremos el "Download" para pasar el archivo desde el PC al NXT. Debes ponerlo en el apartado "Others", tal como se explicó en el tutorial del DT.
El 255 final es para apagar. Se queda así apagado en espera de que el interruptor se pulse y se active de nuevo la secuencia de la siguiente letra. Mucho cuidado con el primer icono. En el siguiente apartado se aclara.
Hay que comentar algunas cuestiones, alguna importante, del programa. Empiezo por la más importante. Despues de pegarte el curro escribiendo el MyFile.txt, no se te ocurra comenzar el programa con el icono "Delete". Te cargarás en un momento toda la faena.
El primer icono está configurado en "Close". Es por si se quedó el archivo a medio cerrar. Es una forma de decir "ve a leer al inicio".
El motor se configura como arriba, con la potencia 85.
Flecha negra: la parte central es el meollo del programa. Ahí va leyendo de forma consecutiva y por orden los valores que hemos escrito en el txt. Por eso está encerrado en un bucle configurado en "Count" = 5 (flecha negra). Esto hace que lea los 4 valores de cada letra más el apagado, el 255.
Si construyeras letras de 8x8, deberías cambiar este valor.
Si quieres separar palabras, escribe 5 veces seguidas 255 en el archivo txt.
Flecha roja: Este bucle más exterior está configurado para que repita este ciclo tantas veces como letras hayas escrito en el txt. DEBES contar también los espacios como si fueran letras.
Como todo esto es un tanto lioso, lo mejor es probar y corregir.
De vez en cuando, aparece un icono de pulsador, puerto 2 y configurado en "Bumped", o sea, activar cuando se pulsa y suelta.
Si vas a escribir un texto muy largo, mejor no tener que calcular cada letra cada vez. Puedes escribir en una hoja de cálculo la "clave" de conversión. Por ejemplo, el archivo "miletra.xls" tendría en la primera columna la A, B, C... y en la segunda columna sus 5 valores equivalentes.
Y asi con los iconos, minúsculas, etc, siempre respetando las 4 columnas del dibujo, si no, no leerá nada.
De esta forma tan sencilla, los "creadores" pueden compartir en el foro, en un simple archivo de texto sus alfabetos. También estaría bien que dejaras allí tu opinión o dudas, a ver si el foro va cogiendo movimiento. Me gustaría saber mucho tu opinión sobre la página para saber si la estoy orientando bien o es muy complejo. O para subir tu propio montaje.
Algún detalle fotográfico adicional que ayude a la construcción. Fijate bien en la zona rodeada con un círculo rojo. Debe quedar libre de ejes que lo atraviesen para no limitar el movimiento del brazo. Hay que usar pines.
El detalle del mecanismo para accionar el interruptor:
Suerte.