Matriz de 16x32 (40) LED personalizada, controlada por Arduino

0

Estoy planeando construir un reloj / termómetro / pantalla de información. He ordenado 10 unidades de matriz de 8x8 LED de ebay ( enlace ). Como no se trata de uno pre-construido, tengo que diseñar algún tipo de circuito que pueda hacer el truco.

  • Los comerciales funcionan por segmentos, cada 8x8 es un segmento y usted tiene que cambiar el código a través de cada segmento para llegar al último. (Prefiero ir por este camino, ya que esto requiere más componentes).
  • Mi idea es convertirla en una Matriz grande, no en una 8 más pequeña. Un TLC5940 o dos 74hc595 serían capaces de controlar las líneas y yo también podría controlar de esta manera las colisiones. (2 TLC5940 o 4 74hc595). (O 5 74hc595-s y hágalo 16x40)

Así que creo que tengo esta parte calculada (quizás no comparto tus ideas), pero ¿cómo voy a mostrar el texto en estos píxeles? ¿Cómo voy a producir la "imagen" (la matriz), que debería cambiarse? (Por no hablar de la ejecución de texto, animaciones, etc.) No estoy muy seguro de cómo va a funcionar esto.

Ah, y el Arduino puede ser de cualquier tipo, prefiero el MEGA2560, así que no tenemos que preocuparnos por el tamaño del programa. Y podré conectar mi RTC, módulo Ethernet, sensores de temperatura, botones, etc ...

Cada bit de información es un plus en esto. Las pantallas llegarán en 3 a 4 semanas, por lo que sería bueno tenerlo en cuenta para cuando lleguen.

    
pregunta Zoszko

1 respuesta

0

Tienes algunas capas diferentes aquí:

  • Hardware (conexiones eléctricas reales y selección de chips)
  • software de controlador de pantalla
  • Software de procesamiento de texto / gráficos

Recomiendo resolver estos problemas individualmente.

En el lado del hardware, debe encontrar una hoja de datos que le proporcione la asignación de pines para los módulos (no aparece incluida en la lista, y hasta que sepa cómo se conectan los LED a las patillas, tratando de elegir un controlador chip es una pérdida de tiempo)

Para el controlador de pantalla, quieres algo como: display_pixel_draw (x, y, on_or_off)

Para la representación de texto, lo mejor sería buscar algunas fuentes de consola monoespaciadas de código abierto. Entonces representas a un personaje con algo como esto:

struct display_character{
    boolean active;
    uint16_t x, y;
    uint8_t bitmap[8];  //< 8 * 8-bits == 8x8 display
}

Si quisieras hacer que todos se desplacen por el borde derecho, harías algo como

static displayed_characters[MAX_DISPLAY_CHARACTERS];

#define SCROLL_DELAY_MS 50
#define SCROLL_X_INCREMENT  1

// some init code for your characters

while(any_characters_visible()){
    for(uint16_t i = 0; i < MAX_DISPLAY_CHARACTERS; i++){
        if(!displayed_characters[i].active){
            continue;
        }

        // Make the character move right
        displayed_characters[i].x += SCROLL_X_INCREMENT;

        // Pass a pointer to the character to the render function
        render_character(&(displayed_characters[i]));

        // This function will mark the character as !active if it scrolled
        // off the display (meaning you can re-use it for something else)
        invalidate_if_out_of_bounds(&(displayed_characters[i]));
    }

    delay(SCROLL_DELAY_MS);
}

Te dejo escribiendo estas funciones.

    
respondido por el user373884

Lea otras preguntas en las etiquetas