Voltimetro 3 led rgb

Hola, les hago una consulta, estoy haciendo unas prácticas para un voltímetro simple de 3 led, que cuando llegue a los valores encienda un led, llegue a otro valor lo apague y encienda otro, estoy trabado en la parte del apagado, como conviene hacerlo con if o con case?

Lo hice así y funcionó , debe haber una manera mejor,
while (true){

int16 analogico;
set_adc_channel (0);
delay_ms(10);
analogico= read_adc();



if (analogico > 100){
output_high(pin_verde);

}else {

output_low(pin_verde);
}

if (analogico > 350){
output_low(pin_verde);
output_high(pin_azul);
}
else {
output_low(pin_azul);
}
if (analogico > 700){
output_low(pin_verde);
output_low(pin_azul);
output_high(pin_rojo);
}
else {
output_low(pin_rojo);
}


}



}
 

Adjuntos

  • practica voltimetro 3 led.rar
    66.5 KB · Visitas: 4
Te conviene con ifs, ¿vos buscás que se enciendan todos los leds hasta determinado valor (tipo vúmetro) o solo el led de esa escala?

C:
int16 analogico;
set_adc_channel (0);
delay_ms(10);

Esto antes del While.

C:
analogico= read_adc();

Esto si dentro del while, la función read_adc ¿es bloqueante? (es decir, espera hasta que termine la conversión).
 
Quiero que de de 0 a 2 Volt encienda el verde, de 2 a 3,5 el amarillo y de 3,5 a 5 el rojo, pero que encienda uno a_la vez y se apaguen fuera del valor, quiero conectar 3 led de cada color o un rgb , hay que conectarlos con un transistor me imagino para no sobre cargar el pin del pic.
 
... hay que conectarlos con un transistor me imagino para no sobre cargar el pin del pic

Dependiendo de los leds y la corriente del pin que pueda suministrar el Pic, es probable.

Ok, si es de un solo led, te recomiendo empezar de mayor a menor de esta forma:



C:
...
if(analogico>700)
{
    output_low(pin_verde);  //Se apagan los leds que no se usan
    output_low(pin_azul);
    output_high(pin_rojo);    //Se enciende el rojo
}
else if(analogico > 350)
{
    output_low(pin_verde);    //Se apagan los leds que no se usan
    output_low(pin_rojo);   
    output_high(pin_azul);    //Se enciende el azul
}
else if(analogico > 100)
{
    output_low(pin_azul);    //Se apagan los leds que no se usan
    output_low(pin_rojo);   
    output_high(pin_verde);    //Se enciende el verde
}
else
{
    output_low(pin_azul);    //Se apagan todos los leds
    output_low(pin_rojo);   
    output_low(pin_verde);   
}
....
 
Ahora estoy con dudas de la conexión, colocaría 3 led, el pic me da estado alto, tengo que colocar un transistor, ne conviene conectarlo a los 5 volt o a los 12 volt, como colocaría la resistencia ya que con un transistor manejaría 3 led?
 

Adjuntos

  • led-rgb-esquema.jpg
    led-rgb-esquema.jpg
    46.2 KB · Visitas: 2
Cualquiera de los dos voltajes iría bien, descartá posibles excesos en una línea (ya sea por corriente o por potencia), rendimiento y en última instancia si es posible elegí el mejor regulado.

Si por ej. te enganchás de los 5V, pero los leds piden mucha corriente, tal vez el regulador de 5V esté al límite (por corriente o por potencia), tendrías que evaluarlo. Lo mismo se puede pensar en términos de rendimiento, si los 5V son de un regulador lineal y estamos trabajando con una batería, usar los leds en el regulador implican una potencia de disipación en exceso mayor que usar los leds directamente en la línea de 12V.

- Ánodo común: derecho a la fuente y cada cátodo a una resistencia limitadora con su transistor npn de control con emisor a masa.
- Cátodo común: derecho a masa y cada ánodo a una resistencia limitadora con su transistor pnp de control con emisor a fuente.
 
Si pienso poner 3 led juntos y 3 transistores
Mensaje automáticamente combinado:

Creo que esta es la opción mejor para po era 3 led por pin del pic.
 

Adjuntos

  • unnamed.png
    unnamed.png
    10.5 KB · Visitas: 5
  • transistor.jpg
    transistor.jpg
    24.4 KB · Visitas: 5
  • bPggj.jpg
    bPggj.jpg
    77.4 KB · Visitas: 4
Última edición:
Arriba