Www.arduino.cc Es Tutorial Shiftout

download Www.arduino.cc Es Tutorial Shiftout

of 10

Transcript of Www.arduino.cc Es Tutorial Shiftout

Arduino - ShiftOut

Page 1 of 10

Compra

Descarga

Primeros Pasos

Aprende

Referencia

Hardware

FAQ

Blog

Forum

Learning Examples | Foundations | Hacking | Links

Serie a Paralelo con un 74HC595Carlyn Maw and Tom Igoe Nov, 06 Traduccin Francisco Reinoso Jun, 10

Desplazamiento y el integrado 595

En algun momento surge la necesidad de usar mas pines de salida que las que trae la propia Arduino y necesita hoja tecnica de datos se refieren a este integrado como un "registro de desplazamiento de 8 bits con simultaneas usando unos pocos pines del microcontrolador. Incluso se pueden enlazar varios integrados de ampliamos el numero de salidas mucho mas. (Para encontrar integrados equivalentes en otros fabricantes hay y elimina la resistencias en serie.)

ampliarlas, esto se hace con un registro de desplazamiento. Este ejemplo est basado en el integrado 74HC595

salida serie o paralelo con latch (bloqueo); 3 estados.". En otras palabras, puedes usarlo para controlar 8 salida

buscar "595" o "596" en sus nmeros de referencia, hay muchos. El integrado STP16C596 por ejemplo posee 1

El modo de funcionamiento es algo llamado "comunicacin serie sincrona", por ejemplo, tu puedes transmitir constantes para diferenciar los bits enviados por el primer pin. Este modo de comunicacin difiere con la

enviando pulsos altos y bajos por un pin mientras en un segundo pin, el pin de reloj (clock) vas enviando pulsos

"comunicacin seri asincrona" de la funcin Serial.begin() en la que emisor y receptor fijan de forma indepen

una velocidad de transferencia. Una vez que se ha transmitido el byte completo al registro los valores altos (HIG pines que deseamos. La "salida serie" de este integrado se basa en un pin extra que retransmite la informacin serie recibida

bajos (LOW) de cada bit se asignan a los pines de salida. Esta es la "salida paralelo", teniendo los valores situad

microcontrolador sin cambios. Esto significa que podemos encadenar dos integrados 74HC595 y transmitir 16 b de los ejemplos.

bytes) donde los primeros 8 bits "atraviesen" el primer integrado almacenandose en el segundo. Esto lo veremo

http://www.arduino.cc/es/Tutorial/ShiftOut

24/10/2011

Arduino - ShiftOut

Page 2 of 10

"3 estados" se refiere al hecho de que podemos seleccionar los pines de salida como alto (HIGH), bajo (LOW) o impedancia." Al contrario que HIGH y LOW no podemos seleccionar los pines para alta impedancia de forma individual. Solo podemos seleccionarlo para todos los pines a un tiempo, esto es algo tan especializado mostrado en los ejemplos. Aqui tenemos la definicion de los pines obtenida de Phillip's datasheet. PINS 1-7, 15 Q0 " Q7 Pins de salida PIN 8 PIN 9 PIN 10 PIN 11 PIN 12 PIN 13 PIN 14 PIN 16 GND Q7" MR SH_CP ST_CP OE DS Vcc Ground, Vss Salida Serie Master Reset, activo = low Pin Clock Pin Latch Salida disponible, activo = low Entrada Serie Voltaje

Ejemplo 1: Un registro de desplazamientoEl primer paso es ampliar tu Arduino con un registro de desplazamiento E l ci r cu i to 1 . En cen d i do Haz las siguientes conexiones: GND (pin 8) a masa Vcc (pin 16) a 5V OE (pin 13) a masa MR (pin 10) a 5V

Esta configuracin hace que todas las salidas estn activas y disponibles todo el tiempo. El inconveniente d y antes de que el programa arranque. Esto se puede corregir controlando los pines MR y OE desde la Arduino el momento funciona y deja libres mas pines en la Arduino.

configuracion es que los leds parpadearan en su ultimo estado o de forma aleatoria cada vez que encendemos el

http://www.arduino.cc/es/Tutorial/ShiftOut

24/10/2011

Arduino - ShiftOut

Page 3 of 10

2 . Con ect ar con n u es tr a Ar d ui n o DS (pin 14) al pin digital 11 (cable azul) SH_CP (pin 11) al pin digital 12 (cable amarillo) ST_CP (pin 12) al pin digital 8 (cable verde)

Desde ahora sern conocidos como dataPin (DS), clockPin (SH_CP) y latchPin (ST_CP) respectively. Aviso so condensador de 0.1uF (100nF), si detecta parpadeos cuando activa el latchpin puede cambiar este valor hasta corregirlo.

http://www.arduino.cc/es/Tutorial/ShiftOut

24/10/2011

Arduino - ShiftOut

Page 4 of 10

3 . A ad i m os l o s 8 l ed s . En este caso conectamos el catodo (patilla corta) de cada led a masa (gnd), y el anodo (patilla larga) de se denomina "fuente de corriente". Algunos registros de desplazamiento no pueden hacer esto y solo larga) directamente a 5V y los catodos (patilla corta) a las salidas del integrado. Puedes verificar esto protegerlo de sobrecargas.

respectivo del integrado. Usando el registro de desplazamiento como suministrador de corriente para encender

como "sumidero de corriente" en cuyo caso tendrs que cambiar la direccin de los leds poniendo los anodos

especfica de tu chip "595". NOTA: no olvides aadir una resistencia de 220 ohmios en serie con cada led par

http://www.arduino.cc/es/Tutorial/ShiftOut

24/10/2011

Arduino - ShiftOut

Page 5 of 10

Di a gr a ma del ci rc ui t o

E l Co di go

Aqui tenemos tres codigos de ejemplo. El primero es el tipico codigo "Hola Mundo" que simplemente muestra u con valor entre 0 y 255. El segundo programa enciende un led cada vez. El tercero efectua ciclos en un array. COMPARAR DESCRIPCIN CON CODIGOS FUENTE, PARECE QUE HAN AADIDO PROGRAMAS SIN DOCUMENTAR CORRECTAMENTE Este cdigo est basado en la informacin de arriba, temporizaciones y tabla logica. La tabla logica nos se almacenan en la memoria interna del registro de desplazamiento, la manera en que los datos pasan de la me los pines al pasar el latchpin de LOW a HIGH haciendo que se enciendan los LEDS. Code Sample 1.1 Hola mundo Code Sample 1.2 Uno a Uno Code Sample 1.3 Dos registros de desplazamiento

basicamente lo que nos interesa saber sobre lo que ocurre cuando usamos el integrado, como la forma en que lo

http://www.arduino.cc/es/Tutorial/ShiftOut

24/10/2011

Arduino - ShiftOut

Page 6 of 10

Ejemplo 2En este ejemplo aadiremos un segundo integrado, duplicando el nmero de pines de salida usando el mismo nmero de pines de la Arduino. E l Ci r cu i t o 1 . A ad i m os e l s egu n do i n tegr a do . Comenzando desde el ejemplo anterior podemos aadir un segundo integrado en la protoboard. Usamos las mismas conexiones de tensin y masa.

Tabla logica del 595

Diagrama de temporizaciones del 595

http://www.arduino.cc/es/Tutorial/ShiftOut

24/10/2011

Arduino - ShiftOut

Page 7 of 10

2 . Con ect am o s el s egu n d o i n t egr ad o.

Dos de esas conecciones simplemente alargan las lineas de reloj y latch desde la Arduino hasta el segundo integ segundo integrado (pin 14).

(cables amarillo y verde). El cable azul sale desde la salida serie del primer integrado (pin 9) hasta la entrada se

3 . A ad i m os m a s l ed s . En este caso aadimos leds de color verde para diferenciar los bytes enviados a cada integrado con mas

http://www.arduino.cc/es/Tutorial/ShiftOut

24/10/2011

Arduino - ShiftOut

Page 8 of 10

http://www.arduino.cc/es/Tutorial/ShiftOut

24/10/2011

Arduino - ShiftOut

Page 9 of 10

Di a gr a ma del ci rc ui t o

E l Co di go

De nuevo tenemos tres cdigos fuente. Si eres curioso intentars por ti mismo extender el primer ejemplo pa ambos integrados y ver lo que ocurre. Codigo de ejemplo 2.1 Doble Contador Binario de desplazamiento pasar el primer byte a traves de l hacia el segundo registro encendiendo los LEDs segundo byte se muestra en los LEDs rojos.

Solo tenemos que aadir una linea de codigo al ejemplo 1 para enviar un segundo byte. Esto fuerza al primer r

http://www.arduino.cc/es/Tutorial/ShiftOut

24/10/2011

Arduino - ShiftOut

Page 10 of 10

Codigo de ejemplo 2.2 2 Bytes uno a uno Comparando este codigo con el del ejemplo 1 veras que hay muy poca diferencia. La funcion blinkAll() ha sido cambiada por la funcion blinkAll_2Bytes() para incorporar los 16 bits. En la version 1 la activacion del dentro de la subfuncion lightShiftPinA() y lightShiftPinB(), en este ejemplo lo hemos movido al bucle principal necesidad de ejecutar cada subfuncin dos veces por linea una para los LEDs verdes y otra para los rojos. Codigo de ejemplo 2.3 - Definicion de doble arrayl

Como en el ejemplo 2.2 este ejemplo 2.3 utiliza la nueva funcin blinkAll_2bytes(). La gran diferencia con res tenemos definidos dataRED, dataGREEN, dataArrrayRED y dataArrayGREEN. Esto siginfica que esta linea data = dataArray[j]; se convierte en dataRED = dataArrayRED[j]; dataGREEN = dataArrayGREEN[j]; por otro lado esta llamada shiftOut(dataPin, clockPin, data); pasa a formularse as. shiftOut(dataPin, clockPin, dataGREEN); shiftOut(dataPin, clockPin, dataRED); Share |

ejemplo 1.3 es solo que en vez de existir una variable llamada "data" y un simple array llamado "dataArray" aho

Arduino | Edit Page | Page History | Printable View | All Recent Site Changes

http://www.arduino.cc/es/Tutorial/ShiftOut

24/10/2011