WWW - Arduino.cc Es Tutorial Shiftout
WWW - Arduino.cc Es Tutorial Shiftout
WWW - Arduino.cc Es Tutorial Shiftout
Page 1 of 10
Compra
Descarga
Primeros Pasos
Aprende
Referencia
Hardware
FAQ
Blog
Forum
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
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 2
En 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.
http://www.arduino.cc/es/Tutorial/ShiftOut
24/10/2011
Arduino - ShiftOut
Page 7 of 10
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