Display 7 segmentos 4 dígitos con PIC16f84A fallo de luminiscencia...

Buenas,

he diseñado y construído una plaquita que integra los siguientes componentes, para hacer una especie de entrenador muy sencillo, con un display de 7 segmentos, 4 dígitos y 1 botón...

os cuento el problema que le veo:

1. cuando lo conecto, los leds se encienden unos mas fuertes que otros (son los leds del 7 segmentos).

notas, descripción, especificaciones...:

1. las resistencias son de 330ohmios
2. el 7 segmentos es de 4 digitos, y reciclado de un viejo tdt que encontré...
3. el PIC que uso, es un pic16f84a
4. el código está en SDCC
5. los condensadores son de 27pF y el cristal de 4MHz...
6. la resistencia que va al MCLR es de 4.7K

disculpad que no os pinte el esquema, es que me da mucha pereza porque no sé usarlo bien, y total, adelanto más escribiéndolo, y supongo que con decir que los pines del 7 seg están conectado directamente al PIC los VCC y los GND directamente a las resistencias->y luego al PIC, basta.

os podéis hacer una imágen de lo que he escrito?

gracias a tod@s por compartir;

adios.

p.d. para quien no le quede claro, lo que quería saber es como solventar el problema de que unos dígitos brillen más que otros...
gracias.
adios. ...
 
Amigo, sin un esquema y codigo de programa, sera mas dificil adivinar. Pueden ser varias cosas, empezando por hardware. Ejem. Los display son identicos?, cada salida de segmento tiene su propia resistencia limitadora?, los transistores o drivers son los mismos?. Problema de software, los tiempos de acceso a cada display es el mismo?. O quizas hay una interrupcion, que al activarse impide que al menos uno de ellos no se ilumine durante uno o mas ciclos, etc.
 
Última edición:
Querido amigo,

gracias por tu respuesta.

me complace el anunciarte que voy a dibujar el esquema, aunque tarde mucho y me desespere... jeje.

también el anunciarte que me alegra mucho tu respuesta. y que además, tengo las siguientes informaciones que darte, al respecto de tu contestación:

1. el display es un 7 segmentos de 4 dígitos como el que se muestra a continuación (PDF datasheet): https://www.sparkfun.com/datasheets/Components/LED/7-Segment/YSD-439AR6B-35.pdf
2. ¿el driver que uso? si te refieres a un shift register, ya usé uno con arduino y funcionaba bien; pero en este caso conecto el pic directamente al GND de cada segmento del display, y el VCC al pin directamente del PIC. El PORTA, en su mayoría, (excepto RA4), es para el VCC (bits a 1), y el PORTB es para GND.
Se me olvidaba decirte que cada pin del PORTB tiene una resistencia a cada segmento del display. (siento mucho que tenga que describirlo, prometo terminar el esquema antes de irme a dormir).
3. sí, en efecto se usa una interrupción, pero únicamente es un contador de tiempo. A cada milésima la interrupción salta, y entonces, a la que cuento 1000, incremento en 1 el segundero. Sin embargo, el pintado de los números en el display, (o el dibujo, etc...), lo hago en el bucle main.
Como sí tengo el código, te lo adjunto aquí, en este mensaje!

Creo que se me olvida algo, ahora repasaré el mensaje, y te digo si me falta algo por contestar.

Gracias!
Un saludo amigo.

A continuación el código:
Código:
/* ----------------------------------------------------------------------- */
/* Template source file generated by piklab */
#include <pic16f84a.h>

/* ----------------------------------------------------------------------- */
/* Configuration bits: adapt to your setup and needs */
typedef unsigned int word;
word __at 0x2007 CONFIG = _XT_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF;

#define BIN(x) \
( ((0x##x##L & 0x00000001L) ? 0x01 : 0) | ((0x##x##L & 0x00000010L) ? 0x02 : 0) | ((0x##x##L & 0x00000100L) ? 0x04 : 0) | ((0x##x##L & 0x00001000L) ? 0x08 : 0) | ((0x##x##L & 0x00010000L) ? 0x10 : 0) | ((0x##x##L & 0x00100000L) ? 0x20 : 0) | ((0x##x##L & 0x01000000L) ? 0x40 : 0) | ((0x##x##L & 0x10000000L) ? 0x80 : 0))

unsigned char tmr0_times  = 0;
unsigned char tmr0_times2 = 0;
unsigned char secs        = 0;
unsigned char mins        = 0x0b;
unsigned char hours       = 0x0b;
unsigned char hours_d1	  = 0;
unsigned char hours_d2	  = 0;
unsigned char mins_d3	  = 0;
unsigned char mins_d4	  = 0;

char print_digit(unsigned char position, unsigned char value) {
  unsigned char n;
  unsigned char v;
  
  switch (position) {
    case 1:
      n = BIN(1000);
      break;
      
    case 2:
      n = BIN(100);
      break;
      
    case 3:
      n = BIN(10);
      break;
      
    case 4:
      n = BIN(1);
      break;
    
    default:
      return -1;
  }
  
  switch (value) {
    case 0:
      v = BIN(00000100);
      break;
    case 1:
      v = BIN(11100110);
      break;
    case 2:
      v = BIN(00110000);
      break;
    case 3:
      v = BIN(10100000);
      break;
    case 4:
      v = BIN(11000010);
      break;
    case 5:
      v = BIN(10001000);
      break;
    case 6:
      v = BIN(00001000);
      break;
    case 7:
      v = BIN(11100100);
      break;
    case 8:
      v = BIN(00000000);
      break;
    case 9:
      v = BIN(10000000);
      break;
      
    default:
      return -1;
  }
  
  PORTA = n;
  PORTB = v;
  
  return 0;
}

void isr() __interrupt 0 {                                            /* interrupt service routine */
  TMR0 = 0x083;
  T0IF = 0;
  tmr0_times2 ++;
    
  if (tmr0_times2 == 10) {
    tmr0_times2 = 0;
    tmr0_times ++;
    if (tmr0_times == 100) {
      tmr0_times = 0;
      secs ++;
      if (secs == 60) {
	secs = 0;
	mins ++;
	if (mins == 60) {
	  hours ++;
	  if (hours == 24) {
	    hours = 0;
	  }
	}
      }
    }
  }
}

void main() {
  TMR0       = 0x083;
  OPTION_REG = BIN(10000010);
  INTCON     = BIN(10100000);
  TRISB      = 0;
  TRISA      = 0;
  
  while (1) {
      hours_d1 = hours / 10;
      print_digit(1, hours_d1);
      hours_d2 = hours % 10;
      print_digit(2, hours_d2);
      mins_d3 = mins / 10;
      mins_d4 = mins % 10;
      print_digit(3, mins_d3);
      print_digit(4, mins_d4);
  }
}


Edit:
Efectivamente al haber una interrupción o al haber mucho código detrás de cada impresión, el efecto de luminiscencia es menor en los últimos dígitos...

pero, ahora que me he dado cuenta, ¿cómo lo soluciono?


Edita tus mensajes en lugar de crear nuevos.
 
Última edición por un moderador:
Amigo, bien, segun tu comentario, utilizas el comun del display gatillado directamente desde un pin.:eek:
Bueno, seguramente la capacidad para drenar corriente por ese pin no sera suficiente como para abastecer a todos los segmentos, cuando deben iluminarse. Deberas utilizar un transistor PNP gobernado por dicho pin y luego podras alimentar el comun de los segmentos de cada digito, desde el colector de dicho transistor.;)
Recuerda que deberas negar la salida al transistor, pues este satura con señal 0V.:rolleyes:
Aun asi, sube el esquema.
 
Última edición:
buenas amigo!

gracias por tu respuesta de nuevo.

anoche me lié programando. Y he conseguido mejorar la iluminación, reduciendo código y haciéndolo más uniformemente iluminado.

Lamentablemente no pude subirte el esqueme porque utilicé todo el tiempo, jojo.
Pero hoy en cuanto vuelva de clase te lo termino.

saludos!

gracias.
 
Quizás no esté bien el tiempo que se enciende cada display. Hice lo mismo con un arduino hace 4 días y tuve que poner un delay de 1 o 2 ms entre el encendido de cada dígito, antes pude ver todo como 8 o que los números se veían muy tenues.
 
bueno, aqui tienes el esquema; es la primera vez que termino uno. es un rollo...

en fin, gracias.


y vas a tener razón otra vez, va a ser el pin de VCC que no suministra suficiente intensidad para los 7 segmentos del dígito... aparte, solucioné la programación que debido a la interrupción habian contrastes jeje.... eres un crack!

por cierto, lo del transistor, ¿cómo funciona? he estado leyendo en la wikipedia y veo que hay 3 tipos, supongo que este será bipolar, y habrá que hacer un conexionado del tipo "colector común". ¿Es así?

¿Cómo es eso de invertir 0V? :O

En fin, me disculpor por mi ignorancia, espero te sea leve, jojo.

Un saludo!

Gracias amigo ;)



Quizás no esté bien el tiempo que se enciende cada display. Hice lo mismo con un arduino hace 4 días y tuve que poner un delay de 1 o 2 ms entre el encendido de cada dígito, antes pude ver todo como 8 o que los números se veían muy tenues.

Sí, tienes razón.
El problema que le veo al delay es que la programación en PIC es un poco rollo... por ejemplo en arduino te viene toda la libreria. Pues ahora con piklab para PICs tengo las funciones justas, o ninguna, no lo sé al complet. Lo cierto es que en algún código he leído el delay_ms().

Pero el problema real, no solo es el retardo entre escrituras (que he solucionado poniendo a 0 despues de cada escritura), es que tengo una interrupción cada 1ms que me alteraba un poco el resultado porque cortaba la impresión de X dígito... de modo que uno siempre se veía más, otro menos, otro menos y asi sucesivamente.

Lo he solucionado con este código, pero sigue estando el problema de corriente, de mi amigo el argentino!

bueno, os pongo aquí como queda finalmente el código.

saludos!

Código:
/* ----------------------------------------------------------------------- */
/* Template source file generated by piklab */
#include <pic16f84a.h>

/* ----------------------------------------------------------------------- */
/* Configuration bits: adapt to your setup and needs */
typedef unsigned int word;
word __at 0x2007 CONFIG = _XT_OSC & _WDT_OFF & _PWRTE_OFF & _CP_OFF;

#define BIN(x) \
( ((0x##x##L & 0x00000001L) ? 0x01 : 0) | ((0x##x##L & 0x00000010L) ? 0x02 : 0) | ((0x##x##L & 0x00000100L) ? 0x04 : 0) | ((0x##x##L & 0x00001000L) ? 0x08 : 0) | ((0x##x##L & 0x00010000L) ? 0x10 : 0) | ((0x##x##L & 0x00100000L) ? 0x20 : 0) | ((0x##x##L & 0x01000000L) ? 0x40 : 0) | ((0x##x##L & 0x10000000L) ? 0x80 : 0))

unsigned char tmr0_times  = 0;
unsigned char tmr0_times2 = 0;
unsigned char secs        = 0;
unsigned char mins        = 0x0b;
unsigned char hours       = 0x0b;
unsigned char hours_d1	  = 0;
unsigned char hours_d2	  = 0;
unsigned char mins_d3	  = 0;
unsigned char mins_d4	  = 0;

#define POSITION_1 8
#define POSITION_2 4
#define POSITION_3 2
#define POSITION_4 1
#define POSITION_OFF 0

unsigned char map[10] = {
  4, 230, 48, 160, 194, 136, 8, 228, 0, 128
};

void isr() __interrupt 0 {                                            /* interrupt service routine */
  TMR0 = 0x083;
  T0IF = 0;
  tmr0_times2 ++;
    
  if (tmr0_times2 == 10) {
    tmr0_times2 = 0;
    tmr0_times ++;
    if (tmr0_times == 100) {
      tmr0_times = 0;
      secs ++;
      if (secs == 60) {
	secs = 0;
	mins ++;
	if (mins == 60) {
	  hours ++;
	  if (hours == 24) {
	    hours = 0;
	  }
	  hours_d1 = hours / 10;
	  hours_d2 = hours % 10;
	}
	mins_d3  = mins / 10;
	mins_d4  = mins % 10;
      }
    }
  }
}

void main() {
  TMR0       = 0x083;
  OPTION_REG = BIN(10000010);
  INTCON     = BIN(10100000);
  TRISB      = 0;
  TRISA      = 0;

  hours_d1 = hours / 10;
  hours_d2 = hours % 10;
  mins_d3  = mins / 10;
  mins_d4  = mins % 10;
  
  while (1) {
    PORTB = map[hours_d1];
    PORTA = POSITION_1;
    
    PORTA = POSITION_OFF;
    
    PORTB = map[hours_d2];
    PORTA = POSITION_2;
    
    PORTA = POSITION_OFF;
    
    PORTB = map[mins_d3];
    PORTA = POSITION_3;
    
    PORTA = POSITION_OFF;
    
    PORTB = map[mins_d4];
    PORTA = POSITION_4;
    
    PORTA = POSITION_OFF;
  }
}



Ahora, el problema evidente es que cuando pinto un 1 en todos los digitos, se ven igual intensidad.
Pero si pinto 1 1 : 1 9
^
Este nueve se ve más flojeras... jojo
 

Adjuntos

  • Screenshot from 2013-10-17 16:25:47.jpg
    Screenshot from 2013-10-17 16:25:47.jpg
    59.2 KB · Visitas: 57
Última edición:
Hola Amigo, bien!, debes utilizar los transistores en modo emisor comun (puedes implementar el BC327).
Vale decir, el emisor de dicho transistor PNP, se conecta a Vdd. La base es accionada a traves de una "resistencia limitadora" digamos un valor como 2k7, desde el pin que antes alimentaba el comun de cada display. Y por ultimo, el colector se conecta al comun del display.
Respecto, a que debes negar la salida, se debe a que el transistor conducira cuando dicha salida(pin) sea 0.
Siendo que en el programa, habilitas la salida mencionada con 1.
Ahora bien, que problema "podria" aparecer?. Pues bien, los datos que muestra cada display puede interferir, levemente replicado(brillo inferior) hacia un digito contiguo. Esto se debe a que la conmutacion de un display a otro, es relativamente alta como para que el transistor que conducia, alcance el corte inmediato, cuando el proximo ya comienza a conducir. Si esto ocurre, debes agregar un pequeño retardo algo asi como 1ms. para crear un tiempo muerto entre la activacion de cada digito. Exitos con eso Amigo!.-
 
Última edición:
Has tenido en cuenta la corriente que estás suministrando con resistencias de 330? Son 15 mA, no está mal aunque el 16f84 entrega hasta 25 mA. Quizás con resistencias de 220 se note el cambio, sería la solución sencilla y no creo que se queme ningún LED. La idea de los transistores es lo mejor porque caminas sobre seguro y evitarás calentar el micro.
 
Ya se mencinó varias veces en el foro, para obtener una buena iluminación en todos los segmentos, tenés que lograr que:

  • Todos los dígitos tengan el mismo tiempo de encendido, es decir el ciclo de trabajo (duty).
  • En base a ese ciclo de trabajo, tenés que calcular la corriente pico en c/led (es decir calcular la resistencia limitadora) en función de la corriente eficaz que estas buscando (normalmente 20mA para un buen brillo). Esto quiere decir que es posible que tu corriente pico sea alta, pero nunca debería superar la corriente pico del led (en los leds convencionales suele ser de 75mA).

Entonces, trabajar simplemente con los puertos del PIC, es peligroso, ya que el común tiene que soportar los 7 segmentos a la vez. Si hacés eso, mirá bien la hoja de datos.

Te aconsejo que uses transistores como mencionaron arriba, c/segmento es muy probable que puedas manejarlo directamente desde el puerto y para el común usá un transistor que aguante la corriente de los 7 segmentos a la vez.

Si empleas un PNP, como mencionó Roberto, usá un pull-up que te garantice poder deshabilitar la conducción del transistor, ya que si el pull-up del PIC es pobre y su tensión es lo suficientemente bajo, puede dejar al transistor a medio abrir.
 
Hola amig@s,

ya estoy de nuevo aquí, ya es fin de semana!!! jojo

os doy las nuevas...

1. compré los transistores y las resistencias de 2k7
2. he hecho hueco y he soldado todo
3. he añadido un delay de 0 < X < 1ms

el resultado es impresionante!!! los leds brillan con mayor intensidad que antes, y claro, esto se debe a que el transistor deja pasar más corriente que la salida del pic, claro... antes con 40mA se estaba soportando los 7 segmentos y por eso se veía tan flojito... ya entendí.

Ahora bien, amigo, ¿qué tipo de resistencia "pull-up" debo usar? ¿activo o pasivo? Sinceramente, no sabía ni lo que era esto... jojo
bien pues intentaré mejorar el código o investigar el motivo por el que ahora se ve mejor, pero no acaba de cuajar... me explico:

1. si el delay es de aprox. 1ms, los números parpadean, tiene que ser menor, aprox 0.550 ms
2. algunos fragmentos del dígito se ven mas oscuros que otros, esto se debe a un pequeño corto? :O

bueno, gracias a los 3 por todo,

espero que pueda acabar esto pronto, y a poder ser para hoy, jojo...

gracias,

un saludo!
 
Ahora bien, amigo, ¿qué tipo de resistencia "pull-up" debo usar? ¿activo o pasivo? Sinceramente, no sabía ni lo que era esto... jojo

El pull-up, es poner una resistencia a Vcc de esta forma:

74ncR.png


Entonces, para completar la configuración, descartá el pull-up interno del puerto PIC, configurandolo como puerto de alta impedancia (o colector abierto).

Sobre la multiplexación, para que se vea bien al ojo humano tenés que garantizar que todos los displays se enciendan en al menos 20mS (50Hz), entonces si tenés 4 dígitos, a c/dígito dale 5mS de Ton, de esta forma te queda que el periodo es 20mS y el duty 25%.

Si hacés lo que menciono arriba, para calcular las resistencias limitadoras de c/segmento usá esta fórmula:

[LATEX]I_{pico}=\frac{I_{ef}}{\sqrt{Duty}}[/LATEX]

Entonces en tus condiciones, para obtener un buen brillo en los leds:

[LATEX]I_{pico}=\frac{20mA}{\sqrt{0,25}}=40mA[/LATEX]

De ahí sacás la Rlimitadora de c/segmento, si tu fuente es de 5v:

[LATEX]R_{limitadora}=\frac{V_{fuente}-V_{led}}{I_{pico}}=\frac{5v-2,4v}{40mA} \approx 68 \Omega[/LATEX]

Por último, tené en cuenta que el transistor en el peor de los casos se tiene que bancar 40mA*7=280mA, ojo con eso.

Viendo la hoja de datos del display, la corriente pico que soporta es de 160mA, así que no vas a tener problemas.
 
Última edición:
Vale,
ya lo tengo claro...

pero, ¿te refieres c/digito o a c/segmento?

Un dígito está compuesto por 7 segmentos (o 7 leds), vos tenés 4 dígitos (28 leds en total).

A cada segmento lo tenés que alimentar mediante una resistencia limitadora, porque a la larga son simplemente leds.

Otra cosa que deberías tener en cuenta es si el PIC puede o no alimentar a 7 segmentos a la vez, siguiendo con lo que mencioné antes, debería entregar 280mA y estoy casi seguro que 200mA es todo lo que puede entregar en todos sus puertos, verificá eso.
 
Sí, ciertamente el puerto no es suficientemente potente como para alimentar todos los leds.
Si miras el esquema que puse, verás que uso una resistencia limitadora de 330ohms para c/segmento...

Al respecto de los transistores, lo que yo hice fue poner un transistor en pin VCC de los leds, por lo que tengo 5 transistores, porque son 4 dígitos + 1 pin de los ':' de la hora.

Pero, mi display muestra todos los segmentos bien iluminados, con un delay de 5ms entre cada impresión, (20 en total). Excepto en los que están conectado a RB1 y RB3.... que se ven más flojos en todos los dígitos.
Sin embargo, si en vez de pintar un numero distinto en cada dígito, pinto todos los dígitos iguales (no hay alternación de pines) y me meto en un bucle infinito sin hacer nada más, todos los leds se ven con la misma intensidad lumínica...
¿Esto, a qué se debe? ¿Tiene que ver con el pull-up? Ya probé a conectarle una Resistencia de 100ohmios en la base y VCC, y sigue igual....

bueno, un abrazo amigo! gracias por todo...



Amigo, no sé qué hice, algo debío salir bien, hice contacto con la resistencia en no se a donde y se vió todo perfecto!
voy a ver si replico el tema, creo que vas a tener razón! la madre qué.... jojojo

Por lo que veo, es posible que solo haga falta una resistencia pull-up? Yo pensé que harían falta 5...
 
Última edición:
Sí, ciertamente el puerto no es suficientemente potente como para alimentar todos los leds.
Si miras el esquema que puse, verás que uso una resistencia limitadora de 330ohms para c/segmento...

Esto implica como si tuvieras un led común con una corriente de 3mA (corriente muy por debajo de los 20mA).

Al respecto de los transistores, lo que yo hice fue poner un transistor en pin VCC de los leds, por lo que tengo 5 transistores, porque son 4 dígitos + 1 pin de los ':' de la hora.

Está bien.

Amigo, no sé qué hice, algo debío salir bien, hice contacto con la resistencia en no se a donde y se vió todo perfecto!
voy a ver si replico el tema, creo que vas a tener razón! la madre qué.... jojojo

Por lo que veo, es posible que solo haga falta una resistencia pull-up? Yo pensé que harían falta 5...

C/transistor debe tener su propio pull-up, controlado por puertos de alta impedancia.

Si estás conforme con la luminosidad así como está, dalo por terminado al circuito.

Si querés mejorarlo para obtener la mejor luminosidad, usá un integrado llamado ULN2803 que se conectan directamente a los puertos y a c/segmento.
 
Última edición:
Hola amigo! De nuevo aquí estoy...

Primero, gracias por contestar, y segundo, gracias por ser tan amable :D!

Bueno, el caso es que he vuelto a soldar la placa y se me olvidaron colocar las resistencias pull-up.. jo jo
pues ahora resulta que me pasa como al ppio.
Le cambie las resistencias de 330 ohmios a 220 ohmios, para que iluminase un poquitín más y ahora, no sé cuál es el valor de las resistencias pullup... o sea, nunca lo supe, al ppio puse de 100ohmios, (con las resistencias limitadoras de 330ohmios) pero no pintaba el primer dígito, aunque los demás se veían ¡explendidos! Pues ahora resulta, que ya se por qué volví a soldar la placa, y es que no solo porque era tan pequeñea que se hacía difícil operar, si no que creí que tenía alguna mala conexión y por eso no mostraba el dígito... pero resulta que ahora me pasa lo mismo, pero con más dígitos...

¿Es que estoy colocando mal la resistencia pull-up? ¿O es que el valor ha de ser mayor a 100ohmios? Yo he visto la imágen que me enviaste como unas 20 veces, y me he dado cuenta de que la resistencia pull-up es de 2.2 veces mayor que la Rlimitadora.. jojo, ¿es eso correcto para mi caso? es decir, ¿si tengo una Rlimitadora de ~2k7Ohmios y le pongo una pull-up de ~6k (tengo de 10k) funcionaría? O sea, ahora mismo tengo probadas las de 100ohmios y el resultado es raro... no lo entiendo y con las de 10k no hay diferencia (solo la he colocado en 3 transistores con la mano y viendo el display a ver qué tal...).

Bueno, un saludo amigo, espero que te vaya todo muy bien!

Gracias...!:)
 
La resistencia de pull-up podés hacerla de 1kOhm a 10kOhm, a mayor resistencia, más débil el pull-up. Yo probaría directamente con un pull-up fuerte de 1kOhm.

En cambio la resistencia de base, tenés que calcularla en función de la corriente de carga que vas a manejar en el transistor y su Hfe, es decir:

[LATEX]I_{base-minima}=\frac{I{carga}}{H_{fe}}[/LATEX]

Suponiendo la condición límite que te mencioné de 280mA por c/dígito y el Hfe mínimo que figura en la hoja de datos:

[LATEX]I_{base-minima}=\frac{280mA}{40}=7mA[/LATEX]

Lo ideal es darle un margen a esa corriente y sobre saturar un poco el transistor:

[LATEX]I_{base} \geq 2.I_{base} \rightarrow I_{base} \approx 14mA[/LATEX]

De esta forma, cada puerto del PIC deberá drenar 14mA c/vez que se habilite un dígito (importante tenerlo en cuenta).

Volviendo a la resistencia de base, la misma sale de hacer esto:

[LATEX]R_{base}=\frac{Vcc-0,7v}{I_{base}}=\frac{5v-0,7v}{14mA} \approx 330 \Omega[/LATEX]

Dependiendo del pull-up que elijas, si es muy fuerte (1kOhm) agregará casi 1mA más que deberá drenar el puerto del PIC (15mA en total).
 
Buenas amigo,

muchas gracias por tu contestanción, ha sido grandiosa, ¡eres todo un entendido!
¿qué tal todo? Espero que bien.
Yo conecté las resistencias de 1kOhm (5 en total) y se enciende y se apaga en funcion de si toco o "destoco" el circuito, respectivamente...
No sé como hice, donde conecte aquella vez, pero conseguí que se viese bien, con una sola resistencia, sacrificando 1 digito... no sé si me explico.

El caso es que se siguen viendo los segmentos A y B más flojos que los demás... :(

un saludo amigo,
gracias por todo!
 
Buenas amigo,

muchas gracias por tu contestanción, ha sido grandiosa, ¡eres todo un entendido!
¿qué tal todo? Espero que bien.
Yo conecté las resistencias de 1kOhm (5 en total) y se enciende y se apaga en funcion de si toco o "destoco" el circuito, respectivamente...
No sé como hice, donde conecte aquella vez, pero conseguí que se viese bien, con una sola resistencia, sacrificando 1 digito... no sé si me explico.

El caso es que se siguen viendo los segmentos A y B más flojos que los demás... :(

un saludo amigo,
gracias por todo!

Ok.

Empezá a descartar cosas:

  1. Si tenés protoboard, probá todos los segmentos de un dígito conectandolo a 5v con una resistencia limitadora de 150 Ohms y verificá que todos encienden bien.
  2. Modificá el código para que solo encienda 1 digito y verificá que todos los segmentos encienden bien.

¿A todos los segmentos le pusiste resistencias de 220Ohms?
 
Atrás
Arriba