in

Thug lifeThug life No me gustaNo me gusta

Matriz de LED 8X8 (Parte II)

En la entrega anterior vimos todo el hardware necesario para crear una pequeña matriz de LEDs que pudiera ofrecer caracteres o símbolos fijos y, en un avance más de diseño, mostrar un mensaje en desplazamiento, dándote la oportunidad de utilizarlo para múltiples aplicaciones. La inclusión de un conector ICSP será fundamental para grabar rápidamente el microcontrolador y disponer al instante de mensajes diferentes con sólo organizar algunas líneas del software necesario para su funcionamiento. Desde vender un vehículo, pasando por los clásicos carteles utilizados en los aeropuertos con el apellido de una persona a la que se espera y terminando en un divertido gadget para anunciar las ofertas de fin de temporada, los carteles pasa-mensajes están en el ABC constructivo de todo electrónico experimentador. ¿Todavía no hiciste el tuyo?

Como mencionamos anteriormente, la construcción del hardware quedará sometida a tu elección, gusto y posibilidad económica. Como pudiste apreciar en las imágenes, nosotros optamos por LEDs individuales y montamos nuestro desarrollo en dos placas bien definidas: una exclusiva para los LEDs y otra para el resto de los componentes necesarios para el circuito. La construcción nos quedó cual si fuese un libro que se puede abrir al medio y dejar al descubierto todas las conexiones. Este método nos permite acceder rápidamente a cualquier sector del hardware para realizar correcciones de último momento y reformas que con el tiempo se nos ocurra realizar sobre la construcción inicial. Además, la fabricación realizada sobre placas universales pre-agujereadas facilita aún más la tarea de modificación, ampliación y corrección del diseño.

El Hardware utilizado en detalle

En la imagen puedes ver claramente las partes fundamentales que componen el hardware que hemos decidido montar, con sus componentes más destacados. Por supuesto que las conexiones del lado soldadura se presentan en todos estos casos con visibles signos de una “aparente” falta de prolijidad. Eso no debe ser un condicionante a la hora de la construcción ya que no estás fabricando un instrumento de electromedicina ni el módulo principal de un satélite de aplicaciones militares. No. Estamos aprendiendo, practicando, ensayando, transitando el camino de la experimentación y el desarrollo amateur. Será fantástico y muy bienvenido que puedas construir tus propios circuitos impresos de doble faz en FR4, con máscara antisoldante y agujeros metalizados, pero debes considerar también que hay personas que recién están aprendiendo a soldar y se entusiasman con estos proyectos o están aquellos casos en que los recursos económicos y los conocimientos son escasos para llevar a buen término una placa doble faz como debiera emplear este desarrollo.

Los grupos de cables están muy bien definidos. Observa la imagen con detenimiento y notarás la simpleza del montaje

Los grupos de cables están muy bien definidos e indicados en la imagen superior, donde se pueden identificar los correspondientes a las columnas, las filas, la conexión desde el puerto C del PIC hacia el ULN2803A, los cables de alimentación y los que llevan la información de las filas desde el puerto B hacia los transistores. De forma menos visible, por detrás de las conexiones de las filas, se encuentra la línea de conexión de la alimentación con el 7805, los capacitores de filtrado (electrolíticos) y desacoplo (cerámicos), la llave interruptora de alimentación y los diodos de protección contra la inversión de polaridad. Esto es tanto para la alimentación desde la batería como para la entrada de energía desde alguna alimentación general (12 Volts del coche) o desde una fuente conectada a la red domiciliaria.

La matriz armada, vista desde atrás

Como dato final, antes de dedicarnos de lleno a experimentar con el software, te recomendamos instalar el microcontrolador sobre un zócalo de modo tal que puedas extraerlo fácilmente para su programación, en caso de no disponer de un sistema grabador de PICs que trabaje con el modo ICSP (In – Circuit Serial Programming). En nuestro caso, con el grabador GTP-USB, lo utilizamos en modo ICSP, cambiamos líneas de comandos y hacemos muchos ensayos sin movilizar el PIC de su zócalo. Recuerda que si no realizas la tarea de extracción y colocación de manera cuidadosa, puedes romper fácilmente el zócalo o arrancar un pin del PIC, hecho que lamentarás mucho. Finalmente, un precinto plástico para sujetar la batería a la placa y ¡listo! ¡A programar se ha dicho!

Planteando el software
Un buen planteo previo del programa (es decir, analizar y llevar a un papel las ideas) es una tarea obligada cuando vamos a desarrollar un software, por más sencillo que este parezca. Por otro lado, debemos analizar y contabilizar de antemano el hardware que disponemos y lo que pretendemos de él. En el ejemplo que nos convoca, podemos deducir de manera muy clara que el puerto B del PIC se encargará de entregarnos los datos que veremos en cada columna y, por su parte, el puerto C se encargará de “mover” y desplazar estos datos a lo ancho de la “pantalla” hasta el lugar correcto donde deban ser presentados.

Un símbolo al azar (la letra "R") y su formación en la matriz

Utilizando la misma imagen de ejemplo del artículo anterior, nos encontramos que para representar la letra “R” debemos activar un contador que vaya desde el borde izquierdo de la matriz hacia el borde derecho y que en la posición Nº3 (RC2) nos entregue el valor decimal “127”, que saldrá desde el puerto B e ingresará a través de las filas. Luego, el contador del puerto C avanzará a la siguiente posición y desde el puerto B llegará el siguiente dato: el valor decimal 72. De esta forma, el contador del puerto C avanzará una posición a la derecha y el puerto B entregará otro dato, uno a uno hasta completar las ocho posiciones. Este mecanismo, ejecutado muchas veces en un segundo, nos permitirá percibir que la letra “R” está quieta allí y que se forma “toda junta y de una sola vez”. Sin embargo, el análisis nos muestra que lo hace columna a columna a medida que el contador (del puerto C) avanza una posición.

Formando un caracter, paso a paso (clic para ampliar)

En el siguiente video podemos ver cómo se forma la letra o caracter, paso a paso, con cada incremento de la salida del puerto C. En el caso de las posiciones en que no existen LEDs encendidos (según el ejemplo mostrado hasta aquí), dentro de la rutina preparada especialmente para crear el video, se han colocado datos en la posición 128 del puerto B, es decir, en el LED superior correspondiente a cada columna “no utilizada” (0,1 y 7). El propósito es saber en todo momento la actividad del puerto C. Conocer qué valores toma a cada paso y las columnas que atraviesa mientras no presenta datos útiles en la matriz. Cuando el puerto B entrega datos, estos se muestran en la columna correspondiente. La variación de velocidad mostrada será fundamental para descubrir lo que aún no habías comprendido acerca del funcionamiento de esta matriz.

El programa
Lo elemental, entonces, es dividir el trabajo en tres bloques que deben estar perfectamente sincronizados: crear un contador para que el puerto C avance desde el inicio (a la izquierda de la matriz) hasta el final (a la derecha de la matriz), a cada paso del contador del puerto C; entregar por el puerto B los datos correspondientes a cada columna; y por último, ajustar los tiempos del programa para obtener un funcionamiento correcto sin parpadeos molestos y simulando tener una imagen estática y fija. Al contador de columnas lo resolveremos mediante un lazo FOR – NEXT de 8 ciclos, mientras que a la obtención de los datos a entregar por el puerto B será mediante el conjunto de instrucciones DATA, RESTORE y READ.

Naturalmente, al inicio definiremos el PIC a utilizar con la frecuencia del oscilador. Si deseas utilizar otros modelos como el 16F877A o el 16F873A, debes corregir esta primera línea, al igual que si optas por otra frecuencia de cristal. Yo utilicé estos componentes porque los tenía a mano; tú puedes utilizar y experimentar con otros mientras se respete el circuito y el principio de funcionamiento. Luego declaramos las variables, como siempre en todo programa, y llegamos al lazo principal en la etiqueta Inicio, que es donde comienza la parte interesante del sistema.

Con sólo este pequeño listado, aparecerá la letra "R" fija en la matriz

Lo primero es iniciar el lazo FOR – NEXT para saber qué dato deberemos ir a buscar a la instrucción DATA en cada vuelta del ciclo. Observa que la mencionada instrucción posee los ocho valores que utilizaremos para formar el carácter seleccionado (la letra R). Entonces, para un valor inicial de cero en la variable CONTADOR, el puntero RESTORE nos indicará que debemos tomar el primer valor encontrado en DATA. Este valor se cargará en la variable LETRA mediante la instrucción READ. Una vez obtenido el dato, ya sabemos que la variable A tiene un valor inicial igual a 1 y eso se cargará a la salida del puerto C. Como cada transistor darlington del ULN2803A se activa con un estado alto, se activará directamente la salida PORTC.0 en estado alto. Recordemos que en BASIC escribir 1 y %00000001 en el puerto es exactamente lo mismo; una forma es decimal y la otra binaria pero ambas se ejecutarán de la misma forma.

Para el caso del puerto B, encontramos el caracter “~” antes de la variable LETRA. Este caracter especial nos indica que cargaremos sobre FILA (la salida del puerto B) el complemento de los datos que contenga la variable LETRA. ¿Por qué hacemos esto? Porque a la salida del puerto B tenemos transistores PNP y estos se consideran activos en estado bajo. Por lo tanto, el dato decimal 127, que sería %011111111, saldrá por el puerto B como %100000000 para de esta forma activar los 7 transistores PNP correspondientes a RB0 – RB6.

Luego de esto, incrementamos la variable A multiplicándola por 2 y controlando el momento en que llegue al final de la matriz (borde derecho) con el condicionante IF –THEN. Aplicamos un retardo que nos permita una visión sin parpadeos y… ¡listo! Ya tenemos nuestra matriz funcionando y mostrando un caracter (la letra R).

Comienza el juego
Lo primero será hacer intermitente en el tiempo el carácter exhibido. Es decir, podemos crear un dibujo con el símbolo de STOP o PARE que funcione de forma intermitente para utilizarlo como baliza en el coche, o también puedes crear un gráfico con forma de corazón y hacer que funcione en forma intermitente bajo una camisa semi-traslúcida para demostrarle a tu chica que el corazón te late por ella. Es decir, para entretenerse hay miles de ideas posibles, veamos cómo lograrlo.

Un corazón es un factor sorpresa que nunca falla al igual que una flor. Creer o reventar

La realización de todo lo que quieras mostrar se basa fundamentalmente en la construcción de los mapas de bits que se aplicarán en la instrucción DATA. Luego, haremos una secuencia FOR – NEXT para mostrar el símbolo y otra más para no mostrar nada en la salida del puerto B. También puede ser una buena idea diagramar un corazón más pequeño para simular una variación de tamaños entre ciclo y ciclo. Tú elijes, ellas se rinden a tus pies.

De manera muy sencilla, hemos agregado al programa otra secuencia de datos en la instrucción DATA y además ahora aparece un contador de tiempo de encendido del símbolo y otro segmento de programa donde se apagan los puertos y se coloca un retardo de tiempo equivalente al que dura el símbolo visible pero, en este caso, apagado. Volvemos a destacar la importancia de la imaginación a la hora de diseñar los símbolos y caracteres a utilizar en este tipo de carteles. Una aplicación inteligente es garantía de éxito asegurado y por qué no una posible fuente de ingresos extras cuando alguien se acerque a consultarte cuánto le cobras por construirle uno.

Listado de programa para visualizar un corazón intermitente

Moviendo el texto
Aquí comienza lo que estabas esperando, aquí comienza la acción de verdad. Para desplazar un texto dentro de una matriz debemos aplicar todo lo visto hasta aquí y sólo moverlo. ¿Cómo se realiza esto? Muy sencillo. Primero cargas en la sección de la instrucción DATA todos los datos correspondientes a las filas que mostrarás. Luego generas un incremento de la variable CONTADOR a cada ciclo y, de este modo, forzarás al puntero RESTORE a que lea un nuevo dato para enviar al puerto B. De este sencillo modo, habrás creado el movimiento en tu matriz.

Observa que la instrucción READ siempre se debe colocar en la parte más “inicial” del programa. Podemos entonces colocar una sola instrucción o varias que correspondan a cada caracter para mantener ordenado el programa. Además, cada caracter terminará en un dato igual a cero que será el equivalente a dejar un espacio entre letra y letra. Agregaremos ceros para generar espacios entre el fin y el inicio de una palabra y el resultado será el siguiente listado de programa que corresponde al video anterior:

Listado de programa para generar texto en movimiento. Tu primer "Scroll Text"

Conclusión
Al texto que hemos generado le puedes agregar todo lo que la memoria del PIC alcance. Te puedo asegurar que te vas a cansar de escribir texto y símbolos y nunca lo llenarás. Al menos al 16F876A. Puedes utilizarlo como pasa-mensajes para publicidad, para vender productos, para saludar amigos en estas fiestas, en fin; para lo que quieras transmitir, allí tendrás un nuevo medio para hacerlo. Recuerda lo sencillo que es: moviendo el puerto C, cargas en forma sincronizada los datos por el puerto B. Eso es todo. Intuyo que no creías que fuera tan sencillo. Diviértete, juega, experimenta, aprende y, como siempre, esperamos ver tus logros en video. Te dejamos los programas de los ejemplos vistos en el artículo y un .TXT con un listado de letras y símbolos prearmados para que no pierdas tiempo y comiences cargar tu matriz hoy mismo.¡Felicidades!

Domingo, 17 de Enero de 2010: Una vez más el amigo Yesbond nos honra y enorgullece a todos los que hacemos NeoTeo mostrándonos sus logros a partir de los artículos. ¡Gracias Yesbond! Tu trabajo y los resultados mostrados hacen que valga la pena ofrecer lo mejor de nosotros. Aquí está el trabajo de Yesbond, ojalá tú también encuentres interesantes los montajes que aquí compartimos y nos envíes tus videos.

Reportar

¿Qué te pareció?

Escrito por Mario

83 Comments

Leave a Reply
  1. Muy buen articulo señor mario lo felicito me ha sido muy util.

    Cambiando de tema por este medio quería pedirle si seria posible hacer algún articulo sobre los cables VGA a RCA como funcionan, como hacer uno ya que me sucedió un caso de que me he adquirido uno pero no me funciona quiero saber si es por mi pc o por el cable, o también si se necesita alguna otra cosa aparte del cable o configurar el sistema, por favor ojala pueda responder mi peticion.

    saludos

    • Hola Martín !

      Gracias por estar aquí con nosotros !

      Quería pedirte que no me trates de "Usted", ni de "Señor", trátame de tú, de tí, de vós, de che, de "Hey Mario !", pero tratarme con demasiado respeto me parece que no es necesario. Podemos tratarnos respetuosamente tratándonos más "entre amigos". 😉

      Cuéntame mejor que deseas a ver si logro interpretar: ¿Estás tratando de salir del ordenador y conectar la salida del conector VGA a un TV convencional? ¿A un LCD? ¿a qué equipo intentas conectar? o mejor dicho, ¿qué equipos intentas conectar entre sí?

      Martín, me he demorado muchos meses, pero espero haber cumplido contigo sobre las consultas que me hacías sobre el funcionamiento de mi scroll text (que habías visto en videos anteriores) Así funciona, como éste que vimos en el artículo. Ahora me siento más tranquilo de haber podido cumplir contigo. Creo que no me quedan materias pendientes para 2010 :))

      Espero que hayas tenido una bonita Navidad rodeado de tus seres queridos amigo. Gracias por hacerte presente en mis artículos !

      Un abrazo cordial !

      • Mario! la verdad te agradezco mucho que me hallas ayudado y respondido mis consultas (cuando sea grande quiero ser como tu) ya que era una gran duda la que tenia y gracias a ti las he despejado.

        HORA….dices tu que no te quedan materias pendientes para el 2010 pues aqui tienes algo para que te entretengas.

        En cuanto al cable VGA a RCA es este :::: http://www.laikeet.com/catalog/images/1to4.jpg

        y no es LCD si no TV convencional asi que el cable S-Video queda descartado y tenemos nada mas los tres cables rojo, amarillo y blanco mi equipo es una Compaq presario CQ50 – 111LA celeron M575, 1gb Windows Vista. Ojala esta información te sirva.

        Te deseo lo mejor y que este año nuevo cumplas tu sueños y estes en paz y armonia con todos tu seres queridos y familiares.

        Feliz navidad y prospero año nuevo!

        Saludos!

      • Oye Martín !!! Hasta quizás lo solucionemos en este mismo 2009 !!! :))

        Date una vuelta por aquí :

        http://entechtaiwan.com/util/ps.shtm

        y observa un poco el programa PowerStrip.

        Sucede que los televisores convencionales, trabajan con una frecuencia de oscilador horizontal más baja que los monitores de ordenador (la mitad). Este programa, toma el control de la placa de video y ajusta la salida VGA del ordenador y la lleva a esa frecuencia o a cualquier otra. Es decir, si tu placa de video es compatible con el programa, le indicas que tu ordenador funcione en modo TV y automáticamente la salida VGA pasa a los valores convencionales de una señal NTSC o PAL (donde tú estás, hay NTSC)

        Luego, se arma un pequeño circuito para adecuar la conexión de los sincronismos y los colores R,G y B que salen de la placa VGA y listo!
        Pero primero debes conseguir el programa y comprobar si tu placa de video es compatible con él. Luego armar la plaquita adaptadora (circuitos de esos hay por toda la web)(igual podría ayudarte a buscar uno) y por último lo más "delicado", lo más complejo, lo que más paciencia requere: Ajustar el programa PowerStrip para que funcione a los valores de una transmisión standard NTSC.

        Supe hacer esto con versiones más antiguas del programa y si bien es algo posible es bastante ardua la calibración correcta, pero una vez que lo logras hacer funcionar, es algo GENIAL para los videojuegos en TVs de muchas pulgadas.

        A esto que te cuento lo hice (en una época que armaba videojuegos de salón) con un TV retroproyector Mitsubishi de 50 pulgadas.

        Quizás las nuevas versiones del programa sean más directas y prácticas.
        Date una vuelta por el enlace que te pasé y luego me cuentas. Sinó vemos que se puede hacer. Si tu placa de video no llega a tener salida de video para TV incorporada de fábrica, PowerStrip lo logra.

        Saludos amigo ! Espero que la orientación te sea útil !

      • hola que tal. me encanto tu proyecto, me gustaria realizarlo. me encantaria poder obtener el circuito para saber como va conectado todo, tengo conocimientos de circuitos y un poco de pics. te agradeceria si me pudieras pasar el circuito para realizarlo. mi correo es reyes_2762@hotmail.com
        saludos cordiales
        excelente proyecto
        contactame

  2. Hola Mario:

    De verdad que eres grande, no hay otra palabra que te describa. Yo estaba esperando muy ansioso esta segunda parte y hoy me diste la razon de estas ansias, este articulo tiene una explicacion tan clara y facil de entender, y ademas paso a paso lo explicas como funciona todo, y haces un programa para que lo podamos entender mejor, y bueno tienes razon con respecto a la construccion del circuito, pero por lo menos para mi me gusta mucho mas hacer las cosas con mis propias manos, creo que es mas satisfactorio, ademas nos has enseñado a soldar, y hacer circuitos impresos asi que tenemos todas las armas para ir por ese circuito.

    De verdad que te mereces inmensos aplausos por este y todos los articulos que has publicado. Bravo mario, sos el mejor, gracias por tu tiempo y dedicacion.

    Un gran abrazo desde Colombia.

    • Hey Yesbond !

      Me alegra que te haya gustado el artículo. Es la parte final del anterior. He incluído un alfabeto completo para que les sea más sencillo el inicio a todos y los archivos para poder comenzar a trabajar hoy mismo !

      En lo particular me agradó mucho el resultado del primer video de este artículo donde se muestran los cambios de velocidades de barrido hasta que se logra una visión sin problemas. Ahí la explicación "se vé" y eso es algo muy importante.

      Gracias amigo por estar ahí !

      Un abrazo y felicidades ! 😉

  3. mariooooooo, muy buen tuto, pronto empezare a estudiar sobre electronica (por aca, por la web), y lo tuyo viene de pelos, sigue asi k todos te apoyamos y segumos mucho

    • Muy buena noticia Luxax ! :))

      Entonces el tuto del próximo sábado te vendrá como anillo al dedo amigo!
      Es una alegría enorme para mí saber que con mis artículos puedo entusiasmarlos a iniciarse en este maravilloso mundo de la Electrónica.

      No dudes en consultar tus incógnitas amigo!

      Saludos y Felicidades !

  4. Mario, el tutorial esta buenisimo… ya he terminado con la parte uno y ahora comienzo a programar el PIC. Seria demasiado pedir si pudieras hacer una tercera parte en la que agregues la conexion USB para cargar el texto "en tiempo real" (he visto un programa que permite encender en la matriz en pantalla los leds que quieres y luego los enciende en el hardware

    • Hola JB !

      Gracias por tus palabras sobre el tutorial ! 🙂

      Existen muchos problemas para hacer lo que sugieres amigo. Debiéramos migrar a otro PIC con conectividad USB (18F2550 o 18F4550) y habría que hacer un soft para el ordenador que sea específico para nuestra aplicación, para nuestra construcción.
      Es decir, debiéramos hacer todo de nuevo desde el principio !
      Además, ¿tú crees que valdría la pena esa función en una matriz tan pequeña?

      Si hay interés generalizado en que hagamos un letrero más grande (más columnas) se verá en la cantidad de comentarios al respecto y en la cantidad de votos que reciba este tutorial en dos entregas que hemos hecho para una matriz 8X8. Allí se verá reflejado el gusto y el pedido de la mayoría.

      Tenemos previstas muchas aplicacones en USB para 2010. Si la gente lo pide masivamente, también podríamos incluir un scroll más importante del estilo que sugieres.

      Espero que comprendas amigo. 🙂

      Saludos cordiales y Felicidades !

  5. hey mario! está excelente la segunda entrega!, ya estoy armando la matriz de led’s en la placa perforada jejeje luego posteo mis logros/fallas/dudas. muchas gracias!!!!!

    • OK pandearroz !

      Por aquí estaremos (o por otros posts) para ayudar en lo que sea necesario.

      Gracias por estar con nosotros amigo!

      Saludos y Felicidades !

      • querido mario, muchas gracias por tu ayuda, tengo una consulta, que software estas utilizando para el código fuente BASIC que provees de ejemplo?

      • Estimado… sorry por el doble post 😀 pero ya lo encontré, es el PROTON IDE (que por cierto está cañón jejeje) ya tengo listo el circuito y la matriz, pero parece que mi problema al programar el PIC es a causa de que mi grabador JDM PLUS (serial) no recibe la suficiente tensión en VDD (tengo una tarjeta madre ASROCK micro-ATX puaj…) asi que ni bien tenga resultados (probaré en otras PC’s más decentes) posteo el videillo.
        Muchas Gracias Mario por todo este conocimiento tan valioso e interesante.
        Saludos!

  6. Soy estudiante de ingenieria en sistemas pero jamas habia tenido un interes considerable por la electronica, pero aqui le despiertan el interes a cualquiera porque suelo leer esta categoria de articulos y estan muy explicados. Felicidades!

  7. Muy bueno mario, hace un rato termine de soldar mi matriz, le conecte unos cables planos ded un viejo cable ide, y unas borneras para conectarla al protoboard. Mañana veo si le puedo hacer una prueba de continuidad y arranco a poner componentes!
    Que sera lo del sabado…??

  8. Hola mario soy nuevo en programacion de pics, no se por donde empezar y tengo dudas espero puedas ayudarme.

    ¿Como conecto el pic a la pc o que interfase requiero?
    Se que es por puerto paralelo LPT1 o serial COM1. Ando a ciegas en esto.

    ¿Que requiero para conectarlo a la pc?
    Alguna interfase comprada o tengo que armarla

    ¿Que programa me ingresa los datos programados al pic?
    C++, Qbasic, ASM u otro. Yo programo en VB6 y php pero estos no hacen esto o almenos php

    Se que le puedo preguntar a mi provedor de material, pero por lo regular cuando pregunto se burlan, ignoran o peor a un no saben y no resuelven mis dudas. Por consiguiente termino por no comprar nada y no hago los proyectos: ya me paso con el articulo: "Conecta tus proyectos al puerto USB" y no quiero que 8X8 se quede igual.

    El proyecto es lo mejor que he visto en la red, por lo bien explicado y fundamentado

    Perdona mi insistencia y gracias por la atencion

  9. Hola Mario, excelente tutorial.
    Quisiera saber que necesitaria para hacer este mismo proyexyo pero para una matrix de 32×8 (es decir 4 matrices de 8×8). Gracias por la atencion y mis mejores deseos para el 2010.

  10. primeramente felizitarlo por el enorme tutorial y pues lo estoy realizando, ya tengo armado el circuito en protoboard utilizando un pic16f877A y pues me surgio un detalle ya que al programar el pic para visualizar la letra R lo unico que me sale son todos los leds de cada una de las columnas estan encendidos de la col.1 a la col.8 a como esta el ciclo for pero no me esta tomando los datos almacenados en DATA; entonces quiero saber que es lo que me esta fallando. estoy compilando con el proton ide lite y ya cheque varias veces el programa y lo tengo tal y como dice el tutorial a excepcion de que modifique el tipo de pic al 16f877A.

    saludos ¡¡

  11. Hola, quisiera saber con que programa estas programando, ya que me interasa mucho el proyecto, pero yo manejo pero PIC Simulator IDE. Gracias!! Esta muy bueno el proyecto

    • hola amigos del foro alguien puede decirme donde puedo bajar el simulador protom ide , si este es un sorfware free o donde puedo comprarlo y mil felicitaciones para mario la verdad aclaro muchas dudas para los que comienzan a trabajar con matrices de led ,asi como yo

  12. Hola Mario, soy nuevo en esta página.Leyendo este artículo ó tutotial y con el interés que me anima de aprender el manejo de matrices,veo que existe una PRIMERA PARTE ,la cual te agradecería me informarás que debo hacer para lograr obtenerla.

    antonio

  13. Hey men, me ha gustado mucho tu trabajo, yo lo estoy haciendo en lenguaje c, pero no logro mostrar el desplazamiento total de la palabra, sino, que lo hago es caracter por caracter, me gustaria saber, si me puedes ayudar ok? un saludo desde colombia, bye

  14. Hola Sabes estoy muy interesado en tu Proyecto pero me gustaria saber si me puedes mandar una lista completa de todos los materiales que ocupates para realizar tu matriz de 8×8 ya sea por este medio o a mi correo

    me arias un gran favor

    sale espero tu respuesta

  15. maestro una consulta que compilador estas usando yo uso el pic basic pro y me sale error cuando utilizo ese archivo extension bas . disculpa la ignorancia

  16. que tal pues he retomado el paso en esto de la matriz de leds. y ya me ha salido¡¡¡ la letra R seguire estudiando para realizar el mensaje scroll.
    nuevamente gracias por este tipo de tutoriales¡¡¡¡

    saludos¡¡

    • Se realiza a través del conector ICSP.
      No hace falta retirar el PIC del montaje.
      Se arma el programa y luego se compila con un programador USB y mediante el conector ICSP.

      Saludos!
      Mario

  17. y..tengo otra nueva inquietud..esto es para nulos en programacion o sea,yo.. ¿que programa o dispositivo permitiria,-por medio de la pc-, programar los textos y efectos mostrados en una matriz de leds sin tener que -obviamente- desarrollar todo el proceso en lenguaje picbasic o assembler etc? se me ocurre por si hay necesidad de cambiar el texto y/o efectos mostrados con mayor facilidad y rapidez (podria ser el caso de un comerciante q quiere cambiar el cartel de su negocio…¿como hace? ..no va a estar llamando a cada rato al fabricante del cartel para que se lo reprograme) ..bueno esa era mi duda gracias desde ya por vuestra atenta respuesta.

    • Hola de nuevo.

      Sí, claro.
      Para eso hay que utilizar un tipo de microcontrolador que se pueda conectar directamente al ordenador vía USB y hacer un programa (tanto para el ordenador como para el PIC) para que cumplan esa función.
      No es complejo, pero lleva tiempo, esfuerzo y conocimientos.

      Esas "salidas comerciales" de los proyectos básicos que aquí presentamos pasan a ser la invitación a los lectores a estudiar más, a trabajar más, a crecer poco a poco.
      Nosotros te ofrecemos la idea base. La máquina de hacer dinero tienes que construírla tú 😉

      Por supuesto, si deseas que lo hagamos nosotros pásanos tu mail y te hacemos un presupuesto de cuánto te costaría ese trabajo.

      Saludos!
      Mario

      • ja! ja! no.. no era mi intencion que me dieran los "planos" de la maquina de hacer dinero.. disculpen si di a entender eso.. en realidad me interesa investigar y se me ocurrio este tema en particular y como no se en que otro lado averiguar recurri a uds… ademas porque estoy armando la matriz de 8×8 y pensaba digo: que bolonki cada vez que hay que cambiar el texto hay q hacer todo esto? no habra un modo mas simple y mas practico? claro que tambien pense que ese trabajo no seria gratis y justamente, sino cualquiera lo haria… bueno muchisimas gracias por la respuesta de todos modos y me gustaria encontrar alguien que enseñe estas cuestiones, un buen libro o un profesor etc. ( no digo gratis) pasenme el dato..gracias de nuevo y hasta la proxima…

  18. que tal,soy nuevo en esto,encontré está página hace poco y me dispuse a armar el cto como está en la parte 1,una vez listo bajé los programas que están en la página pero al querer hacer una modificación al de scroll me marca un error y me hace referencia a #include "D:TRABAJOSNEOTEONOTASMATRIZPICNEOTEO.PBP",que onda con eso o que tengo que modificar del programa original? por favor necesito ayuda

  19. amigo una duda, me interesa hacer el proyecto, apenas ando comprando las piezas, pero me quedaron 2 pequenas dudas si me las podrias resolver; primera cuando dice que se repite esa conexion de lado izq. de la matriz de leds necesito hacer esa conexion esa cantidad de veces o es un encapsulado lo que pasa es que como lo pusiste en lineas punteadas eso me confundio y otra duda aunque ya lo lei como 3 veces pero creo que lo he pasado por alto pero aun asi pregunto lo hiciste en c y de ahi lo compilaste a ensambler o como, orientame un poco ya que en c soy bastante nuevo(tengo mas experiencia con programacion web pero aun soy muy malo en este 🙁 ) otra duda y esa ya es extra para los comentarios lo hiciste en php o como? de antemano muchas gracias

  20. hOLA….Me interesaria saber que programa usaron, es decir, yo uso microcode y ensamblador y pues no se parece la estrructura del texto en movimiento, por ejemplo, ayúdenme, pues estoy haciendo este proyectyo en microcode, pero pues si me dan el dato, me facilitarían las cosas. Muchas gracias de antemano

  21. La verdad no tengo conocimiento en BASIC, es posible desarrollar este programa de una manera facil en sourceboost o en pic ccs (lenguaje C)? tambien en que implica agregar una segunda o tercer matriz y que el texto circule atraves de todas las matrices? Muchas Gracias!!!!

  22. Muy buenas Tardes 🙂
    Ya tengo Montada el ckt en protoboard y todo listo pero ….
    no puedo programar el PIC 16F876A me sale un error no se si los que hicieron la matriz puedan orientarme 🙁
    La verdad que me esta tomando mucho time programarlo me sale un error :
    VerifyFailed, Addres=0x000002, Device=0x00, Buffer=0x30

    si alguien puede ayudarme por fa

  23. Esta bien explicado, me sirvió de mucho algunos de los conceptos que explicas, ya que es mi próxima practica en la escuela jeje, solo que mi profe lo quiere en ensamblador jejeje pero la base es la misma gracias.
    Saludos desde México.

  24. hola tipo muy buen proyecto estoy trabajando sobre matrices de leds nadamas que tengo un problema: cheke….
    el proyecto se llama "letrero electronico"
    lo que tiene que hacer es lo siguiente:
    1.- la matriz debera ser de 8×32
    2.- mostrar un mensaje en la matriz de derecha a izquierda (recorrido)
    3.- debera ser configurable para poder mostrar cualquier mensaje

    mi problema es el No. 3

  25. hey amigo para felicitarlo por el buen tutorial que ha desarrollado ya que todo se encuentra en forma clara y simple de entender pero me gustaria saber como hariamos un modulo de para anexarle al proyecto unas 3 matrices en cascada con el fin de expandir el mensaje gracias por su atencion y espero su pronta respuesta.

  26. Como lo hago en CCS no entiendo nada jajajaja….nada mas lo pudeo hacer fijo en movimiento no puedo ayuda !!!

    void main(void)
    {
    int xx;
    char a[]={0,118,118,118,0};
    char b1[]={0,54,54,54,73};
    char c1[]={0,62,62,62,62};
    char d1[]={0,62,62,62,65};
    char e1[]={0,54,54,54,62};
    char f1[]={0,118,118,118,126};
    char g1[]={0,62,38,54,6};
    char h1[]={0,119,119,119,0};
    char i1[]={127,62,0,62,127};
    char j1[]={62,62,0,126,126};
    char k1[]={0,119,99,93,62};
    char l1[]={0,63,63,63,63};
    char m1[]={0,125,123,125,0};
    char n1[]={0,121,119,79,0};
    char o1[]={0,62,62,62,0};
    char p1[]={0,118,118,118,112};
    char q1[]={0,62,46,30,0};
    char r1[]={0,118,118,106,28};
    char s1[]={48,54,54,54,6};
    char t1[]={126,126,0,126,126};
    char u1[]={0,63,63,63,0};
    char v1[]={96,95,63,95,96};
    char w1[]={0,111,119,111,0};
    char x1[]={28,107,119,107,28};
    char y1[]={126,125,3,125,126};
    char z1[]={30,46,54,58,60};
    char yx[]={1,2,4,8,16};
    char yx1[]={1,2,4,8,16};
    char yx2[]={1,2,4,8,16};
    char yx3[]={1,2,4,8,16};
    char yx4[]={1,2,4,8,16};
    //char yx[]={1,1,1,1,1};
    //char yx1[]={2,2,2,2,2};
    //char yx2[]={4,4,4,4,4};
    //char yx3[]={8,8,8,8,8};
    //char yx4[]={16,16,16,16,};

    char ps;
    char ps1;
    char ps2;
    char ps3;
    char ps4;

    TRISB=0;
    TRISC=0;
    xx=0;
    ps=0;
    //A
    for (xx=0;xx<100;xx++)
    {
    portc=a[ps]; portb=yx[ps];
    delay_ms(10);
    //portb=0;
    ps++;
    portc=a[ps1]; portb=yx1[ps1];
    delay_ms(10);
    ps1++;
    portc=a[ps2]; portb=yx2[ps2];
    delay_ms(10);
    ps2++;
    portc=a[ps3]; portb=yx3[ps3];
    delay_ms(10);
    ps3++;
    portc=a[ps4]; portb=yx4[ps4];
    delay_ms(10);
    ps4++;
    if(ps==5)
    {ps=0; }
    if(ps1==5)
    {ps1=0; }
    if(ps2==5)
    {ps2=0; }
    if(ps3==5)
    {ps3=0; }
    if(ps4==5)
    {ps4=0; }
    }

    //B
    for (xx=0;xx<100;xx++)
    {
    portc=b1[ps]; portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5)
    {ps=0;}
    }
    //C
    for (xx=0;xx<100;xx++)
    {
    portc=c1[ps]; portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    //D
    for (xx=0;xx<100;xx++)
    {
    portc=d1[ps]; portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    //E
    for (xx=0;xx<100;xx++)
    {
    portc=e1[ps]; portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    //F
    for (xx=0;xx<100;xx++)
    {
    portc=f1[ps]; portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    //G
    for (xx=0;xx<100;xx++)
    {
    portc=g1[ps];
    portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    //H
    for (xx=0;xx<100;xx++)
    {
    portc=h1[ps];
    portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    //I
    for (xx=0;xx<100;xx++)
    {
    portc=i1[ps];
    portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    //J
    for (xx=0;xx<100;xx++)
    {
    portc=j1[ps];
    portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    // k
    for (xx=0;xx<100;xx++)
    {
    portc=k1[ps];
    portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    //L
    for (xx=0;xx<100;xx++)
    {
    portc=l1[ps];
    portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    //M
    for (xx=0;xx<100;xx++)
    {
    portc=m1[ps];
    portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    //N
    for (xx=0;xx<100;xx++)
    {
    portc=n1[ps];
    portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    //O
    for (xx=0;xx<100;xx++)
    {
    portc=o1[ps];
    portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    //P
    for (xx=0;xx<100;xx++)
    {
    portc=p1[ps];
    portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    //Q
    for (xx=0;xx<100;xx++)
    {
    portc=q1[ps];
    portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    //R
    for (xx=0;xx<100;xx++)
    {
    portc=r1[ps];
    portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    //S
    for (xx=0;xx<100;xx++)
    {
    portc=s1[ps];
    portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    //T
    for (xx=0;xx<100;xx++)
    {
    portc=t1[ps];
    portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    //U
    for (xx=0;xx<100;xx++)
    {
    portc=u1[ps];
    portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    //V
    for (xx=0;xx<100;xx++)
    {
    portc=v1[ps];
    portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    //W
    for (xx=0;xx<100;xx++)
    {
    portc=w1[ps];
    portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    //X
    for (xx=0;xx<100;xx++)
    {
    portc=x1[ps];
    portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    //y
    for (xx=0;xx<100;xx++)
    {
    portc=y1[ps];
    portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }
    //z
    for (xx=0;xx<100;xx++)
    {
    portc=z1[ps];
    portb=yx[ps];
    delay_ms(10);
    portb=0;
    ps++;
    if(ps==5) ps=0;
    }

    }

  27. Esta Buenisimo el Aporte, me gusto mucho, hasta ahora estoy empezando con esto, y quisiera pedirte una manito, ya que tengo que hacer este circuito pero con un Qy4 Freescale, y estoy un poquito confundido

  28. Hola como me hice mi matriz 8×8 publicada aquí quisiera hacer mi porte es un programita que hice que genera caracteres y mensajes completos es muy facil de usar led dejo el link espero me deje unos mensajes en mi facebook, http://www.megaupload.com/?d=VVU54FZ2

    Posdata: agregare nuevas versiones con pic configurable ademas de velocidad de desplazamiento.

  29. Hola, Tengo una duda, ¿como puedo Conectar 2 matrices o 3 de 8×8?
    esque quiero hacer un pequeño cartel con 3 Displays Matriz de 8×8 pero no se como conectar los 3 displays matriz, Estoy Usando el PIC 16F876A, y quisiera que me hecharas la mano de como conectar los 3 displays al Pic y a los registros de desplazamiento el Registo queestoy usando es el 74hc164, ya consegui las piezas, pero primero ver la manera de que queden los 3 display matriz conectados al pic y a los registros de desplazamiento,

    Y tambien quisiera que me hecharas la mano con el programa cuando lo simulo se quedan prendidos los 3 leds totalmente. y no hace ninguna actividad. el programa que hice me base en el Programa que nos compartiste como ejemplo. A que se debera, que los 3 led se queden prendidos sin hacer nada, ¿Configuracion de Puertos? ¿cual sera el problema?

  30. OYE MARIO, SI YA TENGO UNA MATRIZ LED PROGRAMA Y QUIERO AGREGARLE OTRA MATRIZ DE 8X8 QUE CAMBIOS LE TENGO QUE HACER EN EL PROGRAMA, O QUE INSTRUCCIONES LE PONGO PARA INTEGRAR LA MATRIZ DE MANERA QUE NO SE ALTERE TANTO EL PROGRAMA Y ME GENERE ERRORES, TE AGARADECIA SI ME PUDIERAS SUBIR UN EJEMPLO PARA DESCARGARLO Y BASARME EN EL EJEMPLO, PORQUE HE TRATADO DE TODO Y NO ME FUNCIONA, YA ESTOY DESESPERADO NO SE QUE HACER. POR FAVOR AYUDAME. =(

  31. saludos
    recientemente arme el proyecto pero a tratar de compilar mi mensaje me salen errores de redefinicion de etiquetas DIM y B y de errores de sintaxis, que puedo hacer? alguien tendrá otro ejemplo de un scroll

  32. ya lo solucione, si alguien quiere hacer su propio mensaje solo contácteme para enviarles el código y las instrucciones para la modificación.

  33. hola mario exelente tutorial !!! 😀
    pero quisera saber qe software utilizas para hacer el programa si no es mucha molestia::::: gracias

  34. buenas gente,enhorabuena por el tuto para gente que quiere inciarse como yo,queria consultar tambien unas cosas,uso microcode studio pero abro el archivo de mario y hago el circuito con proteus y me da error,e revisado todo bien y tengo la cabeza que me da vueltas,a ver si me pueden echar una mano,un saludo ygracias

  35. Alguien me puede decir como hacer que funcione en proteus, no se si se porque utilizo el ULN2803 y no ULN2803A no se si tenga que ver eso pero todos los led de la matriz se quedan encendidos pero si esta enviando las señales :/

  36. hola solo tengo una duda el proton plus me esta fallando cuando trato de pasar a hex me dice "error:usb key is missing" no se si sera error del programa o es por algo mas hayuda porfa

  37. muy buen tutorial hasta que al fin encontre buenas bases para un cartel de led ahora si manos a la obra a ver si me sale y poder ampliarlo y mostrarlo a la comunidad cualquier avance

  38. hola al compilarlo con el basic compiler me sale un error y escrivo lo mismmo que vos sabes que puede ser??
    desde ya agradeceria la repuesta

  39. Hola soy un novato con los PICs, pero quisiera saber que tanto cambiaria el codigo si utilizaria el pic 16f877a ya que los codigos que pusiste son algo diferentes a los de este.

  40. Saludos a todos. Yo soy electrónico y me he construido una matriz parecida a esta pero de 7 filas por 40 columnas con efecto de entrada y salida de texto y por supuesto un software para la pc para la carga de los mensajes ya que se pueden cargar al panel 25 mensajes de 96 letras ascii cada uno. Ya esta funcional peeeeero la idea que me esta rondando últimamente es hacer una pantalla pero modular, me explico. módulos 8×8 (como este proyecto) conectados entre si para formar pantalla mas grande, tal cual las hacen las comerciales gigantes. Ya tengo la idea como hacerla pero necesito muuuucho tiempo, dinero y mas ideas obviamente. estaba pensando para comenzar con una resolución de 32 filas por 64 columnas que serian 4 modulos por fila y 8 por columnas no se si me explique. buenos si alguien le interesa hablamos saludos

  41. Hola Mario , lo quiero felicitar por este proyecto el cual me entusiasma mucho,pero lo tengo que molestar con un par de consultas,Lo quiero compilar em microcode y basic pic y en ambos me genera errores , en que soft lo compilo, y otra consulta importante para mi este mismo proyecto se puede progamar en microcode el cual estoy mas familiarizado, desde ya le agradezco su atencion y las respuestas.
    Atte

  42. hola mario mira estoy en cordoba argentina,.. y estoy estudiando tecnico superior en telecomunicaciones y me gustaria si es que podes pasarme el programa para cargar estas rutina o decirme que programas usa, asi lo paso al pic,,espero tu respuesta este gracias….

Responder a reyes Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

PEAR, psicoquinesia en Princeton

Made in China