2 PCF8574:

16 I/O EN UN PUERTO

Conectar 2 PCF8574 y 16 LEDs a un Puerto de LEGO MINDSTORM NXT Conectar 2 PCF8574 y 16 LEDsa a un Puerto de LEGO MINDSTORM NXT

down-rojo-flecha

Como ya hemos dicho, es posible conectar 2 (e incluso más) CI del tipo PCF8574. Vamos a ver cómo. Con esto tendremos 16 Entradas y/o Salidas. De la misma forma que el montaje eléctrico se complica, el de programación también. Aprovecharemos para avanzar y utilizar un nuevo icono, que nos puede resultar muy útil.


CIRCUITO BASICO


Empezaremos con el circuito básico.


Esquema Conectar PCF8574 16 LEDs a un Puerto de LEGO MINDSTORM NXT

16 SALIDAS


Una vez tengas conectados todos estos cables, puedes usar las salidas P de cada uno de los dos CI que acabamos de montar.


Usaremos la representación alternativa en lugar de la anterior. Partiremos del circuito básico que acabamos de ver, así que ninguno de esos cables los representaremos aquí. Las resistencias, como siempre, de 220 ohm o 330 según el color del LED (o la luz que haga).


Esquema 16 I/O a un Puerto de LEGO MINDSTORM NXT

Foto 16 I/O a un Puerto de LEGO MINDSTORM NXT

Y ¿cómo controlamos este monstruo?



UN NUEVO ICONO


POW

Si no lo tienes disponible, ve al Software Necesario. Allí se explica cómo descargarlo y su uso, aunque parece bastante evidente. Se explica también un pequeño programa para generar los números que encienden cada uno de los LEDs.


DIRECCIONES


Hasta ahora, para encender un LED con el icono "WRITE" o para leer el estado de un interruptor con "READ" poníamos siempre un 64 en la dirección, en la primera casilla, el "Address". Con esto leíamos cualquiera de las ocho posiciones del circuito, tal como estaba montado. Para leer las de un segundo circuito conectado al primero tal como lo hemos conectado, es exactamente igual, pero poniendo un 66.


Configuracion icono digital I2C 16 LEDs LEGO MINDSTORM NXT

El icono de "READ" para los interruptores sigue el mismo criterio de direcciones, claro. De esta forma, podremos encendre cualquiera de los 16 LEDs que hemos montado. O poner 8 LEDs y 8 interruptores o cualquier otra combinación que se te ocurra. Ahora tienes 16 I/O digitales en un solo puerto del NXT.


UN PROGRAMA POSIBLE


Sabiendo cómo se controlan los LEDs, los programas pueden ser infinitos. Pondré este para que tengas algún ejemplo.


Programa sensor digital I2C 16 LEDs LEGO MINDSTORM NXT

NOTAS


1. Los "Loops" están configurados en Forever el más externo. Count 2 el de en medio y Count 8 el interior (ver imagen).

2. Para que aparezca el cable del círculo negro, activa la pestaña "Counter" en el Loop.

3. He cambiado el color de un cable amarillo de la imagen a rojo para que se vea mejor.

4. El primer icono es la variable "Number 1". Está configurado en "Write" valor 64. El último es lo mismo, pero el valor es 66.

5. Puedes variar la velocidad del programa modificando el valor del icono de tiempo.

USOS


Con este montaje y alargando suficientemente los cables, sería posible programar un vehículo que fuera encendiendo sus luces de posición, antiniebla, marcha atrás, emergencia, intermitente... según le fueras dando las órdenes de alguna forma. Aún te quedan 3 puertos disponibles para conectar cualquier cosa.


O bien puedes quitar algunos LEDs y poner 4 o 5 interruptores para controlarlos. Veremos un ejemplo un poco más abajo.


16 ENTRADAS


Si en lugar de 16 LEDs pones 16 interruptores, tendrás un piano. No repetiré los montajes. Se parte del circuito básico de arriba del todo y se conectan los 16 pulsadores, sin resistencia. Recuerda que los interruptores se conectan entre el pin correspondiente del circuito y el cable negro del NXT.


Para leer qué interruptor está pulsado, hay que usar el icono "READ", uno con la dirección 64 y otro con la 66.


COMBINANDO ENTRADAS Y SALIDAS


Para no hacerlo muy complicado, veremos un ejemplo de solo 2 Entradas y 2 Salidas, pero usando el montaje que tenemos de los 2 PCF8574 conectados. Tendremos por tanto 12 I/O sin usar. Partiremos del circuito básico. No pondremos en el esquema nada referente al circuito básico.


He añadido un recuadro en el interior del circuito con las direcciones para tenerlas presentes, ya que la programción se lía bastante. Vale la pena usar lápiz y papel.


Esquema 2 PCF8574 I2C conectar LEDs LEGO MINDSTORM NXT
Foto 2 PCF8574 I2C conectar LEDs LEGO MINDSTORM NXT

Lo que sí te recomiendo es que pongas todos los pulsadores o interruptores en el mismo circuito, que estén juntos. Digo esto porque he probado este mismo montaje poniendo un pulsador en cada circuito y las luces parpadeaban. Al juntar los interruptores en el mismo CI, y los LEDs en el otro, esto desapareció.


Programa 2 PCF8574 I2C conectar LEDs LEGO MINDSTORM NXT

En el ejemplo de arriba aparece la pestaña 252. Las siguientes pestañas son 253, 254 y 255. En la pestaña 252, aparece el icono "WRITE" con el "WVALUE" de 252. En la pestaña 253, el WValue es 253 y así hasta 255.


Esta coincidencia de valores es una casualidad, y se debe solo a que hemos conectado los leds en los mismos valores que los interruptores. Lo que cambia es el 64 para el icono "READ" al principio de todo para que lea del primer circuito. Y los "WRITE" deben corresponder al segundo circuito, por lo que todos llevarán un 66.


El WRITE 66-253 y 66-254 están claros. Encienden cada uno de los LEDs. El 66-255 (que es el valor por defecto) también está claro, apaga todo cuando se lea 255 en los interruptores, o sea, cuando no esté ninguno pulsado. ¿y el 252? ¿qué pinta?.


Si pruebas y quitas esa pestaña del programa, verás que cuando pulses ambos interruptores a la vez, no se enciende nada. Pulsa ambos y mira el valor en pantalla: 252. Por eso no se puede encender ninguna, porque 252 no es ni 253 ni 254, de perogrullo. Pero hay que caer en ello.


Esa opción, a menos que la programemos, no estará. Al pulsar ambos a la vez, se "suman" sus valores y hay que programar una nueva pestaña. ¿Y qué valor ponemos en ella?. Aunque sepamos de antemano que es 252, vamos a calcularlo.


Queremos encender los dos LEDs del segundo CI, el 254+253. En binario esto es 1111-1110 y 1111-1101. Y como queremos que encienda ambas a la vez, pondremos un cero en cada uno de esos lugares: 1111-1100. Este número es 252.


Prueba tú a conectar los 2 LEDs en las posiciones P1 y P2 y todos estos números cambiarán. Te harás tu propio lío y podrás ver si lo has entendido bien, ya que la mecánica para cualquier otra opción es la misma, siempre que tengas claro de dónde leer y dónde escribir.


Con este montaje sí podrías controlar por ejemplo 12 leds y controlarlos con 4 interruptores, por ejemplo.


Y UN POTENCIÓMETRO...


Este montaje pero con un PCF8574 ya lo hicimos en Controlando 8 LEDs .


Recuerda, tal como ya vimo es su momento que el cable blanco no está conectado. Podrías intercalar también aquí uno entre cable blanco y negro y usar ese valor con algún fin.


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.


MAS ICONOS


Bueno, esto no será mas que una sugerencia. Puede ser el momento de volver a la sección de Software y descargar los Iconos Avanzados para exprimentar con ellos. Si dominas su uso, te dará mucho más control sobre lo que puedes hacer con los LEDs y los interruptores. Pueden llegar a ser de lo más liosos, así que si no te aclaras bien con ellos, pues como si no existieran.


up-rojo-flecha
Conectando 8 LEDs y 1 potenciómetro
PCF8591: 4 entradas analógicas
.