Hola que tal! soy nuevo en esto del ccs y he tenido algunas dudas de como hacer lo siguiente, espero que me puedan ayudar.
Tengo que realizar un encendido de leds de manera gradual hasta que se cumpla una condicion. La condicion es que cuando el voltaje leido (ADC) sea mayor que 3v la secuencia se detenga y deje encendido el led justo donde se ha cumplido, las salidas son 5 (c0,c1,c2,c3,c4), espero me haya explicado.
#include<16f876A.h>
#device adc=10
#use standard_io(C)
#use standard_io(B)
#fuses XT,NOWDT
#use delay(clock=4000000)
int16 lectura;
float voltaje,v;
Void main()
{
while(true){
setup_adc_ports(AN0);
setup_adc(ADC_CLOCK_INTERNAL);
set_adc_channel(0);
delay_us(20);
lectura=read_adc(); //lectura del canal 0
voltaje=5*lectura/1024.0; //conversion a tensión
delay_ms(100);
v=voltaje;
if(v<3){
output_high(pin_c0);
}
delay_ms(1000);
v=voltaje;
if(v<3){
output_low(pin_c0);
output_high(pin_c1);
}
delay_ms(1000);
if(v<3){
output_low(pin_c1);
output_high(pin_c2);
}
delay_ms(1000);
if(v<3){
output_low(pin_c2);
output_high(pin_c3);
}
delay_ms(1000);
if(v<3){
output_low(pin_c3);
output_high(pin_c4);
}
delay_ms(1000);
}
}
he hecho esto pero solo se repite y se apaga todo cuado no se cumple
, no se si este correcta la manera en que llamo el voltaje en el programa. La manera en que vario el voltaje es con un pot teniendo de 0 a 5 v.