Controlar Display de DVD driver TM1618 con arduino

Hola a todos,

Debido al nulo uso que le daba a mi DVD, decidí desarmarlo y sacarle provecho a sus partes, Se me ocurrió hacer un temporizador con control de velocidades para mi ventilador y quiero aprovechar el lcd que obtuve en el desguace.
Es un display que posee 4 dígitos de 7 segmentos además de lo que sería un "digito" adicional cuyos 7 segmentos serian DVD, CD, MP3, MP4, ":", PLAY y PAUSA (de estos solo me interesan play y pausa).
Esta pantallita la controla un integrado TM1618. (adjunto datasheet)

http://market.atsk.pro/upload/iblock/e79/e7965862beecdbc848026ac31a91c324.pdf

SAM_5199.JPG

En fin por ahora solo me centro en cómo controlar este display con el arduino ya que me está dando ciertos problemas, he buscado por todo internet la forma de hacerlo y solo he encontrado resultados para el integrado TM1638 (maneja más segmentos) supongo que puede ser el siguiente modelo del que yo tengo,

El integrado se controla con 3 pines: CLK - DIO - STRB, estos se conectan a arduino

Las librerías que encontré para el TM1638 no funcionan correctamente para mi integrado, sin embargo creo que partiendo de esa base puedo llegar a obtener algunos resultados

rjbatista/tm1638-library
danja/TM1638lite

con casi todos los ejemplos dentro de esas librerías hay inconvenientes, los segmentos que se encienden no son los correctos y no se forma un numero, con uno de los ejemplos que al parecer es un timer si se forman los números pero al revés, no se que hacer , necesito ayuda, gracias por su atención, saludos
 
Última edición:
El datasheet es un engendro, pero en la página 9 tenes el flujograma de operación que tenés que seguir.
Vas a tener que probar los diversos comandos para ver que diablos es lo que hacen, y probablemente tengas que eliminar el escaneo de teclas que también hace el chip...y por ende la lectura de datos también la vas a eliminar.
Acá no hay mucho mas que seguir la operación descripta y ver como construís cada comando para descubrir que es lo que activa cada uno en el display...a menos que consigas el datasheet
Ingeniería inversa que le dicen....
Despues tal vez puedas acomodar la otra biblioteca que conseguiste para que trabaje como quieras, aunque podés empezar jugando un poco con la que funciona pero arma los digitos al revés en la idea de encontrar como envía los comandos.
 
Última edición:
El datasheet es un engendro, pero en la página 9 tenes el flujograma de operación que tenés que seguir.
Vas a tener que probar los diversos comandos para ver que diablos es lo que hacen, y probablemente tengas que eliminar el escaneo de teclas que también hace el chip...y por ende la lectura de datos también la vas a eliminar.
Acá no hay mucho mas que seguir la operación descripta y ver como construís cada comando para descubrir que es lo que activa cada uno en el display...a menos que consigas el datasheet
Ingeniería inversa que le dicen....
Despues tal vez puedas acomodar la otra biblioteca que conseguiste para que trabaje como quieras.

estaba urgando en el codigo de las librerias pero se me dificulta bastante jaja
lo que pude ver es que esta funcion:
void displaySS (uint8_t position, uint8_t value) direct access to 7-segment display at position, bits of value state which segments to turn on
esta no se usa en los ejemplos pero funciona de cierta forma, seteando segmento por segmento, no es muy practico pero es un avance.

tambien intente modificando estos valores:

C:
  0x52, /* / */
  0x3F, /* 0 */
  0x06, /* 1 */
  0x5B, /* 2 */
  0x4F, /* 3 */
  0x66, /* 4 */
  0x6D, /* 5 */
  0x7D, /* 6 */
  0x07, /* 7 */
  0x7F, /* 8 */

poniendo otras direcciones para ver que segmento encendia
 
Por ahi vi en el codigo que usaba un mapeo de numeros a "fonts" por medio de un arreglo..que supongo que sera esa lista de números que posteaste.
así es. solo que en la librería TM1838 y en TM1838LITE las direcciones de esos mapeos son diferentes, pero el resultado es el mismo, es decir si quiero que se vea un 1 en el display se ven dos rayas -- con ambas librerías. Ahora estoy intentando encontrar relación entre esos mapeos y uno de los cuadros en el datsheet
 
Seguramente trabaja matrizado, usando un decodificador BCD a 7 seg. necesita 4 puertos, más 2 puertos usando algún demultiplexor cómo CD4555 o CD4556, según sea cátodo común o ánodo común.
Total 6 puertos.
gracias por la ayuda, lo tendré en cuenta en caso de que no pueda hacerlo funcionar, con el TM1618 que ya tiene puedo incluso agregar switches para controlar el display por eso intentare hacerlo andar, de lo contrario tendré que hacer lo que tu me propones
 
Pero qué casualidad!!! Estoy armando un equipo casero y justo necesitaba información. El problema es que yo lo estoy haciendo con PIC y no lo puedo hacer andar. ¿Alguna sugerencia? Les dejo el código:
C:
#include <18F2550.h>

#FUSES INTRC_IO,NOMCLR
#USE delay(Internal=4M)


#define STB_PIN PIN_B2


#define SPI_MODE_0  (SPI_L_TO_H | SPI_XMIT_L_TO_H)
#define SPI_MODE_1  (SPI_L_TO_H)
#define SPI_MODE_2  (SPI_H_TO_L)
#define SPI_MODE_3  (SPI_H_TO_L | SPI_XMIT_L_TO_H)

int dis_play[14];
int i,time;

void main(){
   
   output_high(STB_PIN);
  
   setup_spi(SPI_MASTER | SPI_MODE_0 | SPI_CLK_DIV_4);
   time = 5000;
   delay_us(200);
  
   output_low(STB_PIN);
   spi_write(0x40);
   output_high(STB_PIN);
   delay_us(time);
  
   output_low(STB_PIN);
   spi_write(0xC0);
   for(i=0;i<14;i++){
      spi_write(0x00);
   }
   output_high(STB_PIN);
   delay_us(time);
  
   output_low(STB_PIN);
   spi_write(0x00);
   output_high(STB_PIN);
   delay_us(time);
  
   output_low(STB_PIN);
   spi_write(0x8F);
   output_high(STB_PIN);
   delay_us(time);
  
   dis_play[0] = 0xAA;
   dis_play[1] = 0xAA;
   dis_play[2] = 0xF0;
   dis_play[3] = 0xF0;
   dis_play[4] = 0xF0;
   dis_play[5] = 0xF0;
   dis_play[6] = 0xF0;
   dis_play[7] = 0xF0;
   dis_play[8] = 0xF0;
   dis_play[9] = 0xF0;
   dis_play[10] = 0xF0;
   dis_play[11] = 0xF0;
   dis_play[12] = 0xAA;
   dis_play[13] = 0xAA;
  
   ////////////////////
  
  
  
   while(true){
      
      output_low(STB_PIN);
      spi_write(0x40);
      output_high(STB_PIN);
      delay_us(time);
      
      output_low(STB_PIN);
      spi_write(0xC0);
      output_high(STB_PIN);
      delay_us(time);
      
      output_low(STB_PIN);
      
      spi_write(0xAA);
      spi_write(0x01);
      spi_write(0x02);
      spi_write(0xAA);
      spi_write(0xAA);
      spi_write(0xAA);
      spi_write(0xAA);
      spi_write(0xAA);
      spi_write(0xAA);
      spi_write(0xAA);
      spi_write(0xAA);
      spi_write(0xE0);
      spi_write(0x0E);
      spi_write(0x0E);
      
      output_high(STB_PIN);
      delay_us(time);
      
      output_low(STB_PIN);
      spi_write(0x00);
      output_high(STB_PIN);
      delay_us(time);
      
      output_low(STB_PIN);
      spi_write(0x8F);
      output_high(STB_PIN);
      
      delay_ms(200);
   }
}
 
Hola a todos, Debido al nulo uso que le daba a mi DVD, decidí desarmarlo y sacarle provecho a sus partes, Se me ocurrió hacer un temporizador con control de velocidades para mi ventilador y quiero aprovechar el lcd que obtuve en el desguace. Es un display que posee 4 dígitos de 7 segmentos además de lo que sería un "digito" adicional cuyos 7 segmentos serian DVD, CD, MP3, MP4, ":", PLAY y PAUSA (de estos solo me interesan play y pausa). Esta pantallita la controla un integrado TM1618. (adjunto datasheet) http://market.atsk.pro/upload/iblock/e79/e7965862beecdbc848026ac31a91c324.pdf Ver el archivo adjunto 173539 En fin por ahora solo me centro en cómo controlar este display con el arduino ya que me está dando ciertos problemas, he buscado por todo internet la forma de hacerlo y solo he encontrado resultados para el integrado TM1638 (maneja más segmentos) supongo que puede ser el siguiente modelo del que yo tengo, El integrado se controla con 3 pines: CLK - DIO - STRB, estos se conectan a arduino Las librerías que encontré para el TM1638 no funcionan correctamente para mi integrado, sin embargo creo que partiendo de esa base puedo llegar a obtener algunos resultados rjbatista/tm1638-library danja/TM1638lite con casi todos los ejemplos dentro de esas librerías hay inconvenientes, los segmentos que se encienden no son los correctos y no se forma un numero, con uno de los ejemplos que al parecer es un timer si se forman los números pero al revés, no se que hacer , necesito ayuda, gracias por su atención, saludos






Hola se que es un tema viejo, pero quiero saber si lograste resolver el problema?
 
Atrás
Arriba