MAX7219 y MAX7221, controladores SPI de pantallas LED de 8 dígitos de 7 segmentos

publicado en: Portada | 29

El MAX7219 y el MAX7221 son drivers para controlar un display de LED de 8 dígitos de 7 segmentos con punto decimal. Comunican con el MCU por medio de un bus SPI en el caso del MAX7221 y un bus serie genérico, aunque muy compatible a nivel hardware y software, por lo que, para la finalidad de este texto, puede equiparase al mismo.

MAX7219 MAX7221 Controlador SPI display LED 7 segmentos 8 dígitos y matriz LED

Ofrecen varias ventajas frente a gestionar directamente desde el microcontrolador el uso de una pantalla de módulos LED de 7 segmentos

  • Al separar del µC el trabajo de redibujar el display LED, pueden utilizarse con microcontroladores pequeños sin problemas de rendimiento como parpadeo o redibujado desigual.
  • Como el bus serie que utilizan es suficientemente rápido (el MAX7219 y el MAX7221 funcionan a 10 MHz), el valor mostrado en el display LED puede refrescarse a buena frecuencia, sin esfuerzo para el MCU, e incluso mostrar fácilmente movimiento.
  • Ya que trabajan con comunicaciones serie, solamente se necesitan 3 hilos (no se usa el pin MISO, ya que no devuelve información) más la alimentación, y no 16, para manejar 8 dígitos de 7 segmentos (más el punto decimal) por lo que ahorra patillas GPIO del microcontroladores.
  • Al estar diseñados para gestionar pantallas numéricas, son capaces de interpretar la información BCD, pero también pueden utilizarse de forma genérica para manejar cada segmento por separado. Esto abre la posibilidad de usar distribuciones LED alternativas, que no representen números, por ejemplo, barras de progreso (como las de carga de batería) o matrices hasta de 8×8 LED.
  • El MAX7219 y el MAX7221 están concebidos de forma que se pueden encadenar varios dispositivos al estilo daisy chain conectando el pin DIN de los MAX7219 y MAX7221 con el pin DOUT del anterior (que en el primero de la cadena no es necesario conectar y puede quedar al aire). Cuando se forma una cadena de drivers es necesario, por tanto, utilizar un cuarto hilo en el bus de comunicaciones.

Como el MAX7219 y el MAX7221 son equiparables en funcionamiento y el MAX7219 está más presente en la mayoría de los dispositivos y sobre todo en los módulos para pruebas, en el resto del texto se hace referencia a ambos usando solamente el nombre del primero, MAX7219. La única diferencia hardware reseñable es que el pin 12 es (nominalmente) CS en el MAX7221 y LOAD en el MAX7219 con una función similar. De la misma forma, se usa para ambos el mismo nombre ya que es el que habitualmente se encuentra rotulado en las conexiones serie.

MAX7219 LED 7 segmentos 8 dígitos display pinout patillas controlador

Con lo dicho hasta ahora ya se puede suponer que la configuración hardware es muy sencilla. En primer lugar, se alimenta a 5 V (funciona entre 4 V y 5,5 V), por lo que es compatible con la mayoría de los microcontroladores de las series pequeñas, como Arduino Uno.

Para establecer el nivel de iluminación de los LED, se dispone una resistencia (RSET) que determina la corriente que llega a la conexión ISET. La corriente que llega a los segmentos LED es 100 veces mayor que la que se establezca en ISET con RSET. El valor de esta resistencia puede ser variable (lo que permite disponer un potenciómetro en el montaje). Debe de ser de 10 Ω como mínimo.

MAX7219 LED 7 segmentos 8 dígitos matriz circuito aplicación

Al diagrama de arriba se suele añadir un diodo Zener (típicamente un 1N5524B) para bajar el nivel de tensión en el LED del punto decimal. El MAX7219 es muy estable frente a interferencias, en cualquier caso, cuando las circunstancias de alimentación lo requieran, se pueden añadir los clásicos condensadores de filtro de 10 µF y 100 nF a la alimentación.

En el anterior esquema se incluye el encadenamiento entre dos MAX7219 usando DOUT (anterior en la cadena) y DIN (siguiente en la cadena) y la activación desde el microcontrolador, pero además, como es lógico, hay que conectar todos los MAX7219 de la cadena al bus SPI, también con CS (LOAD) y la señal de reloj, que en la hoja de datos del MAX7219 aparece como CLK )pero que muchas veces se llama SCK o SCLK en la nomenclatura del bus SPI).

Como existe una gran variedad de display de LED de 7 segmentos o de matrices LED, también es posible que sea necesario añadir una batería de transistores a modo de driver para controlar determinado hardware que funcione a un voltaje o a un amperaje mayor que el entregado por el MAX7219. En tales casos, la función del MAX7219 sería activar (saturar) esos transistores que alimentarían los LED.

Display LED de 7 segmentos y matriz para MAX7219

Para poder realizar pruebas existen multitud de módulos que usan el MAX7219 y que incluyen algún tipo de display de LED de 7 segmentos o de matriz LED, normalmente preparados para enlazarse entre ellos. Aunque a nivel lógico no exista límite al encadenar drivers, sí que se presenta a nivel de hardware, especialmente cuando se usan cables y en función, principalmente, de su longitud.

Módulo para Arduino con driver MAX7219 y display LED 7 segmentos 8 dígitos

Módulo MAX7219 para Arduino con display LED 7 segmentos 8 dígitos

Utilizar el MAX7219 y el MAX7221 desde Arduino

Para explotar el MAX7219 o el MAX7221 desde un programa para Arduino se utiliza la librería SPI. En primer lugar es necesario inicializarla con SPI.begin(); y establecer con digitalWrite() un nivel bajo en la patilla CS (LOAD) a cada acceso al driver.

La forma de enviar un valor a un registro del MAX7219 o del MAX7221 es usando SPI.transfer(). En primer lugar se envía el código del registro al que se accede y en segundo lugar el valor que se transfiere. Como ejemplo, la siguiente podría ser una función que transfiriera un valor a un registro de un MAX7219.

Lógicamente, necesita que se defina PIN_CS, con algo como #define PIN_CS 10 y se establezca previamente como pin de salida con pinMode(PIN_CS,OUTPUT);.

Antes de enviar los valores de los dígitos que se mostrarán en el MAX7219 suele configurarse. Alguno de los registros (direcciones) de las opciones de configuración más relevantes son:

  • 0x0F Cuando el valor del registro es 1 se habilita un modo de prueba con el que verificar el funcionamiento del MAX7219.
  • 0x0C Activar o desactivar. La razón de desactivar el MAX7219 es utilizar el modo de bajo consumo así como apagar el display de LED de 7 segmentos. El valor 1 activa el driver y el 0 lo desactiva.
  • 0x0B Número máximo de dígitos representados por el MAX7219 en el display. Se expresa como un límite, es decir, el valor que se almacena en el registro es el número de dígitos mostrados menos uno.
  • 0x0A Brillo de la pantalla (el máximo es el establecido con RSET en el pin ISET). Puede ser un valor entre 0, el brillo menor, y 15, el brillo mayor.
  • 0x09 Interpretar los valores mostrados en el display LED de 7 segmentos como decimal codificado en binario (BCD) (almacenando 0xFF en el registro) o con códigos para cada segmento. Usando el segundo método se puede explotar el MAX7219 con todo tipo de matrices LED, no solo en pantallas con módulos LED de 7 segmentos. Además de no codificar en absoluto en BCD almacenando cero en el registro, existen dos modos intermedios que consisten en poner a cero los bits que corresponden con el dígito que se gestiona de forma genérica.
    En el siguiente esquema de un módulo LED se muestra el código binario de cada segmento. Con una operación OR entre ellos se obtiene el valor que se envía al MAX7219 para el dígito correspondiente.

Segmentos del display LED controlados por el MAX7219

Los registros 0x01 a 0x08 sirven para hacer referencia a los dígitos de relevancia correspondiente. No empieza a contar en el cero porque el registro 0x00 es el que se utiliza para encadenar drivers MAX7219.

Con lo que ya se ha explicado sería posible elaborar una nueva función que, usando la anterior, represente un valor display LED de 7 segmentos. El código supone que no hay un segmento especial para el signo menos y se usa el segmento central del primer dígito de la cifra. Cuando se usa un segmento especial suele ser el que, de otra forma, correspondería al punto decimal del último dígito del display LED

Como puede verse en la línea resaltada del ejemplo (y en las líneas 8, 24, 29 y 33), para mostrar un valor en un dígito se envía (se almacena) en el registro que corresponde al dígito, de 1 a 8, el valor, en este caso expresado en BCD.

En el código de la función anterior se utilizan las constantes SIGNO_MENOS y BORRAR_SEGMENTOS que corresponden con los códigos que se usan para representar el guión (el signo menos) y el módulo LED con todos los segmentos apagados al enviarlos a un dígito.

Utilizando el modo BCD del MAX7219 aún se pueden representar 4 valores más, que se pueden incluir a las definiciones del código anterior:

Usando la misma codificación que para los dígitos en BCD, estos 4 últimos signos permiten escribir algunos mensajes. En el siguiente código de ejemplo se muestra cómo escribir HELP en mitad del display.

Si en lugar de una posición fija, como en el ejemplo anterior, se utiliza un dígito de inicio, y en lugar de representar cada carácter se muestra el que corresponda de un vector que contiene la palabra, es muy sencillo hacer una versión animada del código de arriba.

letrero HELP movimiento MAX7219 MAX7221 SPI serie

Con 7 segmentos no es posible representar muchos signos, la razón por la cual el MAX7219 es capaz de usar de forma arbitraria cada segmento es para usar matrices LED con la disposición correspondiente. En cualquier caso, y a falta de explicar un uso más genérico en otro artículo, para activar cada segmento es necesario:

  • Desactivar el modo BCD en los dígitos en los que se va a mostrar una disposición arbitraria
  • Componer el signo que se quiere representar estableciendo a nivel alto (uno) el bit del segmento que se enciende y a nivel bajo (cero) el bit del segmento que se apaga.
  • Enviar el código que se ha compuesto al registro que corresponde a la posición del dígito en el que se representa

Por ejemplo, para escribir la palabra «Error» habría que definir los valores de los signos E, r y o, para luego enviarlos a las posiciones correspondientes entre la 1 y la 5.

Para definir la letra E se encenderían los segmentos A, D, E, F y G lo que corresponde, según la tabla que se incluía más arriba al valor 0b01001111. La letra o se dibujaría encendiendo los segmentos C, D, E y G con el valor 0b00011101. Por último, la letra r se compone con los segmentos E y G que corresponden al valor 0b00000101. Como es lógico, para apagar todos los segmentos de un dígito se establece a nivel bajo todos los bits, es decir, se envía un cero al registro que almacena su posición.

En el siguiente ejemplo se usa la información anterior para escribir la palabra «Error» en la parte derecha (dígitos uno a cinco) del display LED

Dígitos LED arbitrarios texto Error MAX7219 MAX7221 SPI serie

Para usar el driver MAX7219 con un display de LED de 7 segmentos en el que activar segmentos de manera arbitraría no merece la pena implementar más funcionalidades pero para presentar valores numéricos sí puede ser interesante implementar la presentación de valores con decimales.

Inicialmente puede parecer interesante crear una nueva función para números decimales o modificar la que se ha descrito antes para que los acepte. En realidad lo único relevante es implementar la activación del punto decimal ya que, al ser un número de dígitos fijo (y no muy alto), la gestión que hace el programa debe controlar los valores que se representarán.

La solución por la que he optado consiste en pasar como argumento a la función la posición del punto decimal (coma). Desde el programa que hace la llamada se multiplica el número decimal (float) por el número de posiciones de la coma y se pasa como un entero a la función.

Con los cambios anteriores, una función que mostrara el punto decimal en el dígito de una posición determinada sería como el código de abajo. Es interesante resaltar que, en la mayoría de los módulos de 7 segmentos, el decimal está a la derecha, por lo que debe activarse en el dígito siguiente a la posición que se desea, a la izquierda de los valores menores que uno.

Librería para controlar el MAX7219 y el MAX7221 desde Arduino

El siguiente es el código de una pequeña librería para controlar con el MAX7219 o el MAX7221 un display LED de 8 dígitos de 7 segmentos desarrollada utilizando la información que se ha explicado hasta ahora. Se ha añadido la presentación del texto «Error» como ejemplo de activación de LED arbitrarios además de la presentación de una cifra con signo y punto decimal arbitrarios.

Víctor Ventura

Desarrollando aplicaciones para la web conocí el potencial de internet de las cosas, encontré la excusa perfecta para satisfacer la inquietud de aprender electrónica que había tenido desde siempre. Ahora puedo darme el gusto de programar las cosas que yo mismo diseño y fabrico.

Más entradas - Página web

Sígueme:
TwitterLinkedIn

Seguir Víctor Ventura:

Programador multimedia y web + IoT. Mejor con software libre.

Desarrollando aplicaciones para la web conocí el potencial de internet de las cosas, encontré la excusa perfecta para satisfacer la inquietud de aprender electrónica que había tenido desde siempre. Ahora puedo darme el gusto de programar las cosas que yo mismo diseño y fabrico.

29 Respuestas

  1. Luciano

    Hola, muy interesante lo que explicas! Yo uso el max7219 en un módulo llamado Led matrix 8×8, me surgió la inquietud de que función cumplía este driver y termine en este interesante y completo tutorial!

    Quería consultarte algo respecto ala integrado max7219, usar este integrado es como hacer de forma manual multiplexado? o sea. Me encargaron un display de 4 digitos de leds de 5mm de series de 6 leds de 7 segmentos, entonces me preguntaba si este chip solucionaría gran parte de mi código y evitar tanto cable río para multiplexado y demás. Te agradezco de antemano! saludos

    • Víctor Ventura

      Hola, Luciano.

      Sí, este integrado te ahorra el «multiplexado» y también ahorrarás cables desde el microcontrolador hasta el MAX7219, que tendrás que conectar al display LED, aunque entiendo que van a estar juntos en tu montaje y separados del MCU y por eso representa otra mejora ¿Acierto?

      Suerte con tu proyecto y gracias por participar en el blog 🙂

  2. BRYAN

    Hola, muy interesante y extenso tu blog. Actualmente estoy en un proyecto y estoy usando el max7219 porque a primera instancia lo vi mas facil de usar; mi proyecto consiste en contar pulsos que entra al arduino y mostrar los pulsos en los display de 7 segmentos. Tengo entendido que los display tienen que ser catodos, la cantidad total son 6 digitos, (4 enteros y 2 decimales separadas por un punto decimal) , mi consulta es, como puedo hacer la logica del programa para contar pulsos? ademas como activo el punto decimal solamente en un digito? Gracias por tu respuesta.

    • Víctor Ventura

      Hola, Bryan.

      Gracias, me alegro de que te guste el blog; espero que también te resulte útil.

      Sí, en el artículo se supone que se usan display LED de 7 segmentos de cátodo común (todos los segmentos de cada dígito están conectados a masa).

      Si repasas los ejemplos de código del artículo verás que se explica cómo activar el punto decimal en cierto dígito. Concretamente tendrás que hacer una operación OR con el valor 0B10000000 sobre el valor del dígito para activar el MSB (bit más significativo).

      Ir contando los pulsos que se muestran en el display LED no tiene relación con el MAX7219. Por ejemplo, puedes usar una variable que se inicialice a cero (por ejemplo al declararla con unsigned long pulsos=0;) y que se vaya incrementando a cada pulso con pulsos++; dentro de una función que sea llamada por una interrupción y que puedes establecer con attachInterrupt, que usará como parámetros el número de interrupción que elijas (que dependerá del pin al que conectes la entrada del pulso y que puedes determinar con digitalPinToInterrupt), el nombre de la función que incrementa el contador y el cambio en la señal (flanco) que dispara la interrupción.

      En el blog tienes algunos ejemplos de uso de las interrupciones para tareas similares a la que planteas, por ejemplo en el artículo sobre el almacenamiento de datos en una tarjeta SD.

      No termina de quedarme muy claro para qué usarías el punto decimal: si vas a contar pulsos resultará un número entero. Quizá con más información podríamos orientarte con el problema.

      Saludos y mucha suerte con tu proyecto.

      • BRYAN

        Gracias por responder.
        Cuando dices «Ir contando los pulsos que se muestran en el display LED no tiene relación con el MAX7219» , que quieres decir con eso?
        acaso con el max7219 no se puede realizar un contador de pulsos??
        * anteriormente si realize un contador de pulsoscon arduino, transistores y display 7 segmentos pero era muchos cables, por eso opte el max7219 que con 3 cables era posible mostrar numeros en el display. Solo que no me queda muy claro como seria posible el contador con el max7219 ya que mandas los registros y valores.

        * el punto decimal lo requiero para separar los enteros (4 digitos) y 2 decimales, si bien es cierto no se necesita eso porq al contar es todo entero; pero en mi caso lo requiero, porque cada 100 pulsos es un galon de combustible ( topico de mi proyecto) y lo que muestro en el display son los «galones de combustible» cuando realmente son los pulsos que muestra, pero para que se pueda ver que son los galones con el punto decimal cumplo el objetivo..
        por ejemplo.
        cont pulsos = 350 pulsos 3.5 galones —> mostrando en el display seria 0003.50 galones.

        • Víctor Ventura

          Hola, Bryan.

          Ahora veo lo del punto decimal. Puedes implementarlo como hago en la función mostrar_cifra_MAX7219 que usa el parámetro posicion_coma pasando el valor (fijo) de la posición que necesitas.

          Con el MAX7219 sí se puede hacer un contador de pulsos, pero necesitarás más componentes. Si te fijas en el pinout del MAX7219 verás que no tiene una entrada de pulsos sino una entrada SPI que en el artículo se supone que conectas a una placa Arduino, aunque funcionaría con otros MCU.

          Gracias por participar en polaridad.es

  3. Gitmel

    Muchas gracias por compartir la información! Todo bien detallado, me ha sido muy útil!.

  4. Gustavo

    Hola, Victor.
    Estoy haciendo un simulador de vuelo casero, y arranque con el MCP piloto automatico, con una placa usb que compre logre hacer funcionar botones y rotary encoder, pero se complica con los indicadores de velocidad altitud rumbo y vertical y eso se puede lograr con arduino. Vos me podrias ayudar
    con este proyecto? Gracias.

    • Víctor Ventura

      Hola, Gustavo.

      Seguro que en polaridad.es podríamos ayudarte pero tendrás que hacer alguna pregunta concreta sobre algún tema concreto ¿No?

      Entiendo por lo de «casero» que no es el caso pero, si fuera algo profesional, seguro que algún lector, o yo mismo, podríamos dirigir el proyecto como un trabajo remunerado.

      Siempre estoy encantado de responder cualquier cuestión concreta que me plantean en este blog (incluso si no tiene que ver con el tema del artículo) o en otros foros, aunque no siempre soy capaz de acertar con el problema 🙁 (espero que sea por la distancia) Tema muy diferente es que yo me encargue de gestionar el proyecto personal de un tercero: tengo muchos de los míos esperando 🙂 Seguro que lo comprendes.

      Saludos y suerte con tu proyecto.

  5. gustavo

    Si Victor entiendo Gracias igual. Como no se programar arduino
    siempre pregunto para tratar de llegar a alguien que tenga hecho
    un proyecto como el que quiero hacer y lograr realizarlo porque yo solo
    no podria. Abrazo.

  6. Iker Rour

    Buenos dias,

    Muy interesante tanto el post como el módulo MAX7219.
    Me surge un par de preguntas:

    ¿Cuantos módulos MAX7219 puedo controlar con un solo arduino uno?
    ¿Cuantos módulos puedo conectar en cascada?

    • Víctor Ventura

      Hola, Iker.

      En principio no hay un límite para el número de dispositivos que puedes conectar a un bus SPI siempre que la alimentación y la señal sean correctas (lo que seguramente limitará la longitud de los cables, pero supongo que eso no representa un problema).

      En el caso de un Arduino Uno el límite será el número de salidas digitales disponibles para activar y desactivar cada dispositivo SPI. Lógicamente, dependerá de cómo sea tu proyecto pero seguramente podrás conectar 10 dispositivos sin demasiados problemas.

      Gracias por participar en polaridad.es

  7. Luis G

    Hola, muy buen y completo post, sólo que me queso la duda de como deberían conectarse los transistores para tener una mayor corriente en una matriz d leds, he intentado exitando la base con la salida del max y conduciendo la corriente hacia el les de colector a emisor pero sin resultados, ojala pudiera ayudarme ya que me gustaría q mi matriz pusiera utilizar el máximo brillo de los les que usé. Y por último otro comentario, en la hoja de datos del max se muestra que la Rset debe de ir a VCC y no a tierra como usted menciona, lo comento por que tal vez cometió un error en eso. Bueno me despido y ojala pudiera responderme, gracias.

    • Víctor Ventura

      Hola, Luis.

      El MAX7219 y el MAX7221 son bastante generosos a la hora de iluminar los LED que gestionan por lo que, en principio, es raro que no te baste con la configuración del circuito típico.

      La solución que propones para conseguir aumentar la iluminación me parece la correcta: establecer un driver entre las salidas del MAX7219 o del MAX7221 y la alimentación de los LED (de cátodo común). Supongo que estarás utilizando unos displays de LED de 7 segmentos muy grandes y necesitarás utilizar los transistores correspondientes ¿No los sugiere el fabricante? pero, si es que eso es lo que produce el problema de la baja iluminación, tu propuesta me parece la adecuada.

      Con respecto a la conexión de RSET, tienes razón. Lógicamente, para que le llegue corriente a a ISET, debe estar conectado +V. Un error absurdo, como tantos otros que habré cometido 😀 Ya lo he cambiado ¡Muchas gracias por avisar! Así no confundo a más lectores.

      Espero que resuelvas tu problema y sería fenomenal si nos contaras cómo lo consigues finalmente ¡Te espero pronto por polaridad.es!

  8. Francisco gallardo

    Hola Victor,

    Muchas gracias por publicar este buen trabajo.

    Funciona todo para 1 modulo de 8 dígitos pero ¿como puedo programar en Arduino manejar 3 módulos de 8 digitos interconectados ?

    Gracias

  9. Manuel Mena

    Buenas tardes, tengo una gran pregunta, así como se puede anexar columnas para aumentar el número de la matriz ¿se puedo pero incrementando el número de filas? Quiero desarrollar una matriz de 16×64.

  10. Wilmer Guarnizo

    hola victor, muchas gracias por tu dedicación y aporte, es justo lo que estaba buscando, pero la verdad ando algo perdido con respecto a la conexión del DIN, CS y clk del max7219 a que pines del arduino, entiendo que el cs va en el pin 10 como lo menciona en los ejemplos pero y el resto no veo, disculpa si no caigo en cuenta si en alguna parte de tu tutorial lo dice, te agradecería mucho me respondas.

    • Víctor Ventura

      Hola, Wilmer.

      No sé si entiendo tu pregunta. La conexión es, tal como está descrita en el segundo esquema, una conexión SPI convencional pero sin utilizar MISO; es decir: DIN con MOSI, SCK con SCK y CS con algún GPIO (típicamente con SS de Arduino)

      Ojalá que eso te ayude un poco.

      Saludos.

  11. Rasfael

    Ola, nao consegui encontrar o download ZIP desse arquivo, voce pode me ajudar?
    preciso de 3 livrarias, consegui baixar 2 apenas essa aqui nao estou achando…

  12. Wilmer Guarnizo

    buenas noches víctor, de nuevo yo, que pena incomodar, la respuesta que me diste me sirvió y aclaro mi duda, y de antemano te agradezco muchísimo, pero ahora me surgió un problema, me llevo todo el día probando y haciendo diferentes conexiones incluso cambie librerias debido a que todos los displays me encendian, el caso es que llegue a la conclusion comprobada de que mis displays son de andodo comun, y todos los ejemplos estan destinados para displays de catodo comun, mi pregunta es si hay alguna forma de modificar el codigo tal que me invierta esta cuestion, te agradeceria mucho tu aporte y muchisimas gracias.

  13. Ernesto Aides

    Victor, primero felcitaciones por tu blog, y ahora la consulta:

    Quiero hacer un panel de radio para conectar al simulador de vuelo, y la idea es usar varios modulos de 8 digitos (7 segmentos). Estoy usando un arduino mega y testeando con la libreria ledControl que permite manejar hasta 8 modulos conectados en cascada, el tema es que todo funciona bien si pongo hasta 3 modulos, ahora si ya pongo un cuarto algunos digitos ya no prenden. Soy muy pero que muy poco experto en electroica/electricidad, asi que solo supongo que es un problema de corriente; por ahora los alimento a los modulos desde el pin 5v y gnd del arduino mega (el mismo se aliemnta por el usb del computador).
    Es este el problema ? cuantos modulos se pueden alimentar? (ni que hablar que todavia me faltan varios encoders y botones mas algunos leds indicadores).
    Se puede alientar el arduino desde el jack conector de energia y aun mantener la conecccion a la computadora por USB o en ese caso quemaria la placa y/o la computadora ? Hasta ahora encontre info que habla de alimentar por la fuente externa cuando es un proyecto autonomo; pero yo necesito mantener la conecccion usb a la compu.
    Gracias por la paciencia para con un novato. Saludos!

  14. José Luis Marrero

    Hola Víctor.
    Necesito hacer un cronometro de 6 digitos de 7 seg. (mm: SS,00) minutos, segundos, y décimas. Es para una pista de equitación para niños autistas que compiten. Pensé en utilizar el módulo de 8 dígitos puesto que el de 6 no existe. Intento hacer todo con un arduino uno o mega (dispongo de ambos) sin agregar ningún otro controlador. Además debo utilizar cada dígito para ampliarlo a un display mucho más potente destinado al publico lo que haría a través de transistores apropiados y potencia externa. También debo transmitir la info del modulo pequeño al grande de forma inalámbrica con los módulos nrf24l01. La pregunta es: ¿puedes desarrollar el/los códigos y el circuito electrónico comprensible para un neófito? Obviamente sería un trabajo rentado y nos pondríamos de acuerdo en el costo si tu respuesta es afirmativa.
    PD: También debería poder programar el crono para 45 seg. descendentes concluidos los cuales comenzaría el crono normal de forma automática al recibir la señal de un sensor que ya tengo instalado en la pista. Si el jinete no cruza ese sensor al los 45 seg. suena una alarma que lo deja fuera de competencia. Si cruza el sensor el crono normal comienza a contar hasta que otro sensor lo detiene al final de la pista.Todos los conteos deberían poder iniciarse, detenerse, pausarse y resetearse de manera manual con botones desde la consola central de control que ya tengo en construcción.
    Muy bueno su blog y lo felicito por proporcional tanta ayuda.
    Espero su respuesta.

  15. Sebastian Ezequiel Scardigno

    Hola Víctor.

    Muy interesante y didáctico el articulo.
    Yo hace años comencé a jugar con una matriz de 8×8, multiplexores y un arduino. En el caso de controlar una matriz 8×8 RGB se necesitarían 3 MAX7219 (uno por cada color)? O es que se puede usar uno para controlar cada color?

  16. Nicola Bernardelli

    Hola Víctor,

    Muy bueno el artículo, muy útil el «mapa» de los bits que permiten prender cada segmento o el punto decimal. Tendrías un disegno con las medidas precisas, que incluya posición y diámetro de los agujeros en el PCB? (Y si lo tenés, estaría buenísimo agregarlo a la página que quedaría definitivamente sobresaliendo con respecto a otras publicaciones sobre este componente.)

Deja un comentario

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