PRÁCTICAS DE PROGRAMACIÓN CON ARDUINO
P11: CONTROL MATRIZ DE LEDS SIN LIBRERÍA
José	
  Pujol	
  Pérez	
  
IES	
  Vicente	
  Aleixandre	
  
OBJETIVOS
•  Controlar una matriz de LEDS sin usar librería
•  Usar un registro de desplazamiento
	
  
Ideas Previas:
•  ¿Qué es una matriz de LEDs?
•  ¿Para qué nos puede servir?
•  ¿Puedo controlarla con Arduino? ¿Cuantos pines
digitales necesito?
•  ¿Conoceis alguna forma de ahorrar pines?
INTRODUCCIÓN
Controlar una matriz de LEDs a través de los registros
de despalazamiento
Ideas:
•  Encender sucesivamente todos los puntos de la
matriz
•  Controlar el encendido de un punto con el joystick o
el acelerómetro
•  Añadir proporcionalidad al movimiento
HACER
•  MATRIZ DE LEDS
•  REGISTRO DE DESPLAZAMIENTO
•  CONEXIÓN ARDUINO MATRIZ DE LEDS
•  FUNCIÓN SHIFTOUT
•  TIPO BYTE
•  TIPO ARRAY
•  EJEMPLO CONTROL MATRIZ
INFORMACIÓN
 
MATRIZ DE LEDS
Es un encapsulado que contiene LEDs distribuidos en
filas y columnas
5 Filas y 7 Columnas à M5x7= 35 LEDs
Cada punto de la matriz es localizado por su posición
M(i,j)=M(2,3)
 
MATRIZ DE LEDS
Configuración interna:
•  Las columnas están conectadas a los ánodos de los
LEDs
•  Las filas están conectadas a los cátodos
 
REGISTRO DE DESPLAZAMIENTO
Transmite un byte, bit a bit a sus salidas desde Q0àQ7
Nos permite aumentar el número de salidas digitales
disponibles de Arduino
Salidas digitales: Q0-Q7
Datos: byte enviado por Arduino 10101010
Reloj: marca la velocidad de desplazamiento de los bits
Latch: habilita la entrada de datos
74HC595
 
REGISTRO DE DESPLAZAMIENTO
Salidas digitales Q0-Q7
Necesita 3 pines para ser controlado:
•  DS: Datos serie (byte) enviados por Arduino
•  SHCP= Reloj, velocidad de desplazamiento de los bits
•  STCP= LATCH, si está a 0 ''escucha'' los datos
entrantes, cuando se pone a 1 los muestra
 
REGISTRO DE DESPLAZAMIENTO
Registros en serie:
•  Comparten señal de reloj y de activación
•  Los datos se transmiten a través de Q7'
•  El primer byte pasa al segundo registro
 
CONEXIÓN ARDUINO MATRIZ LEDS
FUNCIÓN SHIFTOUT
Transmite un byte bit a bit
- shiftOut (dataPin, clockPin, bitorder,value); 	
dataPin: pin que transmite los datos	
clockPin: pin del reloj	
bitorder: MSBFIRST / LSBFIRST	
MSBFIRST: transmite primero el bit más
significativo
LSBFIRST: transmite primero el bit menos
significativo
value: el byte a transmitir
TIPO BYTE
- byte b;	
Variable que almacena un byte = 8 bits
El byte lo podemos codificar en formato binario
byte b= B0001000;	
El byte lo podemos codificar en formato decimal 0-255
byte b= 16;	
El byte lo podemos codificar en formato hexadecimal
byte b= 0x10;
ARRAY
Es una colección de variables indexadas por un número
Para definir un array	
- tipo nombre[#]={v1, v2,...}	
byte columna[2]={B1000000, B0100000};
Para definir uno de sus elementos	
columna[0]=B1000000;
ARRAYS MATRIZ
Para indicar un 1 en las columnas y un 0 en las filas
enviando el bit menos significativo primero:
byte columna[7]={B00000010, B00000100, B00001000,
B00010000, B00100000, B01000000,B10000000};	
	
byte fila[5]= {B11110111, B11101111, B11011111,
B10111111,B01111111};
 
EJEMPLO ENCENDER UN PUNTO MATRIZ
•  ¿Qué hemos conseguido hacer?
	
  
reflexionamos
 
	
  
	
  
Este	
  guía	
  se	
  distribuye	
  bajo	
  licencia	
  Reconocimiento-­‐	
  ComparBrIgual	
  CreaBve	
  
commons	
  4.0	
  	
  
	
  
	
  
(cc)	
  2015	
  José	
  Pujol	
  Pérez	
  Some	
  rights	
  reserved.	
  This	
  work	
  licensed	
  under	
  CreaBve	
  
Commons	
  APribuBon-­‐ShareAlike	
  License.	
  To	
  view	
  a	
  copy	
  of	
  full	
  license,	
  see	
  	
  	
  	
  	
  	
  	
  	
  	
  
hPp://creaBvecommons.org/licenses/by-­‐sa/3.0/	
  or	
  write	
  to	
  CreaBve	
  Commons,	
  559	
  
Nathan	
  AbboP	
  Way,	
  Stanford,	
  California	
  94305,	
  USA.	
  	
  
Some	
  of	
  the	
  figures	
  have	
  been	
  taken	
  from	
  the	
  Internet	
  Source,	
  and	
  author	
  and	
  licence	
  
if	
  known,	
  is	
  specified.	
  	
  
For	
  those	
  images,	
  fair	
  use	
  applies.	
  	
  
licencia

P11: Kiwibot Basic Shield: Control matriz led sin libreria

  • 1.
    PRÁCTICAS DE PROGRAMACIÓNCON ARDUINO P11: CONTROL MATRIZ DE LEDS SIN LIBRERÍA José  Pujol  Pérez   IES  Vicente  Aleixandre  
  • 2.
    OBJETIVOS •  Controlar unamatriz de LEDS sin usar librería •  Usar un registro de desplazamiento  
  • 3.
    Ideas Previas: •  ¿Quées una matriz de LEDs? •  ¿Para qué nos puede servir? •  ¿Puedo controlarla con Arduino? ¿Cuantos pines digitales necesito? •  ¿Conoceis alguna forma de ahorrar pines? INTRODUCCIÓN
  • 4.
    Controlar una matrizde LEDs a través de los registros de despalazamiento Ideas: •  Encender sucesivamente todos los puntos de la matriz •  Controlar el encendido de un punto con el joystick o el acelerómetro •  Añadir proporcionalidad al movimiento HACER
  • 5.
    •  MATRIZ DELEDS •  REGISTRO DE DESPLAZAMIENTO •  CONEXIÓN ARDUINO MATRIZ DE LEDS •  FUNCIÓN SHIFTOUT •  TIPO BYTE •  TIPO ARRAY •  EJEMPLO CONTROL MATRIZ INFORMACIÓN
  • 6.
      MATRIZ DE LEDS Esun encapsulado que contiene LEDs distribuidos en filas y columnas 5 Filas y 7 Columnas à M5x7= 35 LEDs Cada punto de la matriz es localizado por su posición M(i,j)=M(2,3)
  • 7.
      MATRIZ DE LEDS Configuracióninterna: •  Las columnas están conectadas a los ánodos de los LEDs •  Las filas están conectadas a los cátodos
  • 8.
      REGISTRO DE DESPLAZAMIENTO Transmiteun byte, bit a bit a sus salidas desde Q0àQ7 Nos permite aumentar el número de salidas digitales disponibles de Arduino Salidas digitales: Q0-Q7 Datos: byte enviado por Arduino 10101010 Reloj: marca la velocidad de desplazamiento de los bits Latch: habilita la entrada de datos 74HC595
  • 9.
      REGISTRO DE DESPLAZAMIENTO Salidasdigitales Q0-Q7 Necesita 3 pines para ser controlado: •  DS: Datos serie (byte) enviados por Arduino •  SHCP= Reloj, velocidad de desplazamiento de los bits •  STCP= LATCH, si está a 0 ''escucha'' los datos entrantes, cuando se pone a 1 los muestra
  • 10.
      REGISTRO DE DESPLAZAMIENTO Registrosen serie: •  Comparten señal de reloj y de activación •  Los datos se transmiten a través de Q7' •  El primer byte pasa al segundo registro
  • 11.
  • 12.
    FUNCIÓN SHIFTOUT Transmite unbyte bit a bit - shiftOut (dataPin, clockPin, bitorder,value); dataPin: pin que transmite los datos clockPin: pin del reloj bitorder: MSBFIRST / LSBFIRST MSBFIRST: transmite primero el bit más significativo LSBFIRST: transmite primero el bit menos significativo value: el byte a transmitir
  • 13.
    TIPO BYTE - byteb; Variable que almacena un byte = 8 bits El byte lo podemos codificar en formato binario byte b= B0001000; El byte lo podemos codificar en formato decimal 0-255 byte b= 16; El byte lo podemos codificar en formato hexadecimal byte b= 0x10;
  • 14.
    ARRAY Es una colecciónde variables indexadas por un número Para definir un array - tipo nombre[#]={v1, v2,...} byte columna[2]={B1000000, B0100000}; Para definir uno de sus elementos columna[0]=B1000000;
  • 15.
    ARRAYS MATRIZ Para indicarun 1 en las columnas y un 0 en las filas enviando el bit menos significativo primero: byte columna[7]={B00000010, B00000100, B00001000, B00010000, B00100000, B01000000,B10000000}; byte fila[5]= {B11110111, B11101111, B11011111, B10111111,B01111111};
  • 16.
  • 17.
    •  ¿Qué hemosconseguido hacer?   reflexionamos
  • 18.
          Este  guía  se  distribuye  bajo  licencia  Reconocimiento-­‐  ComparBrIgual  CreaBve   commons  4.0         (cc)  2015  José  Pujol  Pérez  Some  rights  reserved.  This  work  licensed  under  CreaBve   Commons  APribuBon-­‐ShareAlike  License.  To  view  a  copy  of  full  license,  see                   hPp://creaBvecommons.org/licenses/by-­‐sa/3.0/  or  write  to  CreaBve  Commons,  559   Nathan  AbboP  Way,  Stanford,  California  94305,  USA.     Some  of  the  figures  have  been  taken  from  the  Internet  Source,  and  author  and  licence   if  known,  is  specified.     For  those  images,  fair  use  applies.     licencia