8 LEDs,

1 POTENCIOMETRO

Y UN SENSOR DE COLOR

Conectar potenciometro y leds a LEGO MINDSTORM NXT

down-rojo-flecha

En este montaje tengo la sensación de hacer trampa, pero una trampa muy útil. Te habrás dado cuenta de que en todos los montajes que hemos hecho hasta ahora no hemos utilizado el cable blanco del NXT. Pues lo vamos a aprovechar para conectar un potenciómetro. Con él, controlaremos los 8 LEDs que tenemos conectados.






Digo que es un poco tramposo porque esta señal analógica del potenciómetro no pasa por el circuito integrado, de forma que no la procesa de forma digital.


Para procesar estas señales analógicas (las que pueden tomar muchos valores en lugar de 1 y 0 únicamente) no nos serviría el PCF8574. Habría que usar el PCF8591, que aún no hemos visto.


Al final, construiremos un Sensor de Color para conectarlo al NXT.


MATERIAL

1. Los mismos que los del montaje de 8 LEDs.

2. Un potenciómetro de 10K Con otro valor tendrás que adaptar muchos números del programa.

3. Un cable pequeño para conectarlo.


MONTAJE


Este montaje es exactamente igual al de los 8 LEDs, pero añadiendo un potenciómetro. Me disculparás si ya lo habías desmontado, pero es exactamente el mismo. Fijate bien en la numeración de los pines, estamos usando la representación alternativa que ya explicamos.


Guiate por los números, no por dónde están dibujados los cables. Si te lias, siempre puedes volver al montaje de 8 LEDs.


Y si aún lo tienes montado, sólo tienes que pinchar el potenciómetro de 10K en un lugar vacío de la placa. Tiene 3 patas. Conectas con un pequeño cable la pata central del potenciómetro al cable negro del NXT. Ahora conectas el cable blanco del NXT a una de las patas de los extremos. El otro extremo del potenciómetro quedará sin conectar. Y ya está.


Si quieres cambiar el sentido de giro de las luces, conectas el cable blanco del NXT a la pata del otro extremo que estaba libre.


Esquema conectar 8 leds y potenciometro a LEGO Mindstorm NXT

Quedaría así:


Foto conectar 8 leds y potenciometro a LEGO Mindstorm NXT

PROGRAMA

Sin duda lo más complicado es el programa. Es bastante largo. Intentaremos ponerlo lo mejor posible. Lo primero que haremos es leer el valor RAW obtenido con el potenciómetro. Este valor no se lee con el bloque digital, ya que su señal no pasa por el CI. Lo leeremos como ya vimos en el potenciómetro, en sensores analógicos.


Usaremos el bloque del Sensor de Contacto para leer el RAW. Según ese valor, activaremos el LED correspondiente.


El problema es que el potenciómetro no varía entre 0 y 8. El de 10K varía entre 0 y 509 de RAW. Dividimos pués 509 entre 8 y sale casi 64. Así que cuando raw esté entre 0 y 64, encendemos el led 1. Cuando esté entre 65 y 127, el segundo. Entre 128 y 191...


Los valores extremos, el 0 y el 509 de RAW los dejaremos para apagar todos los LEDs. Esto lo haremos al final del programa. En la sigiente tabla de valores, el que está en amarillo es el valor mínimo del icono "RANGE".


El verde es el máximo. Algo más abajo tienes la configuración del primer "RANGE" para que veas lo que quiero decir y en las imágenes están señalados con flechas rojas. Así podrás programar todos los bloques "RANGE" del programa (menos el último).


Tabla valores digitales 8 leds y potenciometro LEGO Mindstorm NXT

Todos están encerrados en un bucle infinito. Por cierto, para que no te vuelvas loc@ con el cablecito amarillo que recorre todo el programa y que viene del RAW, si pones el cursor más o menos donde está el puntito rojo, cambiará de forma. Y cuando lo haga, aprietas el botón izquierdo del ratón y lo arrastras hasta el siguiente "RANGE". Así te resultará más fácil.


Vamos a ello. El programa, algo largo, empieza así:


Programa 8 leds y potenciometro LEGO Mindstorm NXT

Pondré también la configuración de algunos iconos adicionales de la imagen de arriba para que nadie se pierda:


Configurar 8 leds y potenciometro LEGO Mindstorm NXT

Y ahora viene (paciencia) el "cuerpo" del programa. Como verás, esto que sigue se repite 8 veces más.


Para simplificar, ya que en la parte de abajo del switch no hay nada, hemos quitado la pestaña "Flat View" que verás en el círculo verde de la imagen de arriba.


El resto de los switch los pondremos ya así, aunque son lo mismo (ver flechas negras). Solo está desplegado el primer switch del programa. Dentro de la parte superior del switch va el icono "WRITE" de siempre, cada uno con su valor correspondiente: 254, 253, 251, 247, 239, 223, 191 y 127.


Dentro de cada icono "RANGE" irán los valores máximo y mínimo de la tabla anterior (flechas rojas). Esta secuencia de bloque "RANGE" más bloque "SWITCH" es la que hay que repetir 8 veces.


Programa PCF8574 I2C leds y potenciometro LEGO Mindstorm NXT

El 255 para apagar todo viene a continuación del octavo switch, por lo que en total sumarán 9 range + switch. Fijate que este último icono es el único que está configurado en "Outside Range". Con esto último, cuando gires a tope el potenciómetro y marque cero (o 509), se apagarán todos, ya que estos valores están fuera de esta franja.


Programa conectar sensor digital PCF8574 I2C a LEGO Mindstorm NXT

Bueno, pués ya está. Con esto debería funcionar (al menos el mío funciona). Espero que haya suerte.


Actualización 1/7/11:

Os dejo aquí un enlace al foro de una modificación muy vistosa realizada por Jaume a este circuito para que veáis más posibilidades. Incluye video y utiliza 2 PCF8574 para controlar 16 LEDs con un potenciómetro y variar la velocidad de encendido, pero podría hacerse con 8 LEDs. El circuito entonces sería el mismo que el descrito antes.

MAS SENSORES


Ya que estamos, en realidad no sólo podrías conectar ahí un potenciómetro, sino calquiera de los sensores analógicos que funcionen a dos hilos (blanco y negro) y que ya vimos en los Sensores Analógicos: un termómetro, otro interruptor (o cuatro), un sensor de luz ambiente...


Esos valores se leerían con el RAW de un sensor de contacto, tal como vimos allí. Es como si toda la parte digital no estuviera y tuvieras disponible el cable blanco y el negro. Y con ellos ya sabes todo lo que se puede hacer.


UN SENSOR DE COLOR

Este sensor no lo he construido personalmente, así que no se bien cómo se comporta, pero no es muy diferente al resto. Conecta 3 LEDs, uno rojo, uno amarillo y uno azul y añade un LDR.


El LDR se conecta como el potenciómetro: un pin al negro y el otro extremo del LDR al cable blanco del NXT. Todo muy juntito y protegiendo el LDR con una cartulina para que no lo iluminen directamente los LEDs. Ya tienes el sensor de color hecho.


Circuito Construye Sensor de color casero LEGO Mindstorm NXT

Más complicada será la programación y calibración. El programa puede ser similar al descrito arriba para el potenciómetro. Pasa el sensor cerca de la carta de colores de la alfombrilla de pruebas del NXT y ve anotando los valores que obtienes en cada color. Luego programas. Todo el programa se puede incluir luego en un My Block.


Supongo que los tres LEDs deben estar encendidos al mismo tiempo para la lectura. Es cuestión de hacer pruebas y jugar.


En cada uno de los switchs del programa, en lugar de encender un led, se puede poner una variable (la de la maleta, no te confundas) en "WRITE" que escriba un número según el color detectado para que al final lo presente en pantalla.


Es decir, si la lectura del RAW está entre 65 y 127 (por ejemplo) pones una variable, activas la pestaña WRITE y almacenas un 2.


Con el 2 sabrás que corresponde por ejemplo al amarillo (según cómo te hayan salido las pruebas previas). Y así vas asignando números a colores en cada switch. Quizás más adelante amplie esta sección y detalle mejor el sensor pero con algunas pruebas, espero que pueda funcionarte.


up-rojo-flecha
Conectando 4 pulsadores y 4 LEDs
2 PCF8574: 16 LEDs
.