Control e robótica

tecnoloxia.org

Matriz de leds

[By Laserlicht CC BY-SA from Wikimedia Commons]

[By Laserlicht CC BY-SA from Wikimedia ]

matrizleds1

[By oomlout CC BY-SA from Wikimedia Commons]

Descrición:

Nesta sección imos traballar cunha matriz de LEDs, que non é máis ca un conxunto de LEDs dispostos en forma de táboa ou matriz, cunha serie de filas e columnas. Nestas matrices podemos debuxar letras, símbolos e debuxos de todo tipo, polo que poden ter moitas aplicacións para os nosos proxectos.

Hainas con LEDs dunha única cor, de dúas cores e con LEDs RGB. Nós imos usar unha matriz sinxela dunha única cor e de rango 8×8.

O maior problema que atopamos a priori nestas matrices de LEDs é a cantidade de pins que teñen, o que nos limitaría moito a realización de proxectos, pois consumiriamos todos os pins do noso Arduíno para facelas funcionar e non nos quedarían suficientes para facer outras cousas.

Nós imos usar aquí unha solución más práctica, que é a de utilizar un circuíto integrado para gobernar a matriz: MAX7219, co cal aforraremos pins do Arduíno. Pódese mercar a matriz co circuíto integrado xa soldado ou os compoñentes por separado. Para traballar en secundaria recomendo a primeira opción.

ledmatrix_schem

[Pins dunha matriz de LEDs from arduino.cc]

ledmatrixmax7219

[Matriz con MAX7219 By BIGDOG1971 CC from Instructables]

Conexión:

[tecnoloxia.org CC By-SA]

Imos conectar directamente ao Arduíno a Matriz con MAX7219.

A conexión do integrado realízase a través dun porto serie asíncrono SPI. No caso dun Arduíno UNO conectaremos:

  • dataPin: DIN (MISO) ao pin 12
  • clockPin: CLK  ao pin 11
  • csPin: CS ao pin 10

dataPin (o pin DIN da matriz) é o encargado de enviar os datos en serie.

clockPin (pin CLK na matriz) é o encargado de emitir o sinal de reloxo que indica cando hai que ler cada bit.

csPin (o pin CS da matriz) é o pin de selección de dispositivo.

Librería e configuración:

Aquí imos mostrar unha serie de programas nos que podes ver as distintas posibilidades da Matriz de LEDs. Estes programas deberás adaptalos segundo as necesidades do teu proxecto.

Para facer os nosos programas na matriz imos utilizar unha librería proporcionada por Adafruit chamada LedControlMS (ligazón a GitHub. Ligazón directa ao ficheiro zip) Nela temos toda a programación necesaria para definir os caracteres na matriz, polo que aforramos moito traballo de programación.

Descargámola ao noso ordenador e desde o IDE seleccionamos Sketch → Incluír biblioteca → Engadir .zip

libreria

Todos os programas empezarán co seguinte código no que preparamos a matriz.

Prácticas:

Nas vindeiras prácticas indicaremos unicamente o código do programa que hai que engadir ao anterior. Lémbrate de incluír a primeira parte do programa!

1. Texto

Imos escribir un texto no noso programa e vaise mostrar, carácter a carácter, na matriz de LEDs. Para iso utilizamos a función:   lc.writeString (0,”texto a escribir”);

 

Se o que desexamos é que se mostre na matriz un texto recollido desde a consola utilizaremos o seguinte programa, que recolle cada carácter introducido no buffer. Para mostralo usamos a función: lc.displayChar (0,carácter a escribir);

Lémbrate de incluír no setup() a instrución Serial.begin(9600); para que se estableza a comunicación serie co ordenador.

2. Scroll

Se o que queremos é que as letras se movan pola pantalla dun lado a outro (scroll) debemos utilizar unhas funcións que posibilitan ese desprazamento. O primeiro parámetro indica o carácter a desprazar e o segundo o intervalo de tempo entre as escrituras na pantalla, que inflúe na velocidade de desprazamento.

  • Scroll cara á esquerda: scrollLeft(carácter, tempo);
  • Scroll cara á dereita: scrollRight(carácter, tempo);

3. Un LED

Neste primeiro programa imos acender e apagar algúns LEDs indicando as súas coordenadas. Para iso utilizamos a función lc.setLed(matriz, fila, columna, estado).

Por exemplo:  lc.setLed(0,5,5,HIGH); // Acender o LED da posición (5, 5)

Para borrar toda a pantalla utilizamos a función:   lc.clearDisplay(0);

 

Tamén podemos ir movéndonos pola matriz:

4. Filas e columnas

No caso anterior desprazamos un único bit. Se queremos desprazar un byte (conxunto de 8 bits) dun lado a outro utilizaremos as seguintes funcións:

  • Control das filas: lc.setRow(matriz, fila, valor)
  • Control das columnas:  lc.setColumn(matriz, columna, valor);
  • Borrar matriz:   lc.clearDisplay(0);

Podemos utilizar o valor en binario: Por exemplo con B10100101 (en binario) indicamos os LEDs que están acesos cun 1 e os apagados cun 0. Tamén podemos expresar o byte en decimal (0= todo apagado ata 255 todo aceso) ou en hexadecimal (0x00 todo apagado ata 0xFF todo aceso)

5. Mov. lateral

Imos desprazar un byte cara á esquerda e cara á dereita utilizando o operador de desprazamento lóxico

  • <<  Despraza  cara á esquerda (multiplica por 2)
  • >> Despraza cara á dereita (divide entre 2)

6. Debuxos

Outra cousa que nos pode interesar é crear debuxos para mostrar na matriz. Para iso temos que definir cada debuxo cun array que conteña os valores dos LEDs (acesos e apagados). Existen aplicacións para facelo facilmente, como a que hai nesta ligazón. Só hai que seleccionar os LEDs que queremos acender e xera automaticamente os valores en binario e hexadecimal. Revisa a orientación que deben ter os debuxos segundo a orientación da túa matriz de LEDs.

matriz_debuxo

[Captura da aplicación led matrix generator]

Neste exemplo imos facer o latexo dun corazón. Para facer outras animacións só tes que modificar os arrays cos teus debuxos, xerar o patrón como se indica e programar o void loop() segundo as túas necesidades.

Propostas:

mfrey_led-matrix_hangman

[MichaelFrey CC-By]

Estas son algunhas ideas para traballar:

  1. Xogo de luces: Xoga coa matriz conseguindo efectos de luces chulos. A ver o que che sae!
  2. Xogo do aforcado. Crea o xogo do aforcado para xogar na consola serie. Nunha matriz de LEDs irá aparecendo a imaxe do aforcado a medida que avance o xogo e aumenten os fallos.
  3. Semáforo de peóns: Nun proxecto de cruce de semáforos, o semáforo de peóns disporá dunha pantalla de LEDs para simular o movemento do boneco verde.
  4. Farmacia: Simula nunha pantalla de LEDs o letreiro luminoso dunha farmacia, con xogos de luces. Inclúe un scroll co dato de temperatura ambiental recollido a través dun sensor de temperatura.
  5. Termómetro sentimental: Utiliza un sensor de temperatura ou de luz e establece tres rangos de niveis. Nunha matriz de LEDs no rango máis baixo mostrarase unha cara triste, no do medio unha cara normal e no superior unha cara contenta.

Mostra:

Matriz de LEDs felicitando o ano 2017

 

Tweet about this on TwitterShare on FacebookShare on Google+Email this to someone


     

Deixa unha resposta

Required fields are marked *.