PIC24H Entrada POT para controlar el retardo de parpadeo del LED no lineal

-1

Hola, estoy usando el microprocesador PIC24H y escribí un programa simple que toma la entrada de un POT usando una entrada analógica que luego se establece en un valor de módulo de retardo. Parece que establece el retraso, pero la progresión de izquierda a derecha es aparentemente aleatoria e inconsistente. ¡La ayuda sería increíble! ¡Gracias!

int main (void){
    AD1CON1bits.ADON=0;
    AD1CON1=0x00E0;
    AD1CON1bits.AD12B=1;
    AD1CON3=0x8000;
    AD1CON2=0x8000;
    AD1CHS0=0x0000;
    AD1CON1bits.ADON=1;

    int wtdState;
    int delay;
    int temp;

// Set Analog Input Pin
    _CN2PUE=0;
    _TRISA0=1;
    _PCFG0=0;

//Set Digital Output Pins
    _ODCB15=0;
    _TRISB15=0;
    _LATB15=0;

    _ODCB14=0;
    _TRISB14=0;
    _LATB14=1;

    while(1){

    wtdState = _SWDTEN;
    _SWDTEN=1;
    AD1CON1bits.SAMP=1;
    Nop();
    while(!AD1CON1bits.DONE){}

    _SWDTEN = wtdState;

    temp = ADC1BUF0;
    delay = temp%225+25;

    __delay_ms(delay);
    _LATB15=1;
    __delay_ms(delay);
    _LATB15=0;
    }
}
    
pregunta Matt

1 respuesta

1

Usted dice en el cuerpo de la pregunta que las lecturas del bote son "aleatorias e inconsistentes" . Por otro lado en el título usted comenta que el comportamiento no es lineal. Esto parece un mensaje mixto ... pero, por favor, tenga en cuenta:

No todos los potenciómetros son lineales. Los que se usan para los controles de audio a menudo se configuran con un valor de resistencia que varía según la escala de registro de acuerdo con la posición del mando. Esto puede ser lo que estás viendo.

    
respondido por el Michael Karas

Lea otras preguntas en las etiquetas