Habilitar el puerto RA0 como entrada y recuperar el valor LDR del led

3

Estoy usando el picdem 18F4550 con microchip v8.63 con el compilador C18.

Permitiré que PortA establezca como entrada, conectaré un LDR en el puerto RA0. Que es el siguiente (creo):

TRISAbits.TRISA0 = 1; //<= set RA0 as input.

Ahora quiero el valor del LDR (voltaje / valor si un led está encendido), puedo decir:

int colorLed = PortAbits.RA0;

Y ahora, en la variable de tipo int, está el valor / voltaje de mi Led.

Corrígeme si me equivoco.

    
pregunta yannick

2 respuestas

7

Primero, verifiquemos que hayas conectado tu LDR correctamente, debería ser algo como esto ...

ParaleerelvalordePINRA0/AN0,deberealizarunainicializaciónparaasegurarsedequeelpuertoestéconfiguradocorrectamente.La hoja de datos explica cómo funciona todo esto, pero estos valores deberían funcionar:

TRISAbits.TRISA0 = 1;           // Set RA0/AN0 to input
ADCON0           = 0b00000000;  // Set channel select to AN0
ADCON1           = 0b00001110;  // Configure RA0/AN0 as analogue
ADCON2           = 0b10101010;  // Right justified result
                                // TAD 12 and FOSC 32 - may need to adjust this
                                // depending on your clock frequency (see datasheet)
ADCON0.ADON      = 1;           // Enable ADC

Ahora que el puerto debe estar configurado, ahora puede leer el valor LDR:

ADCON0bits.GO    = 1;           // Set the GO bit of the ADCON0 register to start
                                // the conversion.

while (ADCON0bits.GO);          // Wait until the conversion is complete.

Ahora puede leer el resultado del LDR como un valor de 10 bits en ADRESH:ADRESL . Si solo necesita una resolución de 8 bits, configure ADCON2.ADFM = 0 para la justificación a la izquierda del resultado, entonces solo necesita leer ADRESH para obtener su resultado.

    
respondido por el BG100
5

Para leer una tensión analógica, debe utilizar el ADC (Convertidor analógico a digital) del PIC.

Aquí hay un tutorial: enlace

    
respondido por el Toby Jaffey

Lea otras preguntas en las etiquetas