Hola, estoy haciendo un programa en ccs con el pic16f873 para leer dos potenciómetros, que segun su valor independiente deben encender más o menos su respectiva fila de leds (8 para cada canal)
Funciona todo correctamente, solo me falta que cuando exista una diferencia de 2 leds encendidos, o sea, que en el canal 1 por ejemplo esten 3 leds encendidos y en el canal 2 esten 5, pues me encienda otro led a modo de aviso, tiene que hacerlo en todos los niveles, ejemplo 8 lends encidos en el canal 1 y 6 en el 2. Supongo que hay que comparar los valores de entrada y cuando la diferencia entre ellos sea superior a 2 pues que se encienda el problema es que no se como hacer esto.
Gracias de antemano
Los valores de entrada los divido entre 127 para que den 8 leds justos
Gracias.
Funciona todo correctamente, solo me falta que cuando exista una diferencia de 2 leds encendidos, o sea, que en el canal 1 por ejemplo esten 3 leds encendidos y en el canal 2 esten 5, pues me encienda otro led a modo de aviso, tiene que hacerlo en todos los niveles, ejemplo 8 lends encidos en el canal 1 y 6 en el 2. Supongo que hay que comparar los valores de entrada y cuando la diferencia entre ellos sea superior a 2 pues que se encienda el problema es que no se como hacer esto.
Gracias de antemano
PHP:
#include <main2.h>
int16 v1,v2, t1, t2;
void main()
{
setup_adc_ports(AN0_AN1_AN3);
setup_adc(ADC_CLOCK_INTERNAL);
setup_spi(SPI_SS_DISABLED);
setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_ccp1(CCP_OFF);
while(1){
set_adc_channel(0);
delay_us(10);
t1=read_adc();
v1=t1/127;
set_adc_channel(1);
delay_us(10);
t2=read_adc();
v2=t2/127;
switch(v1){
case 0: output_b(0b00000000);
break;
case 1: output_b(0b00000001);
break;
case 2: output_b(0b00000011);
break;
case 3: output_b(0b00000111);
break;
case 4: output_b(0b00001111);
break;
case 5: output_b(0b00011111);
break;
case 6: output_b(0b00111111);
break;
case 7: output_b(0b01111111);
break;
case 8: output_b(0b11111111);
break;
}
switch(v2){
case 0: output_c(0b00000000);
break;
case 1: output_c(0b00000001);
break;
case 2: output_c(0b00000011);
break;
case 3: output_c(0b00000111);
break;
case 4: output_c(0b00001111);
break;
case 5: output_c(0b00011111);
break;
case 6: output_c(0b00111111);
break;
case 7: output_c(0b01111111);
break;
case 8: output_c(0b11111111);
break;
}
}
}
Los valores de entrada los divido entre 127 para que den 8 leds justos
Gracias.
Última edición: