Pages: [1] 2   Go Down
Author Topic: Tutorial ARDUTEKA - Matriz LED Bicolor + 74CH595  (Read 17318 times)
0 Members and 1 Guest are viewing this topic.
Forum Moderator
Zaragoza
Offline Offline
Newbie
*****
Karma: 0
Posts: 16
Aprende a desarrollar por ti mismo!!
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola de nuevo!

En este nuevo proyecto, vamos a aprender a conectar una matriz de LED 8x8 bicolor a través de unos registros de desplazamiento (Shift register) que nos van a permitir ahorrar muchos pines en nuestra placa, obteniendo un resultado tan espectacular como se puede ver en este video:



Podéis descargar el archivo del programa desde AQUI!!

Si queréis saber como empezar a desarrollar este proyecto acceder AQUI.

La idea de este post es que sigáis desarrollando el software o incluso el hardware, mejorándolo y ampliándolo y también para que todos aquellos que tengáis algún problema a la hora de llevarlo a cabo, expongáis vuestras dudas y así dejarlas registradas para el resto de los días!!

Un saludo!!
Logged

Aprende a desarrollar por ti mismo!!

@Arduteka
Facebook

Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola:
Pues, hice el mismo programa, con una matriz bicolor, pero sin los registros de desplazamiento.
Al programar el arduino, y conectarlo a la matriz de led, solo se encienden 3 columnas.
Necesito ayuda.
Tambien quiero saber como hacer para unir 2 matrices led, es decir, que cuando se termine de desplegar el mensaje en una matriz que automaticamente se pase a la otra.

Y, si tengo que usar los registros de desplazamiento, cuales serian los equivalentes al 74hc595? porque por donde vivo, no hay en existencia en las electronicas.
Logged

Colombia
Offline Offline
Newbie
*
Karma: 0
Posts: 21
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Saludo !!!

Quisiera saber que debo cambiar, tanto en el diseño del circuito como en el código en el caso en que las filas de la matrix 8x8 sean los ánodos.

Gracias !!!
Logged

Seville
Offline Offline
Newbie
*
Karma: 0
Posts: 1
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Buenas. Yo soy nueva en el uso de Arduino. Ha sido mi proyecto para finalizar la FP y la aplicación que he realizado es precisamente esto, el envió de un texto a 3 matrices de leds de 8x5 (no son bicolor). A diferencia del tutorial de Arduteka, yo he enviado los datos de los registros de desplazamiento a las columnas, por lo que si veis mi abecedario comprobareis que es diferente al de ese tutorial.
Como novedad he incluido las siguientes cosas:
- Desplazamiento mediante interrupciones por overflow
- Modificaciones en la funcion shiftOut. He creado dos funciones basadas en esta anterior.
    - Una de ellas es para introducir la fila de datos entera. Como mis matrices son de 5 columnas, solo me interesa enviar 5 bits a la linea de datos, por lo que la funcion la he modificado para tomar solo esos bits.
    - La otra está modificada para mostrar tantos bits como veces me haya desplazado. Es decir, mostraré mas bits segun el valor que tenga una variable que incrementaré cada vez que ocurra la interrupción.

He visto en un comentario anterior como se preguntaba sobre enlazar varias matrices, en este proyecto puedes ver como lo he realizado yo. Aquí os dejo el programa en un adjunto (no se si esto funciona asi). Espero que a alguno os sirva de ayuda.

ED: En este ejemplo usé 3 matrices de leds y el dato se iba desplazando por todas ellas. Subo de nuevo el programa con mejores comentarios.

* PROYECTO_COMENT.ino (5.76 KB - downloaded 154 times.)
« Last Edit: July 31, 2012, 10:39:26 am by Marine » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Muy buenas

Después de hacer mil pruebas y mirar por varios blogs al final me he decidido postear aqui para ver si alguien puede ayudarme.

Estoy intentando hacer esta practica pero me dan unos resultados extraños.

Despues de estar haciendo muchas pruebas he simplificado el codigo para que al ser lo mas corto posible sea mas dificil que haya fallos. Este es el codigo

Code:
int pinLatch = 10;
int pinDatos = 11;
int pinReloj = 12;

int gnd[8] = {2, 3, 4, 5, 6, 7, 8, 9};

byte frase[8] = {255,0,0,0,0,0,0,0};

void setup(){

  for (int i=2;i<=12; i++){
    pinMode(i, OUTPUT);
  }
  
  for (int g=2;g<=9;g++){
    digitalWrite(g, HIGH);
  }

}
void loop(){

    for (int i=0; i<8; i++){
       digitalWrite(gnd[i], LOW);
       digitalWrite(pinLatch, LOW);
       shiftOut(pinDatos, pinReloj, MSBFIRST, frase[i]);
       digitalWrite(pinLatch, HIGH);
       digitalWrite(gnd[i], HIGH);
    }
}

El circuito es el mismo que el de la practica pero con solo un registro 7HC959N, con solo los leds verdes conectados y sin desplazar las letras.

El resultado que obtengo es que siempre se encienden una fila mas abajo de lo que deberia ser.

Si envio la matriz 255,0,0,0,0,0,0,0 se me enciende la fila 2, si pongo 0,255,0,0,0,0,0,0 se enciende la fila 3 y si envio 0,0,0,0,0,0,0,255 se enciende la primera.

Pero si hago un delay:

Code:
void loop(){

    for (int i=0; i<8; i++){
       digitalWrite(gnd[i], LOW);
       digitalWrite(pinLatch, LOW);
       shiftOut(pinDatos, pinReloj, MSBFIRST, frase[i]);
       digitalWrite(pinLatch, HIGH);
[color=red]delay(250);[/color]
       digitalWrite(gnd[i], HIGH);
    }
}

Con este codigo si que se encienden las filas en orden pero claro, no todas a la vez sino de una en una.

A la unica conclusion que he podido llegar es que el reloj del registro de desplazamiento es mas lento que el de arduino i por eso no hace bien la representacion sino pongo un delay. La verdad es que yo de programar si que se, pero de electronica se lo basico y no tengo ni idea de que puede estar pasando

Si alguien pudiera ayudarme se lo agradeceria mucho. Mentras tantos empezare a investigar la funcion shiftout y investigando mas a fondo el 7HC959N

Muchas gracias
« Last Edit: July 31, 2012, 10:44:40 am by erikcrane » Logged

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola a todos,
En primer lugar decir que soy novato en tema de electrónica.
El registro de desplazamiento es 74CH595 o es 74HC595?? Porque estoy intentando comprarlos pero solo veo que hay HC.
Y otra pregunta ¿Que diferencias hay entre 74HC595N o 74HC595D? Afecta algo a la programación?

Gracias y un saludo
Logged

Offline Offline
Edison Member
*
Karma: 23
Posts: 1375
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Bueno, vamos al tema, el chip se llama 74HC595 como bien dices.
¿Diferencias entre N y D? Buscamos en google el datasheet del 74HC595 -> http://www.nxp.com/documents/data_sheet/74HC_HCT595.pdf
Página 2, apartado 4 -> N es empaquetado DIP16 y D es empaquetado SO16, hmm, ¿Cual será el que necesitemos?

Busquemos en el pdf por DIP16 y SO16 para ver que tipo de empaquetado es cada uno y poder saber cual queremos.
Página 17, empaquetado SO16, vaya, es de montaje superficial, probablemente no sea el que quieras ni lo tengan en la tienda de barrio de electrónica.
Página 16, empaquetado DIP16, hey! Es la cucaracha de toda la vida! Me servirá para montarlo en un protoboard smiley-grin

No es muy recomendable realizar el montaje tal cual está expuesto, ya que se puede llegar a cuadruplicar el límite de corriente de los pines de Arduino, tanto de los de entrada/salida como el de GND.

Por otra parte, el esquemático es erróneo, ya que el pin Q7' del primer 74HC595 hay que conectarlo al pin DS del segundo 74HC595, no al Q7'.

Un saludo smiley-wink
« Last Edit: October 29, 2012, 07:11:28 pm by chiva » Logged

Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

chiva muy de acuerdo contigo! los circuitos que pone la gente (y yo me incluyo) pueden tener fallos. Por eso cuando empiezas de novatillo tienes que buscar más fuentes de información y no quedarte con la primera que tienes. Contrastarlas y sacar conclusiones. Y para todo esto tenemos al Sr. Google que nos ayuda en nuestro comienzo smiley-grin
Logged

Offline Offline
Edison Member
*
Karma: 23
Posts: 1375
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Me gusta tu estilo, jajaja.

Por cierto erikcrane, puede que tengas cableada mal la matriz, si no prueba también a controlar el 74HC595 mediante SPI, con una búsqueda por Google te sale, aunque supongo que ya lo tendrás desmontado, pero bueno :d
Logged

Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

Offline Offline
Newbie
*
Karma: 0
Posts: 8
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Gracias por la respuesta y por aclararme las dudas!
Busque en google y estuve en varias paginas intentando entenderlas pero fue en plan....  smiley-cry + baba colgando.

Gracias de nuevo
Logged

Malaga
Offline Offline
Newbie
*
Karma: 0
Posts: 4
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

todos los códigos que veo con el 595 es usando el shiftout, hay alguna forma de hacerlo enviando los datos bit a bit??
Logged

Offline Offline
Edison Member
*
Karma: 23
Posts: 1375
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Dead pool, de nada smiley-wink

Scottie, para que quieres hacer eso? De todas maneras puedes hacerlo a mano
Desactivar latch, conmutar pin segun quieras 0 o 1 y hacer una secuencia de clock para que lo procese el 74HC595, así 8 veces y al acabar activar el latch.
En el datahsheet tienes el diagrama de tiempos y señales.
Logged

Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

Offline Offline
Newbie
*
Karma: 0
Posts: 17
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Me gusta tu estilo, jajaja.

Por cierto erikcrane, puede que tengas cableada mal la matriz, si no prueba también a controlar el 74HC595 mediante SPI, con una búsqueda por Google te sale, aunque supongo que ya lo tendrás desmontado, pero bueno :d

Hace meses que la desmonte pero ya encontre el fallo y cue algo curioso pq yo vengo de programar sin tener en cuenta el mundo fisico y era un problema de que una parte de la matriz (filas o columnas, ahora no recuerdo) estaba controlada por la cucaracha esta y lo otro por salidas directas del arduino. Como el  595 se guarda los estados de las salidas hasta que no vuelve a tener un nuevo latch(creo que era ese) las filas me salian desplazadas una posicion. Habia dos maneras de resolverlo (habia otra pero era muy sucia), o la matriz de las letras haces que las filas vayan desplazadas una posicion y asi compensas el error o pones 595 en las columnas tambien.

Cuando este con el ordenador posteare el codigo que consegui, por si a alguien le sirve algun dia. Pero igualmente me mirare otra vez esto que me dices, con tal de aprender si tengo que montar la matriz mas veces pues que asi sea :-D
Logged

Offline Offline
Edison Member
*
Karma: 23
Posts: 1375
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Pues justamente me tocó montar este circuito (bien hecho) la semana pasada, matriz de leds bicolor, controlada por 2 74HC595 y en los cátodos transistores para no quemar el arduino y funciona perfectamente.
Lo único que controlé los 74HC595 por SPI, pero debería ser exactamente igual con shiftOut.

En algo te debiste equivocar, algún numerillo que se escapó o algo, es un poco lioso.
Logged

Mercadillo electrónico. Kit iniciación a Arduino, shield LCD a color y más cosas!

Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Hola, me he comprado el kit de arduino started, y una matriz de 8x8 como la del tutorial, es de un solo color.
Mi duda es: ¿como podria programar un pic 16f628A con arduino? pues arduino esta muy bien, pero si quiero dejarlo montado el proyecto, (no sobre la board de pruebas) como es logico no dejare el arduino dentro, tendria que comprarme un arduino cada vez que hago algo sabes a que me refiero, entonces me gustaria que me dijera como podria programar el pic para ponerselo al circuito de la matriz, y una ultima duda mas, se puede programar en c? pues el lenguaje usado parece C, pero a la hora de copilarlo con Pic C me da errores de copilacion, un saludo y muchas gracias de antemano.
Logged

Pages: [1] 2   Go Up
Jump to: